我想为多个.dat
文件执行固定的计算步骤。
以下是我想用一个 dimension t(128716),x(128716)
open (unit=88,file='ALFA-gua-100m-2.dat',status='unknown')
do i=1,128716
read(88,*)t(i),x(i)
enddo
sum=0
do j=1,128716
sum=sum+x(j)
enddo
write(*,*)sum/128716
close(88)
stop
end
文件进行操作的代码,即计算:
dimension t(128716),x(128716)
open (unit=11,file='ALFA-gua-100m-2.dat',status='unknown')
open (unit=12,file='ALFA-gua-100m-5.dat',status='unknown')
do i=1,2
ii = i + 10
do j=1,128716
read(ii,*)t(j),x(j)
enddo
sum=0
do k=1,128716
sum=sum+x(k)
enddo
enddo
do l=1,2
ll = l + 10
write(ll,*)sum/128716.0
close(ll)
enddo
stop
end
我该如何解决这个问题?请提出建议!
这是我的多个文件的代码:
print(model.summary())
但它不起作用。
答案 0 :(得分:0)
当您有两个单独的循环时,不能对sum
循环的两次迭代使用相同的i
。处理第二个文件时会被覆盖。
您可以将循环合并为一个。
do i=1,2
ii = i + 10
do j=1,128716
read(ii,*)t(j),x(j)
enddo
sum=0
do k=1,128716
sum=sum+x(k)
enddo
write(ii,*)sum/128716.0
close(ii)
enddo
您可以将数组用于总和sums(i)
。
do i=1,2
ii = i + 10
do j=1,128716
read(ii,*)t(j),x(j)
enddo
sum=0
do k=1,128716
sums(i)=sums(i)+x(k)
enddo
enddo
do l=1,2
ll = l + 10
write(ll,*)sums(l)/128716.0
close(ll)
enddo
答案 1 :(得分:0)
@ VladimirF答案的附录。
要对名为x
的数组中的所有元素求和,我们可以简单地编写
sumx = sum(x)
程序员根本不需要编写循环。如果使用一个总和数组,那么就像
sums(1) = sum(x)
是合适的。
然后计算我写的数组的平均值
meanx = sum(x)/size(x)
在我写作的时候:调用变量sum
不是一个好主意。这个名称有一个现有的内在函数,它只会让读者(虽然不是编译器)混淆这个名字的变量。