Fill a matrix with matrix powers
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
採用された回答
Rik
2021 年 7 月 22 日
n=3;
A=rand(n,n);
Zero=zeros(size(A));
C=repmat({Zero},n,n);
C(logical(eye(n)))=arrayfun(@(n)A^n,1:n,'uni',false);
C=cell2mat(C)
0 件のコメント
その他の回答 (1 件)
Steven Lord
2021 年 7 月 22 日
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)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Data Type Conversion についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!