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

26 Ansichten (letzte 30 Tage)
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!

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 4 Dez. 2017
Example:
V = @(M) M(:);
sum( V( SomeArray(1:18, 5:43, :, 2:9) ) )
  1 Kommentar
Renat
Renat am 4 Dez. 2017
Awesome! Thanks! Apparently, I can even specify sum(M(:)), which will make it even easier!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Pooja Lalan
Pooja Lalan am 7 Nov. 2018
Bearbeitet: Pooja Lalan am 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 am 4 Dez. 2017
Not sure it is concise, it avoids the multiple sum:
sum(reshape(A(yourange), 1, []))
  1 Kommentar
Renat
Renat am 4 Dez. 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by