How the implement a 3-fold sum?

3 views (last 30 days)
Stephan on 21 Jan 2017
Answered: Stephan on 23 Jan 2017
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
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);
How to implement this more efficiently in a more compact form?
Thanks for any help!

Accepted Answer

David Goodmanson
David Goodmanson on 22 Jan 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(:))

More Answers (1)

Community Treasure Hunt

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

Start Hunting!