Matlab 矩阵与向量相乘

Matlab 矩阵与向量相乘,matlab,matrix,dimension,Matlab,Matrix,Dimension,我试图在Matlab中乘以2个矩阵,但它们的维数不同。事实上,我的乘法不是标准的矩阵乘法。 我有一个31乘1的矩阵(或向量),和一个31乘512乘512的矩阵。 我想取向量的第一个元素,将第一个512×512切片与之相乘,依此类推,得到一个新的31×512×512数组。 但我不想使用for循环来解决性能问题。这是一个简单的用例: 或者你可能需要将向量v排列,使它的单子维度与你想要扩展的方向正交(在你的例子中,它实际上是沿着维度1和维度2),也就是说,将v转换成一个31乘1乘1的向量(虽然我不确定

我试图在Matlab中乘以2个矩阵,但它们的维数不同。事实上,我的乘法不是标准的矩阵乘法。 我有一个31乘1的矩阵(或向量),和一个31乘512乘512的矩阵。 我想取向量的第一个元素,将第一个512×512切片与之相乘,依此类推,得到一个新的31×512×512数组。
但我不想使用for循环来解决性能问题。

这是一个简单的用例:

或者你可能需要将向量v排列,使它的单子维度与你想要扩展的方向正交(在你的例子中,它实际上是沿着维度1和维度2),也就是说,将
v
转换成一个31乘1乘1的向量(虽然我不确定这是否必要,但如果出现错误,请尝试一下)与您的情况一样,您将沿着第三维展开:

bsxfun(@times, permute(v,[1,3,2]), M)
请注意,另一种常见的方法是使用
repmat
*
bsxfun
更有效

bsxfun(@times, permute(v,[1,3,2]), M)