How can I make a matrix with diagonals composed of matrices?

1 visualización (últimos 30 días)
Sebastian
Sebastian el 3 de Oct. de 2014
Editada: Matt J el 3 de Oct. de 2014
See attached image. A is a 2x2 and B is a 2x1 (although it would be nice to generalize).
Any suggestions on how to easily create this matrix? I know I could use a for loop, but is there some easier way using matlab functions?

Respuestas (2)

Matt J
Matt J el 3 de Oct. de 2014
Editada: Matt J el 3 de Oct. de 2014
I don't think you can or should avoid a for-loop, but there are ways to use looping more economically,
C=cell(1,N+1);
C{1}=zeros(size(B));
C{2}=B;
for i=3:N+1
C{i}=A*C{i-1};
end
idx=toeplitz(1:N+1,ones(1,N+1));
result=cell2mat( C(idx) )

Star Strider
Star Strider el 3 de Oct. de 2014
The blkdiag function is your friend here. It was intended for just this purpose.

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by