How do I create a circulant matrix of shift 3 towards the left ?
Show older comments
Hi,
Does anyone know how do I create a circulant matrix like the one I attached. The first 2 row is for the x-axis, center 2 row is for the y-axis and the last 2 row is for the z-axis. The shift from each row is 3. The x-axis started from 1st column. The y-axis started from 2nd column and the z-axis started from 3rd column.
1 Comment
Jos (10584)
on 16 Dec 2013
Given your description, I fail to see how the 3rd row is looking in A. Or has A only six rows? And should it be flexible somehow?
Accepted Answer
More Answers (2)
A=func2mat(@(x)circshift(x,3),zeros(93,1));
Jos (10584)
on 16 Dec 2013
It does look like a row-permuted circulant
N = 31 ;
dn = 3 ;
A = eye(dn*N) ; % circulant
ix = ones(N,d) ; % make a permution index
ix(1,:) = 1+dn*(0:N-1) ;
ix = cumsum(ix,1) ;
ix = ix.' ;
A = A(ix,:) % row-permutation
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!