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!

 採用された回答

David Goodmanson
David Goodmanson 2017 年 1 月 22 日

0 投票

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(:))

その他の回答 (1 件)

Stephan
Stephan 2017 年 1 月 23 日

0 投票

Thanks!

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2017 年 1 月 21 日

回答済み:

2017 年 1 月 23 日

Community Treasure Hunt

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

Start Hunting!

Translated by