Arrays 矩阵行与另一矩阵列相乘的快速方法
我有两个矩阵,我想用第一个矩阵的每一列乘以第二个矩阵的一行,得到一个矩阵,如下所示:Arrays 矩阵行与另一矩阵列相乘的快速方法,arrays,matlab,matrix,Arrays,Matlab,Matrix,我有两个矩阵,我想用第一个矩阵的每一列乘以第二个矩阵的一行,得到一个矩阵,如下所示: for j=1:size(A,2) c(:,:,j) = A(:,j)*B(:,j)' ; end A和B的大小相同 有没有一种快速的方法可以做到这一点?简单地使用: A、B、C的尺寸?请每个问题回答一个问题。我删除了你的第二个问题;如果相关,请随意将其作为新问题发布。@Jean-FrançoisCorbett我可以将我的第一个问题编辑为我的第二个问题吗?@Jean-FrançoisCorbett我
for j=1:size(A,2)
c(:,:,j) = A(:,j)*B(:,j)' ;
end
A
和B
的大小相同
有没有一种快速的方法可以做到这一点?简单地使用:
A
、B
、C
的尺寸?请每个问题回答一个问题。我删除了你的第二个问题;如果相关,请随意将其作为新问题发布。@Jean-FrançoisCorbett我可以将我的第一个问题编辑为我的第二个问题吗?@Jean-FrançoisCorbett我的第二个问题是我第一个问题的一般形式,我认为只问一个更一般的问题是不合适的。我能做什么?把它当作一个新问题问?只要问一个新问题就行了。这个已经关闭了,不会引起任何注意。你应该参考这一个,并说明你的新问题与它有什么不同。这应该很好!:)美好的不出所料,简单的for
循环对于大型矩阵(比我的系统上大约200×200的矩阵大)更快。可能与缓存有关。@horchler是的。很遗憾,普通的循环不像以前那么慢了。这消除了Matlab编程的一部分乐趣:-)@LuisMendo问题是矩阵乘法太快了,与naive for循环相比,渲染bsxfun(@times
…只是“不太好”。不过使用bsxfun
的其他操作相对较好。
C = bsxfun(@times, permute(A, [1 3 2]), permute(B, [3 1 2]));