如何将Fortran中的复杂(nXn)矩阵写入文件? 例如:
DO I=1,N
write(14,'(100g15.5)') ( M(i,j), j=1,n )
ENDDO
在此示例中,将一个2nXn元素写入文件,即实数和虚数。 而不是两个元素,Re(a11)Im(a11),我怎么能把它写成一个元素Re(a11)+ iIm(a11)?
答案 0 :(得分: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')中考虑了负虚部,所以我们取虚部的绝对值。相应地编辑格式描述符,以便用于读取输出文件的程序能够读取它。