爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 19276|回复: 22

[分享资料] 我画的海温距平图为什么是错的?

[复制链接]

新浪微博达人勋

发表于 2012-10-17 15:09:20 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
不知道为什么会这样,也不知道怎么解决,那位大侠能告诉我下啊!!!

距平图就变成这样了

距平图就变成这样了

这是夏季的海温图

这是夏季的海温图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-17 16:25:35 | 显示全部楼层
gs贴上来吧,数据是咋样的,不然没法帮你~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-17 16:48:51 | 显示全部楼层

这是求距平的fortran程序:
program apm
integer,parameter   ::n=62,m=180*89
real            ::x(n,m),s,p(m),t(n,m)
open(11,file='xjsst.grd',form='unformatted',access='direct',recl=m)
do i=1,n
  
  read(11,rec=i) (x(i,j),j=1,m)
  
enddo   
close(11)
  
  do j=1,m
  s=0
   do i=1,n
   
    s=s+x(i,j)
        enddo
        p(j)=s/62
    do i=1,n
        t(i,j)=x(i,j)-p(j)
        enddo
        enddo

        open(12,file='jpxjsst.grd',form='unformatted',access='direct',recl=m)
        do i=1,n
         write(12,rec=i) (t(i,j),j=1,m)
         enddo
         close(12)


stop
end
    这个事距平的ctl:

dset d:/ktbg/lx/jpxjsst.grd
title noaa sst
undef -9.99e+33
xdef 180 linear 0 2
ydef 89 linear -88 2
zdef 1 linear 0 1
tdef 62 linear dec1948 1yr
vars 1
sst 1 -999
endvars
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-17 17:13:57 | 显示全部楼层
这样看来,你是先用fortran求的距平,然后用grads画的。有一个很重要的问题,就是你没考虑缺测值对求平均的影响。其实这个求距平你在grads里面用ave,定义变量就可以实现,而且会自行处理缺测值的问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-17 17:49:37 | 显示全部楼层
如果你要用fortran求距平,一定要考虑缺测值。因为缺测值是一个异常值,很大或很小,如32767等等。不同文件会不一样。所以用fortran的时候可能要用到if做下判断,遇到缺测跳过不能用,不能取平均。看你的距平图是沿着海岸线的,就能说明缺测值大对计算的影响了。用grads可以直接计算,先计算ave,再用每个值减去ave得距平。matlab识别缺测值为NaN,自动不作处理。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-18 10:43:21 | 显示全部楼层
做个霸气的木头 发表于 2012-10-17 17:13
这样看来,你是先用fortran求的距平,然后用grads画的。有一个很重要的问题,就是你没考虑缺测值对求平均的 ...

晕  那就是说我用fortran弄出来的距平文件就是错的咯?   不能用那个再做eof了?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-18 10:44:43 | 显示全部楼层
Aires 发表于 2012-10-17 17:49
如果你要用fortran求距平,一定要考虑缺测值。因为缺测值是一个异常值,很大或很小,如32767等等。不同文件 ...

好吧  grads感觉麻烦啊。。。。matlab见都没见过
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-18 10:51:53 | 显示全部楼层
Aires 发表于 2012-10-17 17:49
如果你要用fortran求距平,一定要考虑缺测值。因为缺测值是一个异常值,很大或很小,如32767等等。不同文件 ...

主要是grads不会用,necp上下的那个sst.mnmean.nc,你会不会求距平?教教我吧?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-18 12:06:29 | 显示全部楼层
这个很明显是由于陆地有缺测值,ctl缺测值设置错误。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-18 12:19:18 | 显示全部楼层
http://bbs.06climate.com/forum.php?mod=viewthread&tid=7483你可以看看这个帖子附件内容最后,有讲如何求矩平,其实就几行代码,不麻烦~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表