如何对多个 .dat 文件进行相同的计算
How to do the same calculation for multiple .dat files
我想对多个 .dat
个文件做一个固定的计算步骤。
这是我想用一个 .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
但它不起作用。
当您有两个单独的循环时,您不能对 i
循环的两次迭代使用相同的 sum
。处理第二个文件时会被覆盖。
您可以将循环合二为一。
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
@VladimirF 回答的附录。
要对名为 x
的数组中的所有元素求和,我们可以简单地编写
sumx = sum(x)
程序员根本不需要写循环。如果使用总和数组,则类似于
sums(1) = sum(x)
会合适。
然后计算我写的数组的平均值
meanx = sum(x)/size(x)
当我在写的时候:调用一个变量并不是一个好主意sum
。该名称存在一个现有的内在函数,它只会让读者(虽然不是编译器)混淆也有一个该名称的变量。
我想对多个 .dat
个文件做一个固定的计算步骤。
这是我想用一个 .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
但它不起作用。
当您有两个单独的循环时,您不能对 i
循环的两次迭代使用相同的 sum
。处理第二个文件时会被覆盖。
您可以将循环合二为一。
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
@VladimirF 回答的附录。
要对名为 x
的数组中的所有元素求和,我们可以简单地编写
sumx = sum(x)
程序员根本不需要写循环。如果使用总和数组,则类似于
sums(1) = sum(x)
会合适。
然后计算我写的数组的平均值
meanx = sum(x)/size(x)
当我在写的时候:调用一个变量并不是一个好主意sum
。该名称存在一个现有的内在函数,它只会让读者(虽然不是编译器)混淆也有一个该名称的变量。