# Adding multiple rows of a cell array

9 views (last 30 days)
Chris Dan on 12 Jul 2020
Commented: Star Strider on 12 Jul 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?

Star Strider on 12 Jul 2020
Try this:
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.)
Chris Dan on 12 Jul 2020
Thanks :)
Star Strider on 12 Jul 2020
As always, my pleasure!

madhan ravi on 12 Jul 2020
Edited: madhan ravi on 12 Jul 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
Chris Dan on 12 Jul 2020
Thanks :)