Sum of a portion of 3D matrix elements

5 visualizaciones (últimos 30 días)
Dmitrii Lukashevich
Dmitrii Lukashevich el 8 de Abr. de 2021
Comentada: Dmitrii Lukashevich el 8 de Abr. de 2021
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!

Respuesta aceptada

Matt J
Matt J el 8 de Abr. de 2021
Editada: Matt J el 8 de Abr. de 2021
[I,J,K]=ndgrid(1:N);
total = sum(A(I<=J & J<=K))
  2 comentarios
Matt J
Matt J el 8 de Abr. de 2021
You can conserve some memory by using ndgridVecs instead ( Download )
[I,J,K]=ndgridVecs(1:N);
total = sum(A(I<=J & J<=K))
Dmitrii Lukashevich
Dmitrii Lukashevich el 8 de Abr. de 2021
Thank you a lot

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by