Adding multiple rows of a cell array

11 vues (au cours des 30 derniers jours)
Chris Dan
Chris Dan le 12 Juil 2020
Commenté : Star Strider le 12 Juil 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?

Réponse acceptée

Star Strider
Star Strider le 12 Juil 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 commentaires
Chris Dan
Chris Dan le 12 Juil 2020
Thanks :)
Star Strider
Star Strider le 12 Juil 2020
As always, my pleasure!

Connectez-vous pour commenter.

Plus de réponses (1)

madhan ravi
madhan ravi le 12 Juil 2020
Modifié(e) : madhan ravi le 12 Juil 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

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by