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