Re: [請益] FORTRAN do loop 在某問題上的寫法

看板Fortran作者 (...)時間12年前 (2012/05/07 22:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
再次感激FORTRAN版上的大俠相助解決了這個問題。 檔名testyyy.dat內容為3行10列的數據分成上下兩組。 以下是程式: PROGRAM main IMPLICIT NONE INTEGER*4::i INTEGER*4::M,N REAL*8,ALLOCATABLE::POINT(:,:) CHARACTER*11::filename N=10 ALLOCATE( POINT(3,N) ) OPEN(UNIT=323, FILE='testyyy.dat') READ(323,*) POINT CLOSE(323) WRITE(*,"(<N>(1X,F8.0,1X,F8.5,1X,F15.5,/))") POINT 10 FORMAT(1X, 3(3F10.5)) ! 輸出的檔案格式 Raw data。 Do i = 1,N ! 從第一個數據開始讀到最後一個。 WRITE(*,10) POINT(1,i), POINT(2,i), POINT(3,i) enddo ! 讀檔案結束。 C 以下開始分組 M=N/2 DO i=1,M WRITE(filename,"('test_',I6.6)") i OPEN(UNIT=323,FILE=filename) WRITE(323,10) POINT(:,(i-1)*2+1:i*2) CLOSE(323) ENDDO C 分組結束 Stop End ※ 引述《py94g (...)》之銘言: : 大家好,我想請教一個對我來說蠻困難的問題 : 我要讀一個檔案,檔名testyyy.dat,檔案內容是3行10列的數值。 : 檔案內容如下: : 1 11 -0.1 : 2 12 -0.2 : 3 13 -0.3 : 4 14 -0.4 : 5 15 -0.5 : 6 16 -0.4 : 7 17 -0.3 : 8 18 -0.2 : 9 19 -0.1 : 10 20 -0.1 : 以下程式可以把檔案讀出並列在螢幕上: : Dimension POINT(3, N) ! 設定矩陣維度,3行N列,N=10。 : 10 FORMAT(1X, 3(3F10.5)) ! 輸出的檔案格式 Raw data。 : C 讀檔案,把檔案中的數值填入建立POINT(3,N)的矩陣中。 : OPEN(323, FILE='testyyy.dat') ! 把要讀入的檔案檔名+路徑設定好。 : READ(323,*) POINT ! 讀入。 : Do i = 1,N ! 從第一個數據開始讀到最後一個。 : WRITE(*,10) POINT(1,i), POINT(2,i), POINT(3,i) : enddo ! 讀檔案結束。 : 接著,我要把內容分成兩個部分並輸出。 : 1 11 -0.1 : 2 12 -0.2 : 3 13 -0.3 : 4 14 -0.4 : 5 15 -0.5 : 輸出檔案a.dat : 6 16 -0.4 : 7 17 -0.3 : 8 18 -0.2 : 9 19 -0.1 : 10 20 -0.1 : 輸出檔案b.dat : Do k = 1,5 ! 第一組1~5列 : WRITE(*,10) POINT(1,k), POINT(2,k), POINT(3,k) : enddo : WRITE(*,*) : Do j = 6,10 ! 第二組6~10列 : WRITE(*,10) POINT(1,j), POINT(2,j), POINT(3,j) : enddo : 真正的問題是我的數據是3行1000000列, : 依序由上到下分成1000組,每一組挑出一個極小值(這簡單可以自己做)。 : 如果依照上面的寫法是不行的,想了好幾天只好來這裡求助高手給我點提示。 : 感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.20.237
文章代碼(AID): #1FfzrR37 (Fortran)
文章代碼(AID): #1FfzrR37 (Fortran)