summation inside a "for loop"
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi I have a 100x100 matrix, A. I am doing the following:
q=0:0.1:50;sym k;
for j=1:length(q)
B1(j)=sum(exp(q(j)*A(k,1)), k=1..100);
end
for j=1:length(q)
B2(j)=sum(exp(q(j)*A(k,2)), k=1..100);
end
..................................
..................................
for j=1:length(q)
B100(j)=sum(exp(q(j)*A(k,100)), k=1..100);
end
The problem is perhaps with the command but I tried with both sum/symsum and some other variations. But always matlab gives one or the other error.
It would be very helpful if someone could suggest some "correct" command. Thanks a ton.
1 commentaire
Walter Roberson
le 29 Mai 2012
http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F
Réponse acceptée
Geoff
le 29 Mai 2012
I would expect this to work:
B = zeros(length(q), size(A,2));
for j = 1:length(q)
B(j,:) = sum( exp(q(j)*A) );
end
3 commentaires
Geoff
le 29 Mai 2012
Cool. Hope it's clear what's happening... sum will work along a single dimension. By default this is 1. That means it will sum columns. If it's 2, it'll sum rows, and so on.. Whatever you call strips in higher dimensions =) So we can compute the sum for every column at once (giving a 1x100 vector) and then shove that into the matching columns of B for a single row indexed by j. It would probably be more efficient if you flipped the dimensions of B and wrote a whole column at a time, but I kept it consistent with your matrix A for clarity.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrix Indexing 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!