MATLAB Answers

multiply two series of vector in loops

11 views (last 30 days)
Sylvain Bart
Sylvain Bart on 12 Sep 2019
Commented: Sylvain Bart on 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

  0 Comments

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 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 Comment

Sylvain Bart
Sylvain Bart on 12 Sep 2019
Many thanks for your answer, it save my time and my code is shorter that way

Sign in to comment.

More Answers (0)

Sign in to answer this question.