How the implement a 3-fold sum?

1 visualizzazione (ultimi 30 giorni)
Stephan
Stephan il 21 Gen 2017
Risposto: Stephan il 23 Gen 2017
Hello,
there are answers for implementing a double sum. But what about a 3-fold sum of the type \sum (x_i*y_j*z_k)*M_{i,j,k} for some given vectors x,y,z and Tensor M.
A naiv implementation would be
SUM=0;
for i=1:length(x)
for j=1:length(y)
for k=1:length(z)
SUM = SUM + x(i)*y(j)*z(k)*M(i,j,k);
end
end
end
How to implement this more efficiently in a more compact form?
Thanks for any help!

Risposta accettata

David Goodmanson
David Goodmanson il 22 Gen 2017
Hello Stephen, Here is one way, although you do make three arrays of the same size as M:
[xx yy zz] = ndgrid(x,y,z);
S = xx.*yy.*zz.*m;
SUM = sum(S(:))

Più risposte (1)

Stephan
Stephan il 23 Gen 2017
Thanks!

Categorie

Scopri di più su Read, Write, and Modify Image in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by