我在Fortran中有一个矩阵A(3,4),我想将其写在这样的文本文件中:
A(1,1) A(2,1) A(3,1)
A(1,2) A(2,2) A(3,2)
A(1,3) A(2,3) A(3,3)
A(1,4) A(2,4) A(3,4)
我使用以下代码。首先有两个问题,每个i都会覆盖它,并成行写入。我很乐意指导我解决问题。谢谢
do i=1,4
open (unit=10,file="out.txt",action="write")
write (10,*) A(1,i) , A(2,i) , A(3,i)
close (10)
答案 0 :(得分:0)
正如Ian所提到的,因为i的open语句在循环内,所以每个i都会覆盖您的文件。 Fortran正在重新打开每个i的文件。将open语句移至循环之前,因此仅打开一次。
当然,它是按行写入的,因为2-D数组中的第一个索引是行索引。您可以根据需要切换索引。另一方面,根据您的第一个框,它看起来好像您希望各行都跨列。
您说您只需要编写一些元素。只要它们在连续的块中,您将要在write语句中使用implied do loop
。它更加简洁,您无需编写很多变量就可以编写大块代码。看起来像这样:
open (unit=10,file="out.txt",action="write")
do i=1,4
write (10,*) (A(j,i), j=1,3)
end do
close (10)
同样,这将反转行和列,如果要使用传统表示形式,请切换i和j。