2012-01-03 95 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