Help to create a loop
1 view (last 30 days)
Show older comments
Luciano Campos
on 14 Mar 2016
Commented: Luciano Campos
on 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 Comments
Accepted Answer
Matthew Eicholtz
on 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
More Answers (1)
Guillaume
on 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.
See Also
Categories
Find more on Startup and Shutdown in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!