Re: [請益] FORTRAN do loop 在某問題上的寫法
再次感激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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章