楼主:
py94g (...)
2012-05-07 02:30:28大家好,我想请教一个对我来说蛮困难的问题
我要读一个档案,档名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组,每一组挑出一个极小值(这简单可以自己做)。
如果依照上面的写法是不行的,想了好几天只好来这里求助高手给我点提示。
感恩
作者: terryys (terry) 2012-05-07 11:40:00
你的问题是不知道怎么样把1M个资料分成1000个loop写出来吗另外这个矩阵其实不大,就算是real(8)也才24MB而已
楼主: py94g (...) 2012-05-07 13:38:00
我用10列3行来练习,写一组回圈分出两组,结果怎么写都不对分别写两个loop j和k就OK,那分1000组岂不是写1000次loop呢所以想请问大家是否有更好的写法不必写1000次loop分出1000组