Borrar filtros
Borrar filtros

Shift elements of matrix N times (MATLAB)

2 visualizaciones (últimos 30 días)
high speed
high speed el 9 de Mzo. de 2022
Comentada: David Hill el 9 de Mzo. de 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) !

Respuesta aceptada

David Hill
David Hill el 9 de Mzo. de 2022
a=circshift(eye(m-1),m-2,2);
  2 comentarios
high speed
high speed el 9 de Mzo. de 2022
@David Hill In this case I don't get the result that I want.
I got just:
a=[0 0 1
1 0 0
0 1 0]
David Hill
David Hill el 9 de Mzo. de 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

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Multidimensional Arrays en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by