# Shift elements of matrix N times (MATLAB)

1 view (last 30 days)
high speed on 9 Mar 2022
Commented: David Hill on 9 Mar 2022
I have a parameter m and an identity matrix of dimensions m-1*m-1
for example: m=4 so the identity matrix is 3*3
a1=[1 0 0
0 1 0
0 0 1]
I want to shift this matrix m-2 times, to obtain :
a2=[0 1 0
0 0 1
1 0 0]
h3=[0 0 1
1 0 0
0 1 0]
In this case I can use this program:
m=4;
for i=1:m
a1=eye(m-1,m-1);
a2=circshift(h1,[0 1]);
a3=circshift(h2,[0 1]);
end
How can I program that in a general way please (in case if m=100 for example) !

David Hill on 9 Mar 2022
a=circshift(eye(m-1),m-2,2);
##### 2 CommentsShow 1 older commentHide 1 older comment
David Hill on 9 Mar 2022
I did not understand that you wanted to save all of the matrices. Below saves all the matrices into a single 3D matrix for any m.
a=zeros(m-1,m-1,m-2);
a(:,:,1)=eye(m-1);
for k=2:m-2
a(:,:,k)=circshift(a(:,:,k-1),1,2)
end

### Categories

Find more on Mathematics 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!