【发布时间】:2015-05-13 00:23:31
【问题描述】:
我有几个名称为angleFile1.dat、angleFile2.dat、angleFile3.dat 等的输入数据文件。 (我有超过 100 个文件)
每个文件包含 45000 个角度数据。我想对这些角度进行分组以获得 0 到 360 度之间的分布。
我已经编写了一个 Fortran 代码来一次处理一个文件。
此代码将读取输入文件“angleFile1.dat”并将分布(以 bin 为单位)写入“angleOut.dat”文件。
program binangle
implicit none
integer :: i, j, k
integer,parameter :: arr=45000
real,dimension(1:arr) :: aangle
integer,dimension(0:360) :: binaangle
do i = 0,360
binaangle(i) = 0.0
end do
!OPEN OUTPUT FILE
open(unit=49,status="unknown",file="angleOut.dat")
!OPEN INPUT FILE
open(unit=50,status="unknown",file="angleFile1.dat")
read(50,'(F8.3)') (aangle(i), i = 1,arr)
! DO THE BINNING
do j = 1, arr
binaangle(int(aangle(j))) = binaangle(int(aangle(j))) + 1
end do
! WRITE INTO OUTPUT FILE
do k = 0,360
write(49,*) k, " ", binaangle(k)
end do
如何使这段代码递归地接收输入文件(angleFile1.dat、angleFile2.dat、angleFile3.dat 和直到angleFile100.dat)并将分布写入同一个输出文件?
非常感谢您的帮助。
【问题讨论】:
-
这个问题的答案——stackoverflow.com/questions/6146516/…——向您展示了如何在程序执行时构建文件名。当你写“递归”时,我认为你的意思是“迭代”。
标签: fortran fortran90 gfortran fortran95