Multiply one dimension of a 3D Matrix by a vector
31 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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
0 comentarios
Respuesta aceptada
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)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!