簡體   English   中英

在Fortran中相當於numpy.dot(python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM