Help to create a loop
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Luciano Campos
am 14 Mär. 2016
Kommentiert: Luciano Campos
am 14 Mär. 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 Kommentare
Akzeptierte Antwort
Matthew Eicholtz
am 14 Mär. 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
Weitere Antworten (1)
Guillaume
am 14 Mär. 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.
Siehe auch
Kategorien
Mehr zu Startup and Shutdown finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!