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

24 ビュー (過去 30 日間)
Renat
Renat 2017 年 12 月 4 日
編集済み: Pooja Lalan 2018 年 11 月 7 日
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!
  1 件のコメント
Birdman
Birdman 2017 年 12 月 4 日
Can you give example with numeric arrays?

サインインしてコメントする。

採用された回答

Walter Roberson
Walter Roberson 2017 年 12 月 4 日
Example:
V = @(M) M(:);
sum( V( SomeArray(1:18, 5:43, :, 2:9) ) )
  1 件のコメント
Renat
Renat 2017 年 12 月 4 日
Awesome! Thanks! Apparently, I can even specify sum(M(:)), which will make it even easier!

サインインしてコメントする。

その他の回答 (2 件)

Pooja Lalan
Pooja Lalan 2018 年 11 月 7 日
編集済み: Pooja Lalan 2018 年 11 月 7 日
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 2017 年 12 月 4 日
Not sure it is concise, it avoids the multiple sum:
sum(reshape(A(yourange), 1, []))
  1 件のコメント
Renat
Renat 2017 年 12 月 4 日
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.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMultidimensional Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by