- 积分
- 111
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-7-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于一条线的的182个数据,有的地方的值为缺省值-99.9999,现在利用线性插值法给缺省的地方赋值,我的做法是选取一个缺省点,如果它后面两个点有值,就用后面两点为前面的缺省点赋值。循环从左到右,再从右到左,如此反复,直到没有缺省值为止。
程序:
program chazhi
2 implicit none
3 integer,parameter::IMT=182,JMT=85,KMT=30
4 integer::m,n,k,u,v,w
5 real(kind=4),dimension(IMT,JMT,KMT)::ts,tss
6
7
8 open(10,file="s00mn1_182X85X30",form="formatted",status="old")
9 open(20,file="czs00mn1_182X85X30",form="formatted",status="replace")
10 100 FORMAT(10F8.4)
11 DO k=1,KMT
12 READ(10,100),((ts(m,n,k),m=1,IMT),n=1,JMT)
13 END DO
14
15 do while(.true.)
16 v=51
17 w=1
18 do u=1,IMT
19 if(ts(u,v,w)==-99.9999.and.ts(u+1,v,w)/=-99.9999) then
20 if(ts(u+2,v,w)/=-99.9999)then
21 ts(u,v,w)=ts(u+1,v,w)+(-1)/(ts(u+2,v,w)-ts(u+1,v,w))
22 end if
23 end if
24 end do
25
26 do u=IMT,1,-1
27 if(ts(u,v,w)==-99.9999.and.ts(u-1,v,w)/=-99.9999) then
28 if(ts(u-2,v,w)/=-99.9999)then
29 ts(u,v,w)=ts(u-1,v,w)+(-1)/(ts(u-2,v,w)-ts(u-1,v,w))
30 end if
31 end if
32 end do
33
34 if(ts(u,51,1)/=-99.9999) exit ////// 感觉这个地方有问题,我想表达没有缺省值才退出整个循环的意思
35 end if
36 end do
37 print*,"333"
38
39 do u=1,IMT
40 write(20,100),ts(u,51,1)
41 end do
42 close(10)
43 close(20)
44
45 end program
麻烦高手们帮我看看,感谢啦
|
|