- 积分
- 4646
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2014-8-21
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2015-3-26 09:46:46
|
显示全部楼层
上面这一小段这是我编的一个类似程序里的一段,是用来求标准化距平的,完整的程序如下,里面也有很多对缺测的处理,我主要是想不考虑缺测,缺测不参与运算,还麻烦版主再帮我看一下,下面这个程序在处理缺测方面是否正确
program main
parameter(mo=12,my=32,nx=105,ny=16,mt=384)
real tmsu2(mo,my,nx,ny),avf(mo,nx,ny),df(mo,nx,ny)
real tmsu(nx,ny,mt),tmsu3(nx,ny,mt)
integer cc
open(1,file='D:\by\evalution_MSU_AMSU_BT\evalution\MSU_AMSU\AMSU\
&long_term\total_ocean\lev700_TMT_1981_2012.grd',form='binary')
do it=1,mt
read(1) ((tmsu(i,j,it),i=1,nx),j=1,ny)
end do
do iy=1,my
do im=1,mo
kk=(iy-1)*12+im
do i=1,nx
do j=1,ny
tmsu2(im,iy,i,j)=tmsu(i,j,kk)
end do
end do
end do
end do
do im=1,mo
do i=1,nx
do j=1,ny
avf(im,i,j)=0.0
cc=0
do iy=1,my
if(tmsu2(im,iy,i,j).ne.-9999.000) then
avf(im,i,j)=avf(im,i,j)+tmsu2(im,iy,i,j)
else
cc=cc+1
endif
end do
if(cc.eq.0) then
avf(im,i,j)=avf(im,i,j)/real(my)
else
avf(im,i,j)=-9999.000
endif
end do
end do
end do
do im=1,mo
do iy=1,my
do i=1,nx
do j=1,ny
if(tmsu2(im,iy,i,j).ne.-9999.000.and.avf(im,i,j).ne.-9999.000)then
tmsu2(im,iy,i,j)=tmsu2(im,iy,i,j)-avf(im,i,j)
else
tmsu2(im,iy,i,j)=-9999.000
endif
end do
end do
end do
end do
do im=1,mo
do i=1,nx
do j=1,ny
df(im,i,j)=0.0
cc=0
do iy=1,my
if(tmsu2(im,iy,i,j).ne.-9999.000)THEN
df(im,i,j)=df(im,i,j)+tmsu2(im,iy,i,j)*tmsu2(im,iy,i,j)
else
cc=cc+1
endif
end do
if(cc.eq.0)then
df(im,i,j)=SQRT(df(im,i,j)/real(my))
else
df(im,i,j)=-9999.000
endif
end do
end do
end do
do im=1,mo
do iy=1,my
do i=1,nx
do j=1,ny
If(tmsu2(im,iy,i,j).ne.-9999.000.and.df(im,i,j).ne.-9999.000)then
tmsu2(im,iy,i,j)=tmsu2(im,iy,i,j)/df(im,i,j)
else
tmsu2(im,iy,i,j)=-9999.000
endif
end do
end do
end do
end do
do iy=1,my
do im=1,mo
kk=(iy-1)*12+im
do i=1,nx
do j=1,ny
tmsu3(i,j,kk)=tmsu2(im,iy,i,j)
end do
end do
end do
end do
open(2,file='D:\by\evalution_MSU_AMSU_BT\evalution\MSU_AMSU\AMSU\
&long_term\total_ocean\TMT_zhun_lev700.grd',form='binary')
do it=1,mt
write(2)((tmsu3(i,j,it),i=1,nx),j=1,ny)
end do
END |
|