将矩阵与向量相乘

时间:2015-10-06 05:51:24

标签: matlab matrix dimension

我试图在Matlab中乘以2个矩阵,但它们没有相同的维度。实际上,我的乘法并不是标准的矩阵乘法。 我有 31 -by- 1 矩阵(或矢量), 31 -by- 512 - by- 512 矩阵。 我想取向量的第一个元素并将第一个 512 -by- 512 切片与它相乘,依此类推,产生一个新的 31 < / em> -by- 512 -by- 512 数组。 但是我不想在性能问题上使用for循环。

1 个答案:

答案 0 :(得分:2)

这是bsxfun的简单用例:

bsxfun(@times, v, M)

或者您可能需要permute向量,v,以便其 singelton 维度与您想要展开的方向正交(在您的情况下,它实际上是维度一两个),即将v转换为 31 -by- 1 -by- 1 (虽然我不确定这是否有必要,如果你遇到错误就试试),就像你的情况一样,你将沿着第三维扩展

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

请注意,执行此操作的另一种常用方法是使用repmat.*,但bsxfun更有效。