Help to create a loop
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Luciano Campos
il 14 Mar 2016
Commentato: Luciano Campos
il 14 Mar 2016
Hi everybody, Can anybody help me to write a loop that achieves the same result as this code?:
%
G(:,:,1)=kron(J*A'^0,Phi(:,:,1));
G(:,:,2)=kron(J*A'^1,Phi(:,:,1))+kron(J*A'^0,Phi(:,:,2));
G(:,:,3)=kron(J*A'^2,Phi(:,:,1))+kron(J*A'^1,Phi(:,:,2))+kron(J*A'^0,Phi(:,:,3));
G(:,:,4)=kron(J*A'^3,Phi(:,:,1))+kron(J*A'^2,Phi(:,:,2))+kron(J*A'^1,Phi(:,:,3))+kron(J*A'^0,Phi(:,:,4));
%
and so on, until G(:,:,9). Where
%
J=[eye(3) zeros(3)]
%
A =
-0.32 0.15 0.96 -0.16 0.15 0.93
0.04 -0.15 0.29 0.05 0.02 -0.01
-0.00 0.22 -0.26 0.03 0.35 -0.02
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
and Phi is in attached.
Thanks for your help
best,
0 Commenti
Risposta accettata
Matthew Eicholtz
il 14 Mar 2016
Here is one potential approach:
G = zeros(9,18,9); %seems to me to be the size you need to preallocate
for ii=1:9
for jj=ii-1:-1:0
G(:,:,ii) = G(:,:,ii) + kron(J*A'^jj, Phi(:,:,ii-jj));
end
end
Più risposte (1)
Guillaume
il 14 Mar 2016
I don't see where the difficulty is:
for page = 1:9
gsum = [];
for iter = 1:page
gsum = gsum + kron(J*A'^(page-iter), Phi(:,:,iter));
end
G(:, :, page) = gsum;
end
There may be a way to vectorise the inner loop but I've not tried to understand what the code is doing.
Vedere anche
Categorie
Scopri di più su Startup and Shutdown in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!