如何对多个 .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。处理第二个文件时会被覆盖。

  1. 您可以将循环合二为一。

    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
    
  2. 您可以使用数组求和 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。该名称存在一个现有的内在函数,它只会让读者(虽然不是编译器)混淆也有一个该名称的变量。