Sum of a portion of 3D matrix elements

2 vues (au cours des 30 derniers jours)
Dmitrii Lukashevich
Dmitrii Lukashevich le 8 Avr 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!

Réponse acceptée

Matt J
Matt J le 8 Avr 2021
Modifié(e) : Matt J le 8 Avr 2021
[I,J,K]=ndgrid(1:N);
total = sum(A(I<=J & J<=K))
  2 commentaires
Matt J
Matt J le 8 Avr 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 le 8 Avr 2021
Thank you a lot

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by