2012-01-03 134 views
1

如何在Fortran中將複雜(nXn)矩陣寫入文件? 例如:在Fortran中編寫複雜矩陣

DO I=1,N 
     write(14,'(100g15.5)') (M(i,j), j=1,n) 
ENDDO 

在這個例子中一個送爲2N×N寫入到文件,即實部和虛元素。 (a11)Im(a11),我怎樣才能把它寫成一個元素Re(a11)+ iIm(a11)?

回答

5

使用內部函數REAL和AIMAG寫複數的個體實和虛分量:

CHARACTER(LEN=3),DIMENSION(n,n) :: imag_unit = '+i*' 

WHERE(AIMAG(M)<0.)imag_unit = '-i*' 

DO I=1,N 
    write(14,'(100(g15.5,a,g15.5,2x))') (REAL(M(i,j)),imag_unit(i,j),& 
             ABS(AIMAG(M(i,j))), j=1,n) 
ENDDO 

說明:該代碼定義具有值的字符串的矩陣「+ I」時虛部是正值,而虛部爲負值的'-i'。由於負的虛部在格式('-i')中被考慮,所以我們取虛部的絕對值。相應地編輯格式描述符,以便用於讀取輸出文件的程序將能夠讀取它。

+0

HI IRO-BOT,下面 是輸出文件,當你看到它的不正常: 5.4585 +我-7.2662 -7.6987 + I 6.7328 6.4439 +我4.7736 4.4043 +我-7.7265 – bill 2012-01-03 20:10:04

+0

我editted我的答案照顧正確的格式。 – milancurcic 2012-01-03 20:20:27

+0

我希望它對於Matalb是可讀的,即Matlab會理解它是nXn複雜矩陣 – bill 2012-01-03 20:21:12