Sum subarrays of a Matrix.

15 visualizaciones (últimos 30 días)
Santos García Rosado
Santos García Rosado el 25 de Feb. de 2021
Editada: Matt J el 26 de Feb. de 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

Respuesta aceptada

Fangjun Jiang
Fangjun Jiang el 25 de Feb. de 2021
Editada: Fangjun Jiang el 25 de Feb. de 2021
One-liner
transpose(reshape(sum(reshape(A',3,[])),3,[]))
Or
transpose(cell2mat(cellfun(@sum,mat2cell(A',[3,3,3],3),'unif',0)))
  2 comentarios
Fangjun Jiang
Fangjun Jiang el 25 de Feb. de 2021
Can this task be done using accumarray()?? accumarray always makes my head spin!
Santos García Rosado
Santos García Rosado el 26 de Feb. de 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!

Iniciar sesión para comentar.

Más respuestas (1)

Matt J
Matt J el 25 de Feb. de 2021
Editada: Matt J el 26 de Feb. de 2021
  1 comentario
Santos García Rosado
Santos García Rosado el 26 de Feb. de 2021
Nice function! I'm saving it for the future! Thanks Matt!

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by