How to multiply Multidimensional Arrays with a column vector

10 visualizzazioni (ultimi 30 giorni)
I want to multiply A with B so that C(:,:,1) is equal to A(:,:,1)*B(1) and C(:,:,2) is equal to A(:,:,2)*B(2)
>> A = cat(3, [2 8; 0 5], [1 3; 7 9])
A(:,:,1) =
2 8
0 5
A(:,:,2) =
1 3
7 9
>> B=[1 2]'
B =
1
2
I'm looking to get this:
>> C=???
C(:,:,1) =
2 8
0 5
C(:,:,2) =
2 6
14 18

Risposte (3)

sixwwwwww
sixwwwwww il 28 Ott 2013
Modificato: sixwwwwww il 28 Ott 2013
Dear Tristan, here is the code which performs the task:
A = cat(3, [2 8; 0 5], [1 3; 7 9]);
B=[1 2]';
for i = 1:length(B)
C(:, :, i) = B(i) * A(:, :, i);
end
disp(C)
I hope it helps. Good luck!
  5 Commenti
Shambhavi Singh
Shambhavi Singh il 14 Feb 2019
This should work too
C=A.*permute(B,[3 2 1]),3);
Permute switches the rows in B (So the elements of a column vector) with the third dimension

Accedi per commentare.


James Tursa
James Tursa il 28 Ott 2013

Pavel Chmelar
Pavel Chmelar il 12 Gen 2016
Clear Matlab solution according sixwwwwww and Tristan:
B=zeros(1,1,2);
B(:)=[1,2];
C=bsxfun(@times,A,B);

Community Treasure Hunt

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

Start Hunting!

Translated by