如何显示10列8行的数据?

问题描述 投票:0回答:2

我认为 txt 文件中有一个数据集(数字)。它有 10 列和 80 个原始数据。

我打开、读取这些数据并将其存储在 Fortran 程序中的数组中。 然后我再次将数组中的数据写入另一个 txt 文件。然后数据显示为连续。 我需要在这个新的 txt 文件中再次将其显示为 10 列和 8 行。 我该怎么做?

例如:

program test
    implicit none
    integer::n
    real,dimension(10,8)::data
    
    open(unit=7,file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT')
    
    read (7,*) data

    open(unit=8,file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT')
    
    do n=1,80
         write (8,*) data
    end do

end program test
file-io fortran output
2个回答
0
投票

do
循环内,您正在写出整个数组。因此,您最终的输出将比您希望的长 80 倍。索引数组,以便一次只打印一行,如

do n=1,80
    write(8,'(10(1x,e10.4))') data(n,:)
end do

使用

(n,:)
进行索引实际上是在说“第 n 行,所有列”。

如果数组已正确读入,那么应该可以工作,但我对 Fortran 不太熟悉,无法判断您的

read
语句是否会按预期工作。如果其他人可以对此发表评论,我们将不胜感激。


0
投票

输出时严格不需要循环:每次格式重复时,它将开始一个新记录(即开始一个新行)。

根据我的口味,这里有太多的“幻数”,而且,虽然“行”/“列”确实可以反映 Fortran 中的存储顺序,但它们与您通常在数学中描述矩阵的方式不太相符.

但无论如何。

program test
   implicit none
   real, dimension(10,8) :: MyData
    
   open( 7, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\DATA.TXT' )
   read( 7, * ) MyData
   close( 7 )

   open( 8, file='C:\USERS\SAM\DOCUMENTS\FORTRAN\TESTDATA.TXT' )
   write( 8, "( 10( 1x, e11.4 ) )" ) MyData       ! no loop needed
   close( 8 )

end program test
© www.soinside.com 2019 - 2024. All rights reserved.