Multiply one dimension of a 3D Matrix by a vector

31 visualizaciones (últimos 30 días)
James Brown
James Brown el 18 de Dic. de 2020
Comentada: James Brown el 18 de Dic. de 2020
I wish to element multiply the third dimension of Matrix A by vector B by for all xy points. The following operation takes 329 seconds.
Is there an operation that avoids the for loops?
My Code:
Matrix A has dimensions A(2048,200,513)
Vector B has dimension(513)
C = zeros(numx,numy,numz);
for j = 1:numy
for i = 1:numx
Az = squeeze(A(i,j,:));
C(i,j,:) = squeeze(B.*Az);
end
end

Respuesta aceptada

James Tursa
James Tursa el 18 de Dic. de 2020
Editada: James Tursa el 18 de Dic. de 2020
C = A .* reshape(B,1,1,[]);
For earlier versions of MATLAB that do not have implicit expansion it would be this:
C = bsxfun(@times,A,reshape(B,1,1,[]));

Más respuestas (0)

Categorías

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

Productos


Versión

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by