Sum subarrays of a Matrix.

7 次查看(过去 30 天)
Hi Mathworks community! Could someone give me a hand?
I'm having trouble trying to sum parts of the arrays of a matrix. Let's say I have the following matrix A of r rows and c columns (rxc).
A = [1,2,3,4,5,6,7,8,9; 10,11,12,13,14,15,16,17,18; 19,20,21,22,23,24,25,26,27]
And what I would like to to is to divide each array in n subarrays (n=3) and sum each of those subarrays. In this case, it would be the sum of every three positions. Getting an output suchs as:
out = [5,15,24; 33,42,51; 60,69,78]
Thank's for the help!
Santos

采纳的回答

Fangjun Jiang
Fangjun Jiang 2021-2-25
编辑:Fangjun Jiang 2021-2-25
One-liner
transpose(reshape(sum(reshape(A',3,[])),3,[]))
Or
transpose(cell2mat(cellfun(@sum,mat2cell(A',[3,3,3],3),'unif',0)))
  2 个评论
Fangjun Jiang
Fangjun Jiang 2021-2-25
Can this task be done using accumarray()?? accumarray always makes my head spin!
Santos García Rosado
I'm using this code for Simulink and the first answer your proposea works perfectly fine. However, Simulink seems not to like the function cell2mat you wrote on the second line but it does work okay with Matlab. Thank's for the help Fangjun!

请先登录,再进行评论。

更多回答(1 个)

Matt J
Matt J 2021-2-25
编辑:Matt J 2021-2-26

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

产品


版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by