如果矩阵 A 在 X 中,而矩阵 B 在 Y 中。
进行乘法运算只是 Z = X*Y。正确假设两个数组的大小相同。
如何使用 for 循环计算它?
ja72 的 anwser 是错误的,请参阅我的评论以了解原因。一般来说,在这些简单的线性代数运算中,您的代码不可能击败矢量化版本,即使您使用 C/mex 编写代码也不可能(除非您的矩阵中有一定的稀疏结构,您可以在代码中加以利用) )。原因是,在底层,Matlab 将矩阵乘法的实际工作传递给用 Fortran 编写的 Lapack 库,然后调用 Blas 库,这些库针对特定的机器架构进行了优化。
是的,acai 是正确的,我记得当我开始使用 Matlab 时也曾想过同样的事情。只是为了提供更多关于 acai 所说的细节,LAPACK 是线性代数包,并且是许多其他语言用来解决这些类型问题的东西,Python 使用 SciPy、Java jlapack 等连接到它。BLAS 是基本线性代数处理您所询问的矩阵乘法的基本问题的子程序。Acai 也是对的,您永远无法超越 Matlab 为矩阵乘法提供的性能,这是他们的面包和黄油,他们已经花了几十年的时间来优化这些操作的性能。
是的,矩阵乘法是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