Adding columns to matrix using circshift by auto incrementing
2 views (last 30 days)
Show older comments
I want to develop a square matrix from a column matrix using circshift. Here is an example code:
z=[0;1;2;3];
x=[z,circshift(z,1),circshift(z,2),circshift(z,3)];
Output: >> x
x =
0 3 2 1
1 0 3 2
2 1 0 3
3 2 1 0
I have to do similar for the order of 1200 instead of 4 so I want it to be automatic. Can some one please suggest how can I use loop of vector in this case?
Thanks
0 Comments
Accepted Answer
Mischa Kim
on 4 Feb 2014
Edited: Mischa Kim
on 4 Feb 2014
You coud use a simple loop:
z = [0;1;2;3];
z_mat = zeros(length(z));
z_mat(:,1) = z;
for ii = 2:length(z)
z_mat(:,ii)= circshift(z,ii);
end
Initializing a matrix ( zeros ) is faster than appending vectors to a matrix.
More Answers (2)
Andrei Bobrov
on 4 Feb 2014
z=[0;1;2;3];
x = [z;z];
n = numel(z);
out = x(bsxfun(@minus,(n+1:2*n)',0:n-1));
0 Comments
See Also
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!