summation inside a "for loop"
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentar
Walter Roberson
am 29 Mai 2012
http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F
Akzeptierte Antwort
Geoff
am 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 Kommentare
Geoff
am 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.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing 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!