如何将一个文件的内容放在矩阵中?

时间:2015-02-03 10:36:42

标签: file matrix fortran

我有一个名为test.dat的文件,其中包含以下6个元素:


  

test.dat文件的内容


  

1
  2
  3
  4
  5
  6

如何将这些元素放在名为test1.dat的文件中,该文件包含带有以下元素的矩阵A(3x2)


  

所需的test1.data文件内容


  

1 2
   3 4
   5 6


换句话说,我如何阅读test.dat的每一行并将它们作为元素放在矩阵A(3x2)中并将矩阵保存在test1.dat文件中?
到目前为止,我尝试按如下方式阅读每个元素:


integer function myf(unit, file, rows, columns)
      implicit none
      integer, intent(in) :: unit, rows, columns
      character(len=*) :: file
      integer, dimension (1:columns, 1:rows) ::x
          OPEN(unit, FILE=file, STATUS='OLD', ACTION='READ')
          read(unit,*) x
          close(unit)
          myf= 0
end function myf
program test
integer (kind=4) :: a, b, f
INTEGER, DIMENSION(3,2) :: m
   do a=1,3
       do b=1,2
             f=a*b
             m(a,b)=myfile(99, "test.dat", f, 1)
             write(*,*) m(a,b)
       end do
  end do
end program test

但我只能阅读test.dat文件的第一个元素。现在,这是我的问题:


  
      
  1. 这条代码有什么问题,我可以阅读test.dat文件的第一个元素?
  2.   
  3. 如何控制test.dat文件并将其放入矩阵A(3x2)中,如上所述?
  4.   

如果有人帮助我,我感激不尽。

1 个答案:

答案 0 :(得分:0)

以下代码是一个适用于阅读的示例:

您必须注意 - 在Fortran中,最左侧的索引(在这种情况下为i)变化最快,因此元素的顺序为a(1,1)a(2,1),{{1 }}, a(3,1)等等。因此,如果您只是打印数组,输出也将是 1 3 5 2 4 6。

a(1,2)