Multiplications inside a cell array
Mostrar comentarios más antiguos

Hi everyone,
The above 4x12 is a cell array. Each cell contains numbers. What I want to do next is matrix multiplication between all elements of row 2 with row 4. So, (1,2)*(4,2). This will give a 33by33 matrix. Next, I want to store it in a new variable. But since this is a cell structure I am not able to do it and need help.
How can I concatenate it? Or should i convert the cell array to something else to make my life easier?
Thank you for your help.
Respuesta aceptada
Más respuestas (1)
result = cellfun(@times, yourcellarray(1, :), yourcellarray(4, :), 'UniformOutput', true)
will create a 1x12 cell array of 33x33 matrices. The same implemented as a loop:
result = cell(1, size(yourcellarray, 2));
for idx = 1:size(yourcellarray, 2)
result{idx} = yourcellarray{1, idx} .* yourcellarray{4, idx};
end
If you want a 33x33x12 matrix after that:
m = cat(3, result{:})
edit: got the wrong rows
edit again: and messed up the 'UniformOutput'
4 comentarios
Ishita Trivedi
el 23 de En. de 2019
Guillaume
el 23 de En. de 2019
The cellfun will do exactly the same thing as the loop I've also given in my answer.
All cellfun does is iterate simultaneously over the elements of all the inputs (in this case, yourcellarray(1, :) and yourcellarray(4, :), pass these elements to the given the function (in the case, the times function which is indeed .*) and concatenate the outputs into a matrix or cell array (if 'UniformOutput' is true as it should have been in my answer, don't know what I wrote false).
If you're not comfortable with cellfun use the loop version which will give you the same result (I'm not sure why you accepted the other answer which didn't give you a proper solution).
Ishita Trivedi
el 23 de En. de 2019
Guillaume
el 23 de En. de 2019
No problem. Is cellfun clearer now?
Categorías
Más información sobre Cell Arrays en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!