Calculating a matrix from other matrices
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
How can I write the following matrix?
M = [C*B;
C*A*B + C*B;
C*A^2*B + C*A*B + C*B;
.
.
.
C*A^(N-1)*B + C*A^(N-2)*B + ... + C*B];
A, B, and C are 2D arrays with size(A)=(n,n), size(B)=(n,p), and size(C)=(q,n). N is a positive integer.
1 comentario
Walter Roberson
el 15 de Feb. de 2021
I posted code for the 2D version of this a couple of years ago, where the values were being copied down the diagonals.
Unfortunately it has been far too long for me to recall the key words that would needed to find it within my other posts :(
Respuestas (1)
Matt J
el 15 de Feb. de 2021
Q=eye(n);
Mcell=cell(n,1);
for i=1:N
Mcell{i}=C*Q*B;
Q=A*Q+Q;
end
M=cell2mat(Mcell);
2 comentarios
Matt J
el 15 de Feb. de 2021
Editada: Matt J
el 15 de Feb. de 2021
Sorry, it should be
N = 4;
A = rand(4);
B = rand(4,1);
C = rand(1,4);
[n,p] = size(B);
R = [C*B;
C*A*B + C*B;
C*A^2*B + C*A*B + C*B;
C*A^3*B + C*A^2*B + C*A*B + C*B];
[Q,Q0]=deal(eye(n));
Mcell=cell(n,1);
for i=1:N
Mcell{i}=C*Q*B;
Q=A*Q+Q0;
end
M=cell2mat(Mcell);
difference=norm(R-M)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!