如果矩阵A在X中,矩阵B在Y中。
进行多重化只是Z = X * Y.正确假设两个阵列的大小相同。
如何使用for循环计算它呢?
答案 0 :(得分:3)
ja72的anwser是错误的,看看我的评论,看看为什么。一般来说,在这些简单的线性代数运算中,你的代码不可能超过矢量化版本,即使你用C / mex编写代码也是如此(除非你的代码中有一些可以在代码中使用的稀疏结构) )。原因在于,Matlab将矩阵乘法的实际工作传递给用Fortran编写的Lapack库,然后调用在特定机器架构下优化的Blas库。
答案 1 :(得分:3)
是acai是正确的,我记得当我开始使用Matlab时想知道同样的事情。只是为了提供更多细节来解释acai所说的,LAPACK是线性代数PACKage,是许多其他语言用来解决这些类型问题的东西,Python使用SciPy,Java jlapack等连接它.BLAS是Basic Linear Algebra子程序,它处理你要问的矩阵乘法的基本问题。 Acai也是对的,你永远不会击败Matlab为矩阵乘法提供的性能,这是他们的面包和黄油,他们已经花了几十年,优化了这些操作的性能。
答案 2 :(得分:1)
是矩阵乘法是A*B
,逐个元素是A*.B
。如果A是(NxM)而B是(MxK)大小,则C=A*B
的代码是
<强>更新强>
for i=1:N
for j=1:K
C(i,j) = A(i,:)*B(:,j)
end
end