Fill a matrix with matrix powers
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Luigi Emanuel di Grazia
el 22 de Jul. de 2021
Respondida: Steven Lord
el 22 de Jul. de 2021
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 comentarios
Respuesta aceptada
Rik
el 22 de Jul. de 2021
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 comentarios
Más respuestas (1)
Steven Lord
el 22 de Jul. de 2021
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 comentarios
Ver también
Categorías
Más información sobre Data Type Conversion 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!