Adding multiple rows of a cell array

12 visualizaciones (últimos 30 días)
Chris Dan
Chris Dan el 12 de Jul. de 2020
Comentada: Star Strider el 12 de Jul. de 2020
Hello, I have a 5x1 cell array, in which each cell is a 6x64 double.
For each cell, I want to add the rows in this style,
1st, 3rd and 5th rows addded together to make one row
2nd 4th and 6th row added together to make one row.
Can it be done without loop?
I am attaching the file . I don't have any code written yet, because I dont know how to do it..
Does anybody know?

Respuesta aceptada

Star Strider
Star Strider el 12 de Jul. de 2020
Try this:
D = load('NumericalFourierForce.mat');
Numerical_FourierForce = D.Numerical_FourierForce;
Out = cellfun(@(x){sum(x(1:2:end,:)); sum(x(2:2:end,:))}, Numerical_FourierForce, 'Uni',0);
Out{1}{1,:} % Check Output
Out{1}(2,:) % Check Output
Out{5}{1,:} % Check Output
Out{5}(2,:) % Check Output
Notice that there are no explicit loops. (There are obviously loops within cellfun.)
  2 comentarios
Chris Dan
Chris Dan el 12 de Jul. de 2020
Thanks :)
Star Strider
Star Strider el 12 de Jul. de 2020
As always, my pleasure!

Iniciar sesión para comentar.

Más respuestas (1)

madhan ravi
madhan ravi el 12 de Jul. de 2020
Editada: madhan ravi el 12 de Jul. de 2020
Edit: cellfun() is a loop in disguise by the way.
for k = 1:numel(cell_array)
cell_array{k}(end+1,:) = sum(cell_array{k}(1:2:5,:));
cell_array{k}(end+1,:) = sum(cell_array{k}(2:2:6,:));
end

Categorías

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

Community Treasure Hunt

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

Start Hunting!

Translated by