Fortran:从矩阵中提取列和行并将它们用作乘法的一维数组

hba*_*ega 2 arrays fortran matrix fortran90

假设我有矩阵A并且B都有大小 nxn 。现在我想把A的每一列当作一个列矩阵ColA(i)[i=1,n],把B矩阵的每一行当作一个行矩阵RowB(j)[j=1,n]。

现在我可以使用matmul函数来构造一个新矩阵,称为C其元素是通过将所有可能的 i 和 j 值乘以 ColA 和 RowB 来找到的吗?就像是

do i = 1, n
 do j= 1, n
    C(i,j) = matmul( ColA(i), RowB(j) ) 
 end do
end do
Run Code Online (Sandbox Code Playgroud)

Ale*_*ogt 5

好吧,对于你的问题,我可以看到三种可能的答案,但我不确定你指的是哪一种......

  • 点积柱的iA和行jB,这将是等于矩阵的矩阵乘法B*A
C = matmul( B,A )
Run Code Online (Sandbox Code Playgroud)
  • 外积:C=colA * rowB^T,但是每个组合i,j都会导致一个单独的矩阵C
C = matmul( A(:,i), B(j,:) )
Run Code Online (Sandbox Code Playgroud)
  • 逐元素乘法,这意味着C_ij = A_ij * B_ij. 这在 Fortran 中非常简单:
C = A*B
Run Code Online (Sandbox Code Playgroud)

随你挑!