Sum of a portion of 3D matrix elements

1 view (last 30 days)
Hello,
I would like to find a sum of 3D matrix elements located in a one tetrahedron. For a matrix A with indices (i, j, k) I need to find a sum of elements with indices (i, j > i, k > j), i.e.
total = 0;
for i = 1:N
for j = i:N
for k = j:N
total = total + A(i,j,k);
Is there a way to do it in a vector/matrix manner without loops?
"Tril/triu" function doesn't work with 3D matricies.
Thanks in advance!

Accepted Answer

Matt J
Matt J on 8 Apr 2021
Edited: Matt J on 8 Apr 2021
[I,J,K]=ndgrid(1:N);
total = sum(A(I<=J & J<=K))
  2 Comments
Matt J
Matt J on 8 Apr 2021
You can conserve some memory by using ndgridVecs instead ( Download )
[I,J,K]=ndgridVecs(1:N);
total = sum(A(I<=J & J<=K))

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!