How to multiply Multidimensional Arrays with a column vector

8 Ansichten (letzte 30 Tage)
Tristan
Tristan am 28 Okt. 2013
Kommentiert: Shambhavi Singh am 14 Feb. 2019
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

Antworten (3)

sixwwwwww
sixwwwwww am 28 Okt. 2013
Bearbeitet: sixwwwwww am 28 Okt. 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 Kommentare
sixwwwwww
sixwwwwww am 28 Okt. 2013
You can do it like this:
C = cat(3, [], [], B);
Shambhavi Singh
Shambhavi Singh am 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

Melden Sie sich an, um zu kommentieren.


James Tursa
James Tursa am 28 Okt. 2013

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

Kategorien

Mehr zu Matrices and Arrays 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