3D矢量矩阵乘法

sha*_*ant 10 matlab vector matrix

这让我感到困扰:

假设你有一个有三层的矩阵.

是否有一种简单的方法将此矩阵与三个元素的向量相乘,以便第一层(所有元素)与向量的第一个元素相乘,依此类推......

现在我必须使用一个函数来这样做:

function out=fun(matrix,vector)

out=matrix;
for k=1:3
    out(:,:,k)=out(:,:,k)*vector(k);
end
Run Code Online (Sandbox Code Playgroud)

是否有一种有效的方法可以在一行中完成此操作而无需功能?

gno*_*ice 17

一个非常简洁的解决方案是重塑 vector为1乘1乘3矩阵并使用函数BSXFUN执行元素乘法(它将根据需要复制维度以匹配两个输入参数的大小):

newMatrix = bsxfun(@times,matrix,reshape(vector,[1 1 3]));
Run Code Online (Sandbox Code Playgroud)