Calculating a matrix from other matrices
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaire
Walter Roberson
le 15 Fév 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 :(
Réponses (1)
Matt J
le 15 Fév 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 commentaires
Matt J
le 15 Fév 2021
Modifié(e) : Matt J
le 15 Fév 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)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!