假设我的矩阵A
和B
都具有n x n的大小。现在我想将A的每一列视为列矩阵ColA(i)
[i = 1,n],并将B矩阵的每一行视为行矩阵RowB(j)
[j = 1,n]。
现在我可以使用matmul
函数来构造一个名为C
的新矩阵,通过将ColA和RowB乘以所有可能的i和j值来找到它们的元素吗?像
do i = 1, n
do j= 1, n
C(i,j) = matmul( ColA(i), RowB(j) )
end do
end do
答案 0 :(得分:2)
好吧,我可以看到你问题的三个可能的答案,但我不确定你的意思是哪一个......
i
的{{1}}列和A
的行j
的点积,它等于矩阵乘法B
:< / LI>
B*A
C = matmul( B,A )
,但随后每个组合C=colA * rowB^T
都会生成一个单独的矩阵i,j
。 C
C = matmul( A(:,i), B(j,:) )
。这在Fortran中非常简单:C_ij = A_ij * B_ij
接受你的选择!
答案 1 :(得分:1)
您的代码没有意义。 ColA(i)
不是向量,它是标量,你不能将标量传递给矩阵乘法。同样,C(i,j)
不是矩阵,它是标量。 C
是一个矩阵。
或者如果你的意思是ColA
是向量的向量,那么这在Fortran中是不可能的。那么C
必须是矩阵矩阵,也是不可能的。对于派生类型,它可能是可能的,但您必须自己编写代码。