2017-06-05 42 views
-1

我有一個從0到15000行和幾列的時間序列數據。我希望以60秒的間隔分隔數據並計算每個間隔內的數據量。Fortran循環內的計數行

我創建了一個do循環,正確地創建從開始到文件結束的60s的間隔,但是,我不知道如何計算每個間隔內的行數。

我期待的最終結果是有兩列作爲結果: 區間數和行數。

這是我走到這一步:

program flash_selection 

implicit none  

integer i, zero, qtd, cellnumb, flashcell, tipo, segment 

real time, Etrig, xtrig, ytrig, ztrig, poscharge, negq, chargeneutr 

open(1,file='my_file.txt',status='OLD') 

read(1,*)           

do 

read(1,*,end=100) qtd, time, cellnumb, flashcell, tipo, segment, Etrig, xtrig, ytrig, ztrig, poscharge, negq, chargeneutr 

do i = 1, 420 

open(2,file='test.txt') 

if (time .GE. (i-1)*60 .AND. time .LT. i*60) then 

write(2,*) qtd, time, tipo, segment, Etrig, xtrig, ytrig, ztrig, poscharge, negq, chargeneutr 

end if 

end do 
end do 

IF語句正確的數據按照我想要的東西分開,唯一剩下的就是要知道線的量,有對每個間隔60.

回答

0

只需添加一個counter變量。每次循環時增加counter。當IF測試成功時,打印出counter,然後將其設回零。

(順便說一句 - 不知道你想要的循環內您的OPEN聲明,你應該使用文件號大於10)

+0

至於單元號,根據不同的編譯器,它可能支持自動單元轉讓,請參閱https://stackoverflow.com/questions/7876075/getting-free-unit-number-in-fortran – Craig

+0

謝謝傑克和克雷格的迴應。我通過第一個循環之外的循環(第一個循環的i = 1,420)在IF語句之後通過加入a = a + 1來實現它,這幾乎就是您提到的計數器。 –