Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran 从文件中读取矩阵时的索引_Fortran - Fatal编程技术网

Fortran 从文件中读取矩阵时的索引

Fortran 从文件中读取矩阵时的索引,fortran,Fortran,我使用例程READ从文件中读取矩阵。实际上,我直接提取了9个子矩阵(想想一个大3x3表,每个都是一个子矩阵)。精确的索引并不重要,但每个子矩阵都是NY_INTxNY_INT近似值,因此文件中的整个矩阵都是3NY_INTx3NY_INT OPEN (91,file= 'inf/matrix_re.dat',form='formatted',status='old') OPEN (92,file= 'inf/matrix_im.dat',form='formatted'

我使用例程READ从文件中读取矩阵。实际上,我直接提取了9个子矩阵(想想一个大3x3表,每个都是一个子矩阵)。精确的索引并不重要,但每个子矩阵都是NY_INTxNY_INT近似值,因此文件中的整个矩阵都是3NY_INTx3NY_INT

      OPEN (91,file= 'inf/matrix_re.dat',form='formatted',status='old')   
      OPEN (92,file= 'inf/matrix_im.dat',form='formatted',status='old')   
c   
       do i=0,NY_INT-1
           READ(91,*) k11real(i,0:NY_INT-1)
       READ(92,*) k11imag(i,0:NY_INT-1)
       end do
c
       do i=0,NY_INT
           READ(91,*) k12real(i,NY_INT+1:2*NY_INT+1)
       READ(92,*) k12imag(i,NY_INT+1:2*NY_INT+1)
       end do
c
       do i=0,NY_INT-1
           READ(91,*) k13real(i,2*NY_INT+2:3*NY_INT+1)
           READ(92,*) k13imag(i,2*NY_INT+2:3*NY_INT+1)
       end do
C
C
       do i=NY_INT+1,2*NY_INT+1
           READ(91,*) k21real(i,0:NY_INT-1)
           READ(92,*) k21imag(i,0:NY_INT-1)
       end do
c
       do i=NY_INT+1,2*NY_INT+1
           READ(91,*) k22real(i,NY_INT+1:2*NY_INT+1)
           READ(92,*) k22imag(i,NY_INT+1:2*NY_INT+1)
       end do
c
       do i=NY_INT+1,2*NY_INT+1
           READ(91,*) k23real(i,2*NY_INT+2:3*NY_INT+1)
           READ(92,*) k23imag(i,2*NY_INT+2:3*NY_INT+1)
       end do
C
C
       do i=2*NY_INT+2,3*NY_INT+1
           READ(91,*) k31real(i,0:NY_INT-1)
           READ(92,*) k31imag(i,0:NY_INT-1)
       end do
c
       do i=2*NY_INT+2,3*NY_INT+1
           READ(91,*) k32real(i,NY_INT+1:2*NY_INT+1)
           READ(92,*) k32imag(i,NY_INT+1:2*NY_INT+1)
       end do
c
       do i=2*NY_INT+2,3*NY_INT+1
           READ(91,*) k33real(i,2*NY_INT+2:3*NY_INT+1)
           READ(92,*) k33imag(i,2*NY_INT+2:3*NY_INT+1)
       end do
c
这个代码对吗?在我看来,我没有正确地使用循环


我不明白READ语句中的索引是我的目标矩阵中的位置还是我正在读取的文件中的位置。

您正在调用的索引基于您创建的新数组

更好的方法是将所有值读入一个数组,然后为每个单独的子矩阵创建一个新数组,从数组中获取数据

OPEN (91,file= 'inf/matrix_re.dat',form='formatted',status='old') 
do i = 1, length of all values  
    new_array = read(91, *)
enddo

do i = 1, length of all values
    sub_matrix_1 = new_array[]
    sub_matrix_2 = new_array[] 
    etc..
enddo

当然,这取决于之后您试图对数据做什么

您调用的索引基于您创建的新数组

更好的方法是将所有值读入一个数组,然后为每个单独的子矩阵创建一个新数组,从数组中获取数据

OPEN (91,file= 'inf/matrix_re.dat',form='formatted',status='old') 
do i = 1, length of all values  
    new_array = read(91, *)
enddo

do i = 1, length of all values
    sub_matrix_1 = new_array[]
    sub_matrix_2 = new_array[] 
    etc..
enddo

当然,这取决于之后您试图对数据做什么

所以,我是每行的,对吗?另外,我得到了这个错误:星号在这个上下文中是无效的(读(91,*))是的,它应该被读(91,),不管你在读什么。里德(91,)并不是独立存在的。希望这有帮助:)所以,我是每行的,对吗?另外,我得到了这个错误:星号在这个上下文中是无效的(读(91,*))是的,它应该被读(91,),不管你在读什么。里德(91,)并不是独立存在的。希望这有帮助:)