# Sum subarrays of a Matrix.

9 views (last 30 days)
Santos García Rosado on 25 Feb 2021
Edited: Matt J on 26 Feb 2021
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 on 25 Feb 2021
Edited: Fangjun Jiang on 25 Feb 2021
One-liner
transpose(reshape(sum(reshape(A',3,[])),3,[]))
Or
transpose(cell2mat(cellfun(@sum,mat2cell(A',[3,3,3],3),'unif',0)))
##### 2 CommentsShow 1 older commentHide 1 older comment
Santos García Rosado on 26 Feb 2021
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!

Matt J on 25 Feb 2021
Edited: Matt J on 26 Feb 2021
Santos García Rosado on 26 Feb 2021
Nice function! I'm saving it for the future! Thanks Matt!

### Categories

Find more on Matrix Indexing in Help Center and File Exchange

R2020b

### Community Treasure Hunt

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

Start Hunting!