Fortran 从文件中读取矩阵时的索引
我使用例程READ从文件中读取矩阵。实际上,我直接提取了9个子矩阵(想想一个大3x3表,每个都是一个子矩阵)。精确的索引并不重要,但每个子矩阵都是NY_INTxNY_INT近似值,因此文件中的整个矩阵都是3NY_INTx3NY_INTFortran 从文件中读取矩阵时的索引,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'
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,)并不是独立存在的。希望这有帮助:)