爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9757|回复: 28

[分享资料] 处理数据顺序不同导致出图结果不一样

[复制链接]
发表于 2013-3-30 09:44:19 | 显示全部楼层 |阅读模式

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

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

x
处理数据顺序不同可能会导致出图结果不一样。
大家有没有作图时发现如果处理数据的顺序不同,得到的图也不一样呢?
下面以画标准差场为例:
数据说明:
dset  d:\work\oisst\%y4%m2.dat
options template
undef  -999.9
title SST monthly for 1981.12-2003.02 derived with the revised OI version2 analysis
xdef 360 linear  0.5 1
ydef 180 linear  -89.5 1
zdef 1 linear  1 1
tdef 255 linear Dec1981 1mon
vars 1
sst     1   99   clim
endvars

作图要求:画冬季(12月~2月)SST标准差场

方案一:先提取逐年冬季(12月~2月)的SST场,共66个场,再对这66个场求标准差场。
*************提取冬季66个SST场***************
'reinit'
'open d:\work\oisst\oisstmon.ctl'
'set fwrite d:\work\winter.grd'
'set gxout fwrite'
'set x 1 360'
'set y 1 180'
'set z 1'
i=1
while(i<=255)
'set t 'i
'd sst'
j=1
while(j<=2)
'set t 'i+j
'd sst'
j=j+1
endwhile
i=i+12
endwhile
'disable fwrite'
*************画出冬季SST标准差场***************
'reinit'
'open d:\work\winter.ctl'
'set grads off'
'set grid off'
'set map 1 1 10'
'set lon 85 135'
'set lat 0 25'
'set z 1'
'set t 1 66'
'define anom=sst-ave(sst,t=1,t=66)'
'set t 1'
'set gxout shaded'
'set clevs 0.65'
'set rbcols 0 15'
'd sqrt(ave(anom*anom,t=1,t=66))'
'set gxout contour'
'set clskip 2'
'set clopts 1 0 0.15'
'd sqrt(ave(anom*anom,t=1,t=66))'
'printim d:\work\1.png white'
;
1.png
方案二:先对逐年冬季SST场做平均,即把每年12月~2月SST场做平均,得到22个场,再对这22个场求标准差场
************提取冬季(12月~2月平均)逐年SST场**************
'reinit'
'open d:\work\oisst\oisstmon.ctl'
'set fwrite d:\work\sst_winter_1981_2002.grd'
'set gxout fwrite'
'set x 1 360'
'set y 1 180'
'set z 1'
'set t 1'
i=1
while(i<255)
'd ave(sst,t='i',t='i'+2)'
i=i+12
endwhile
'disable fwrite'
****************画出冬季SST标准差场******************
'reinit'
'open d:\work\sst_winter_1981_2002.ctl'
'set grads off'
'set grid off'
'set map 1 1 10'
'set lon 85 135'
'set lat 0 25'
'set z 1'
'set t 1 22'
'define anom=sst-ave(sst,t=1,t=22)'
'set t 1'
'set gxout shaded'
'set clevs 0.65'
'set rbcols 0 15'
'd sqrt(ave(anom*anom,t=1,t=22))'
'set gxout contour'
'set clskip 2'
'set clopts 1 0 0.15'
'd sqrt(ave(anom*anom,t=1,t=22))'
'printim d:\work\work4_rms.png white'
;
work4_rms.png
大家可以讨论下这种问题~
密码修改失败请联系微信:mofangbao
发表于 2013-3-30 10:35:48 | 显示全部楼层
学习学习,感谢分享
密码修改失败请联系微信:mofangbao
发表于 2013-3-30 14:29:17 | 显示全部楼层
谢谢楼主,我觉得可能是在grads的读取数据的默认方式不同,也就是说,第一副图,他读取的是第66个场,冬季的数据,而第二幅图,他读得是第二十二个冬季场的标准差场。我觉得作者在grads上绘图时,是否会出现一些屏幕(闪屏),然后屏幕定格在作者出来的这两幅图?
密码修改失败请联系微信:mofangbao
发表于 2013-3-30 14:38:03 | 显示全部楼层
第二种方案里的'd ave(sst,t='i',t='i'+2)'是有点儿问题的吧,t='i'+2这个理论上是不错的,不过放在ave函数里就有点儿问题了,他识别不了代数式,也就是后面那个+2等于没用。但是可以设置一个j='i'+2然后ave(sst,t='i',t='j')这样的
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-30 15:21:01 | 显示全部楼层

按照你的说法我试了下,这两种方法出来的图是不一样的,那哪个是正确的呢?
work4_rms.png
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-30 15:22:41 | 显示全部楼层
小小人 发表于 2013-3-30 14:29
谢谢楼主,我觉得可能是在grads的读取数据的默认方式不同,也就是说,第一副图,他读取的是第66个场,冬季的 ...

不是默认方式,是我用两种不同的方法处理的数据然后画的图。
密码修改失败请联系微信:mofangbao
发表于 2013-3-30 15:50:14 | 显示全部楼层
Aires 发表于 2013-3-30 15:21
按照你的说法我试了下,这两种方法出来的图是不一样的,那哪个是正确的呢?

楼主方案一里提取资料循环那一块看着好别扭,我感觉有可能是那个问题
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-30 17:03:33 | 显示全部楼层
river 发表于 2013-3-30 15:50
楼主方案一里提取资料循环那一块看着好别扭,我感觉有可能是那个问题

带进去看这样提出来的应该是每年冬季的SST啊
密码修改失败请联系微信:mofangbao
发表于 2013-3-30 18:11:24 | 显示全部楼层
Aires 发表于 2013-3-30 17:03
带进去看这样提出来的应该是每年冬季的SST啊

您这个逻辑思维太强大了,我就有点想不明白,怎么就是每年的12月~2月呢。第一次循环i=1的时候,j=1
第二次的时候i=13,j=15?这不太对啊
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-3-30 18:28:28 | 显示全部楼层
river 发表于 2013-3-30 18:11
您这个逻辑思维太强大了,我就有点想不明白,怎么就是每年的12月~2月呢。第一次循环i=1的时候,j=1
第二 ...

第一次循环的时候i=1,set t 1 ,j=1,set t i+j  就是set t 2 再循环是set t 3,然后是i=13,j=1,再循环没错啊
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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