how can i sum over to variable in matlab?
Afficher commentaires plus anciens
Hi, i have a function as below in a for loop:
for i=1:20

end;
i'm trying to sum over variables N,N', as simple as it looks, it confused me? can any one help?
thanyou so much in advance
Réponses (2)
Jorge Mario Guerra González
le 19 Jan 2017
Modifié(e) : Jorge Mario Guerra González
le 19 Jan 2017
you mean something like this....
I'm supposing F,K,G are random arrays,
are N and N' independent values??? because the notation N, N' is a little tricky for me.
F=rand(20,20);
G=rand(1,20);
K=rand(1,20);
suma=0;
for i=1:20
for j=1:20
suma=suma+F(i,j)*G(i)*K(j);
end
end
disp(suma);
%where i and j are your N and N'
5 commentaires
Guillaume
le 19 Jan 2017
Never ever call a variable sum, since it prevents you from using the sum function. In particular, in your example, you could get rid of the loop and use that sum function to obtain the same result in just one line:
result = sum(sum(F .* G .* K.')); %R2016b only
%in versions < R2016b
%result = sum(sum(F .* bsxfun(@times, G, K.')));
However, I don't believe that's what the OP is asking.
Joseph
le 19 Jan 2017
Jorge Mario Guerra González
le 19 Jan 2017
@Guillaume sorry, that's true I wrote it as a fast script, I edit it rigth away.
Jorge Mario Guerra González
le 19 Jan 2017
@Joseph you should've specified that N=N'-1 in the question. So, since N=N'-1 the range of N is 0:19?. why does the equation you posted say N=1:20.
Joseph
le 19 Jan 2017
Without any a priori knowledge of F, G, K, this is guaranteed to work:
[NN1, NN2] = ndgrid(0:19, 1:20); %all combinations of N and N'
FN = arrayfun(@F, NN1, NN2);
GN = arrayfun(@G, NN1);
KN = arrayfun(@K, NN2);
result = sum(sum(FN .* GN .* KN)); %or sum(FN(:) .* GN(:) .* KN(:)) which is probably faster but more cryptic.
If the F, G, K functions support implicit expansion or can work directly with vectors and matrices then the arrayfun lines would not even be needed.
Catégories
En savoir plus sur Quantum Mechanics dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!