2012-01-03 3 views
1

Как написать комплекс (nXn) матрица в Fortran для файла? Например:написать сложную матрицу в fortran

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

В этом примере один прибудет 2nXn элементы, записываемые в файл то есть реальный и воображаемый. Вместо двух элементов Re (a11) Im (a11), Как я могу записать его как один элемент Re (a11) + iIm (a11)?

ответ

5

Используйте встроенные функции РЕАЛЬНЫЕ и 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'), мы принимаем абсолютное значение мнимой части. Отредактируйте дескриптор формата соответственно, чтобы программа, которую вы используете для чтения выходного файла, сможет ее прочитать.

+0

HI УМС-бот, ниже выходной файл и как вы видите его не в порядке: 5,4585 + я -7,2662 -7,6987 + 6,7328 6,4439 я + я 4,7736 4,4043 + я -7,7265 – bill

+0

Я Editted мой ответ, чтобы заботиться правильного форматирования. – milancurcic

+0

Я бы хотел, чтобы это было читаемо для Matalb, т. Е. Что Matlab поймет, что это комплексная матрица nXn – bill

Смежные вопросы