How to multiply Multidimensional Arrays with a column vector

11 visualizaciones (últimos 30 días)
Tristan
Tristan el 28 de Oct. de 2013
Comentada: Shambhavi Singh el 14 de Feb. de 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

Respuestas (3)

sixwwwwww
sixwwwwww el 28 de Oct. de 2013
Editada: sixwwwwww el 28 de Oct. de 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 comentarios
sixwwwwww
sixwwwwww el 28 de Oct. de 2013
You can do it like this:
C = cat(3, [], [], B);
Shambhavi Singh
Shambhavi Singh el 14 de Feb. de 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

Iniciar sesión para comentar.


James Tursa
James Tursa el 28 de Oct. de 2013

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

Categorías

Más información sobre Matrices and Arrays en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by