主题:fortran 中读取指定数据
west4500
[专家分:0] 发布于 2010-09-15 10:00:00
数据是两个时间点的
回复列表 (共5个回复)
沙发
jstzhurj [专家分:4680] 发布于 2010-09-15 10:57:00
我的意思是至少包含两组360*180的数据,你能明白不?上传的数据可以在原帖替换,不必新开帖子吧?
板凳
jstzhurj [专家分:4680] 发布于 2010-09-15 11:17:00
你的数据总量是360*354,离360*180*2 还差一点点,你就多保留些吧。
3 楼
west4500 [专家分:0] 发布于 2010-09-15 12:15:00
老师,里面是2个时间点的,180*360*2*52(行)
4 楼
jstzhurj [专家分:4680] 发布于 2010-09-15 12:26:00
[quote]老师,里面是2个时间点的,180*360*2*52(行)[/quote]
你总共18744行!从341行开始是数据,就算你每行7个数据,满打满算(18744-341+1)*7=128828个数据,离360*180*2=132480还差多少?还没算有些行不足7个数据!跟你争有什么意义呢?[em26][em26][em27][em46]
5 楼
jstzhurj [专家分:4680] 发布于 2010-09-15 14:16:00
哎,直接发段程序你研究研究吧
program main
implicit none
character(len=80)::str
real,dimension(360):: pres
integer:: i,k,t1,t2,lo1,lo2,la1,la2,dim
real::j
open(10,file='shuju.txt',status='old')
open(20,file='out.txt',status='unknown')
write(*,*) '--->please input total time steps and the current time step(int: t1,t2):'
read(*,*) t1,t2
write(*,*) '--->please input the range of longitude(int: lo1,lo2(1-360)):'
read(*,*) lo1,lo2
write(*,*) '--->please input the range of latitude(int: la1,la2(-90-90)):'
read(*,*) la1,la2
dim=lo2-lo1+1
do while (.true.)
read(10,'(a)',end=100) str
if (index(str,'pres =').ne.0) then
do i=1,t1
do j=-89.5,89.5,1.
read(10,*,end=100) pres
if (i==t2.and.j<la2.and.j>la1) write(20,200) (pres(k),k=lo1,lo2)
enddo
enddo
endif
enddo
100 close(10)
200 format(<dim>f10.2)
close(20)
end program
我来回复