[英]Equivalent of numpy.dot (python) in Fortran
我在python中有需要“翻譯”為Fortran的代碼(我不太了解...。)
我有 :
>>>Mat1
array([[ 0.2],
[ 0.4],
[-0.2],
[-0.8]])
>>> X
array([[0, 0, 1, 1],
[0, 1, 1, 0],
[1, 0, 1, 0],
[1, 1, 1, 1]])
然后我做:
Result=np.dot(X,Mat1)
我想在Fortran中做同樣的事情
REAL(8), DIMENSION(4,1)::Mat1
REAL(8), DIMENSION(4,4)::X
X(:, 1)=(/0, 0, 1, 1/)
X(:, 2)=(/0, 1, 1, 0/)
X(:, 3)=(/1, 0, 1, 0/)
X(:, 4)=(/1, 1, 1, 1/)
Mat1(:,1)=(/0.2,0.4,-0.2,-0.8/)
但是在這種情況下, numpy.dot
並不是真正的點產品...我不知道該使用DOT_PRODUCT
還是MATMUL
。 我真的不清楚。
為此,MATMUL是您想要的方式。 看這里 。 DOT_PRODUCT僅適用於矢量。 MATMUL可以處理尺寸允許矩陣相乘的任何矩陣。
在您的示例中,矩陣沒有匹配的維度。 數學(不僅是FORTRAN)期望將m*k
矩陣乘以k*n
矩陣。 您需要交換Mat1的軸。
編輯 :或者,正如francescalus指出的那樣,您可以通過聲明DIMENSION(4)
使其成為1級向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.