Azzera filtri
Azzera filtri

Is there a concise way of summing over multiple dimensions of an array?

17 visualizzazioni (ultimi 30 giorni)
Hello all,
Is there a concise way of summing over multiple dimensions, i.e. using just one sum function? I know if I have a defined array A, then I can do:
sum(A(:));
But what if I want to sum over a range of that array or some kind of calculated array? I would either have to use sum of sum of sum and so on to get the total sum or assign a variable to that temporary array? Thank you!

Risposta accettata

Walter Roberson
Walter Roberson il 4 Dic 2017
Example:
V = @(M) M(:);
sum( V( SomeArray(1:18, 5:43, :, 2:9) ) )

Più risposte (2)

Pooja Lalan
Pooja Lalan il 7 Nov 2018
Modificato: Pooja Lalan il 7 Nov 2018
Starting in R2018b, you can use this syntax
sum( SomeArray(1:18, 5:43, :, 2:9), 'all' )
sum( SomeArray(1:18, 5:43, :, 2:9), [1 2 3 4] )

Guillaume
Guillaume il 4 Dic 2017
Not sure it is concise, it avoids the multiple sum:
sum(reshape(A(yourange), 1, []))
  1 Commento
Renat
Renat il 4 Dic 2017
I thought about that, but I erroneously thought I would need to use numel in there to specify the new shape. One more new thing I learned today about Matlab.

Accedi per commentare.

Categorie

Scopri di più su Multidimensional Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by