2

如果矩阵 A 在 X 中,而矩阵 B 在 Y 中。

进行乘法运算只是 Z = X*Y。正确假设两个数组的大小相同。

如何使用 for 循环计算它?

4

3 回答 3

3

ja72 的 anwser 是错误的,请参阅我的评论以了解原因。一般来说,在这些简单的线性代数运算中,您的代码不可能击败矢量化版本,即使您使用 C/mex 编写代码也不可能(除非您的矩阵中有一定的稀疏结构,您可以在代码中加以利用) )。原因是,在底层,Matlab 将矩阵乘法的实际工作传递给用 Fortran 编写的 Lapack 库,然后调用 Blas 库,这些库针对特定的机器架构进行了优化。

于 2012-10-11T01:47:26.260 回答
3

是的,acai 是正确的,我记得当我开始使用 Matlab 时也曾想过同样的事情。只是为了提供更多关于 acai 所说的细节,LAPACK 是线性代数包,并且是许多其他语言用来解决这些类型问题的东西,Python 使用 SciPy、Java jlapack 等连接到它。BLAS 是基本线性代数处理您所询问的矩阵乘法的基本问题的子程序。Acai 也是对的,您永远无法超越 Matlab 为矩阵乘法提供的性能,这是他们的面包和黄油,他们已经花了几十年的时间来优化这些操作的性能。

于 2012-10-11T13:16:29.067 回答
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
于 2012-10-10T23:24:28.107 回答