File 如何在Fortran 90中用数据填充矩阵
我有一个问题,也许很愚蠢,我写的代码。我生成了包含24行的30个数据集,其中包含表示相同度量值的不同值,但是我无法以数组格式打印它们。让我解释一下,我得到一个包含所有值的单列,我将能够将它们写成24行乘以30列的矩阵。我试图阅读这个网站和其他网站上的各种帖子,但我得到了与我的值交替的零矩阵,我该怎么做?下面是我编写的代码,试图获得由diffu的值构成的矩阵aFile 如何在Fortran 90中用数据填充矩阵,file,matrix,fortran,fortran90,File,Matrix,Fortran,Fortran90,我有一个问题,也许很愚蠢,我写的代码。我生成了包含24行的30个数据集,其中包含表示相同度量值的不同值,但是我无法以数组格式打印它们。让我解释一下,我得到一个包含所有值的单列,我将能够将它们写成24行乘以30列的矩阵。我试图阅读这个网站和其他网站上的各种帖子,但我得到了与我的值交替的零矩阵,我该怎么做?下面是我编写的代码,试图获得由diffu的值构成的矩阵a program deviation implicit none character(len=20) :: filein,fileou
program deviation
implicit none
character(len=20) :: filein,fileout,fileinp
integer :: row,i,h,io,n,j,l,m,col
real :: usv,usf,tsv,tsf,su,st
real :: diffu, difft
real, dimension(24,30) :: a
real, dimension(720) :: u
n = 39
row = 24
col = n-9
write(*,'(2x,''Input file .......''/)')
read(*,'(a15)') filein
write(*,'(2x,''Output file........''/)')
read(*,'(a15)') fileout
open(unit = 20,File=fileout)
a = 0.
fileLoop : do i = 10,n
fileinp = 'lin*27-'
write(fileinp, '("lin*27-",I2,".dat")') i
open(unit = i+40,File=fileinp)
open(unit = 30,File=filein)
do j = 1, row
read(30,*,IOSTAT = io) h,usv,tsv
read(i+40,*,IOSTAT = io) h,usf,tsf
if(io/=0) then
write(*,*) 'End of file!'
exit
else if(io==0) then
diffu = ((usf - usv)**2)
difft = ((tsf - tsv)**2)
write(20,*) diffu,difft
endif
enddo
enddo
close(i+40)
close(30)
enddo fileLoop
close(20)
open(unit=20,STATUS='OLD',FILE=fileout)
do r = 1, 720
read(20,*,IOSTAT = io) diffu,difft
u(r) = diffu
if(io/=0) then
write(*,*) "Error!"
exit
else if(io==0) then
do m = 1, 24
do l = 1, col
a(m,l) = a(m,l) + u(r)
enddo
enddo
endif
enddo
write(*,*) a
close(20)
end program deviation
移动打印,一个外部的loopagentp我编辑了我的代码,我试图修改它并关闭然后重新打开输出文件,但我得到了相同的diff值…我怎么办?你必须写到第20单元,它将被归档。弗拉基米尔是什么意思?我必须这样写一行吗?read20,*文件输出