matrix step shift in each row

12 views (last 30 days)
mohammed hussein
mohammed hussein on 23 Feb 2021
Commented: mohammed hussein on 23 Feb 2021
HI
i have equestion about matrix shift numbers . for example i have this matrix
A =[ 1 2 3 4 5 ]
i want it to be
A =
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1
thank you very much for helping
  2 Comments
Rik
Rik on 23 Feb 2021
Do the numbers in A mean anything (e.g. the number of positions the corresponding row should be shifted), or are you simply asking about a row-wise circshift?
mohammed hussein
mohammed hussein on 23 Feb 2021
yes , i have circle geometry , i want to shift the number in circle like the simple example that i asking about

Sign in to comment.

Accepted Answer

Rik
Rik on 23 Feb 2021
This method works without a loop.
A =[ 1 2 3 4 5 ];
[X,Y]=ndgrid(1:numel(A));
X=X(end:-1:1,:);
ind=mod(X+Y,numel(A));
ind(ind==0)=numel(A);
A(ind)
ans = 5×5
1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1
  1 Comment
mohammed hussein
mohammed hussein on 23 Feb 2021
thank you very much . this exactly what i want

Sign in to comment.

More Answers (1)

Stephen23
Stephen23 on 23 Feb 2021
A = [1,2,3,4,5];
B = toeplitz(A([1,end:-1:2]),A)
B = 5×5
1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!