Fill a matrix with matrix powers
Ältere Kommentare anzeigen
Hi to everyone,
I was wondering if anyone knows the fastest way to achieve the following:
Given A [n x n], fill a matrix B such as:
B= [A 0n ... 0n;
0n A^2 ... 0n;
.... ;
0n 0n ... A^n]
where 0n=zeros(n).
Thanks in advance
Akzeptierte Antwort
Weitere Antworten (1)
A = magic(3);
AM = {A^0, A^1, A^2};
celldisp(AM)
B = blkdiag(AM{:})
You could create AM automatically rather than hard-coding it if you wanted a larger B.
AM2 = arrayfun(@(x) A^x, 0:2, 'UniformOutput', false);
check = isequal(AM, AM2)
C = blkdiag(AM2{:});
isequal(B, C)
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!