Multiply one dimension of a 3D Matrix by a vector
19 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
James Tursa
2020-12-18
编辑:James Tursa
2020-12-18
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,[]));
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!