# multiply two series of vector in loops

2 Ansichten (letzte 30 Tage)
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
Sylvain
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

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-1 ältere Kommentare anzeigen-1 ältere Kommentare ausblenden
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.

### 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