爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
12
返回列表 发新帖
楼主: nuistzhou

[分享资料] 有关用指数时间序列画直方图的问题

[复制链接]

新浪微博达人勋

 楼主| 发表于 2012-5-18 18:19:26 | 显示全部楼层

嗯,原理差不多。不过我这里要求的是一个变量40年来在2个区域的距平差作为一个指数。因此有40个距平差值。我下午把40年的夏季值提到了一个grd里,再处理,那么做区域平均的时候,还需不需要在前面加上  set t 1 40
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-5-18 19:05:33 | 显示全部楼层
先把距平值提取出来到一个单独的文件中
然后使用这个文件中的两个变量相减(如果不需要距平值,就直接写出距平相减的值就行了)来作图

  1. 'reinit'
  2. 'sdfopen K:\ncep\pressure\uwnd.mon.mean.nc '
  3. 'set gxout fwrite'
  4. 'set fwrite K:\ncep\uwnd.anomaly.grd'
  5. i=282
  6. 'set lev 850'


  7. 'define sumave1=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)'
  8. 'define sumave2=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)'

  9. i=i+12

  10. #40年夏季的区域平均
  11. while(i<=750)
  12.     'sumave1=sumave1+aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)'
  13.     'sumave2=sumave2+aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)'
  14.     i=i+12
  15. endwhile
  16. *all year-summer aave
  17. 'sumave1 = sumave1/40.0'
  18. 'sumave2=sumave2/40.0'

  19. #每年夏季的区域平均
  20. i=282
  21. 'set lev 850'
  22. 'set x 1'
  23. 'set y 1'
  24. 'set z 1'
  25. 'define summer1=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)'
  26. 'define summer2=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)'
  27. 'd summer1'
  28. 'd summer2'
  29. i=i+12
  30. while(i<=750)
  31. #提取距平数据
  32.     'summer1=sumave1-aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)'
  33.     'summer2=sumave2-aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)'
  34.     'd summer1'
  35.     'd summer2'
  36.     i=i+12
  37. endwhile
  38. 'disable fwrite'
  39. ;


输出的文件对应的ctl
  1. dset K:\ncep\uwnd.anomaly.grd
  2. title testdata
  3. undef -9.99e+33
  4. xdef 1 linear 1 1
  5. ydef 1 linear 1 1
  6. zdef 1 linear 1 1
  7. tdef 40 linear jan1958 1yr
  8. vars 2
  9. an1 0 99 an1 data
  10. an2 0 99 an2 data
  11. endvars


剩下的自己搞定吧,最基础的东西了,出来的图上面贴过了,直接是两个距平的数据做的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-5-18 19:12:01 | 显示全部楼层
上面CTL中的开始年份乱写的,没去仔细算,你自己改一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-5-18 21:38:00 | 显示全部楼层
mofangbao 发表于 2012-5-18 19:12
上面CTL中的开始年份乱写的,没去仔细算,你自己改一下

清风,在你的基础上小改了一下:
'reinit'
'sdfopen e:\uwnd.mon.mean.nc '
'set gxout fwrite'
'set fwrite e:\uwnd.grd'
i=282

'define s1=0'
'define s2=0'
while(i<=750)
    'set lev 850'
    'define sumave1=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)'  
    'define sumave2=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)'
   
's1=s1+sumave1'
's2=s2+sumave2'
  i=i+12
endwhile

's1=s1/40.0'
's2=s2/40.0'

i=282
'set lev 850'
while(i<=750)
    'juping1=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=41,y=45)-s1'
    'juping2=aave(ave(uwnd,t='i',t='i'+2),x=41,x=61,y=47,y=51)-s2'
    'd juping1-juping2'
    i=i+12
endwhile
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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