multiply two series of vector in loops

1 Ansicht (letzte 30 Tage)
Sylvain Bart
Sylvain Bart am 12 Sep. 2019
Kommentiert: Sylvain Bart am 12 Sep. 2019
Hello, I have 1485 versions of a vector (41) so a matrix of 1485x41 and I have two matrix like this, so MA=1485x41 and MB=1485x41
I would like to multiply all the vectors (41) possibility to get a final Matrix of 2205225x41. I tried with loops but failed.
Here is my code:
% MA=1485x41 and MB=1485x41
vectorA=cell(size(MA,1),1); %index vector in a cell array
vectorB=cell(size(MB,1),1); %index vector in a cell array
solution=nan(length(MA(:,1)).*length(MB(:,1)), length(t)); %t=41 here is the final matrix that I would need
for i =1 : size(chemACIm,1)
for j=1:size(chemBCIm,1)
vectorA{i}=MA(i,:);
vectorB{j}=MB(j,:);
output(i, j, :)=MA(i,:).*MB(j,:); %
end
end
Thank you in advance for your answer,
Sylvain

Akzeptierte Antwort

Guillaume
Guillaume am 12 Sep. 2019
Assuming R2016b or later:
result = MA .* permute(MB, [3, 2, 1]);
will give you a 3D matrix, where result(i, :, j) is MA(i, :) .* MB(j, :)
I would suggest you keep the result like that, but if you really want a 2D matrix, then:
result = reshape(permute(MA .* permute(MB, [3, 2, 1]), [1, 3, 2]), [], size(MA, 2))
  1 Kommentar
Sylvain Bart
Sylvain Bart am 12 Sep. 2019
Many thanks for your answer, it save my time and my code is shorter that way

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by