matrix step shift in each row

6 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

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!