Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 矩阵行与另一矩阵列相乘的快速方法_Arrays_Matlab_Matrix - Fatal编程技术网

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]));