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

1 visualizzazione (ultimi 30 giorni)
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?

Risposte (2)

Matt J
Matt J il 3 Ott 2014
Modificato: Matt J il 3 Ott 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 il 3 Ott 2014
The blkdiag function is your friend here. It was intended for just this purpose.

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by