- 积分
- 9447
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-4-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 aa22556688 于 2014-8-31 11:25 编辑
看了下面的代码,可以帮助一些同学求单个时次的异常场,但是这并不是我想要的结果 !!!
想求一个数据里面所有时间的异常场,例如,数据是1971.1-2000.12共360个月,每个月是一个场,现想求所有时间序列的异常场,但是总求不对,求高手给指点迷津!!!
'reinit'
'sdfopen sst.mnmean.nc'
tt=1 *** 此处,求气候态,已验证没有问题*****
while(tt<=12)
ts=1512+tt
td=1860+tt
'define aa'tt'=ave(sst,t='ts',t='td',12)'
tt=tt+1
endwhile
'define aa0=aa12'
*** 问题在下面的循环的define ***
tt=1 *循环求每个时间场的距平场。但是没有办法生成时间序列的距平场 ****
while(tt<=1927)
ii=math_mod(tt,12)
'set t 'tt''
'define temp=sst-aa'ii'' *** 此处define,会把上一个时次的场覆盖 ***
tt=tt+1 *** 所以现在问题来,有没有方法,让每次循环不覆盖上次的结果,而生成一个时间序列的异常场 ***
endwhile
‘set t 12’
‘d temp’
*我的目的:设置个时间,就可以画出对应时间的距平场,但是由于define会覆盖上一次循环的结果,最后画出来的始终是 t=1927那个时次的距平场
;
整个过程就是 define的问题,能不能让循环生成一个时间序列的异常场(例如 tloop和aave的搭配),这样想画哪个时次的距平场,直接在后面设置 t 就可以画出来了,这样既方便,还可以解画话距平折线的问题。
Grads的时间维太不人性化{:soso_e150:},始终没有理解这个问题,求高手给指点迷津,不仅感激!!!
***以下是解决方法***
'reinit'
'sdfopen sst.mnmean.nc'
'set t 1 12'
'define sstclim=ave(sst,t+1512,t=1872,12)'
'modify sstclim seasonal'
'set t 1 last'
'define anom=sst -sstclim' *** 这样整个数据就都变成时间序列的异常场,求一个区域异常场的逐年演变也会很方便 ****
‘set t 12’
‘d anom’
;
感谢lqouc的指点!!!{:soso_e142:}
来自群组: 成于大气 信达天下 |
|