爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8676|回复: 22

[分享资料] 急求助!程序出错!!用08年平均高度场和1960-2007年同时期48年平均高度场做距平!

[复制链接]

新浪微博达人勋

发表于 2013-4-11 10:45:29 | 显示全部楼层 |阅读模式

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

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

x
我想用2008年1月10日至2月2日的平均高度场减去1960年至2007年48年合成的同期平均高度场来做一个距平场,程序如下:

'reinit'

'sdfopen f:\paper\necp\hgt\hgt.2008.nc'
'set lon 20 160'
'set lat 0 75'
'set lev 500'
'define a=ave(hgt.1,t=10,t=33)'

i=1960
kk=2
while(i<=2007)
'sdfopen f:\paper\necp\hgt\hgt.'i'.nc'
'set dfile 'kk''
'set lon 20 160'
'set lat 0 75'
'set lev 500'
'define j=ave(hgt.'kk',t=10,t=33)'
'ju=ju+j'
i=i+1
kk=kk+1
endwhile

'enable print e:\pp\hgtjuping.gmf'
'set ccolor 1'
'd (a-ju)'
'print'
'disable print'
'reinit'

运行结果如图:
未命名.jpg
我是一个编程菜鸟,能编出上诉程序对我来说已是最大能力了,但是现在出错了,完全不知道该怎么调试!求各位大神帮助啊!!!!!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-4-11 12:11:05 | 显示全部楼层
把你现有的资料是什么样子的说一下 虽然看程序能猜出一些 但是你还是不应该让别人猜的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-11 12:20:16 | 显示全部楼层

啊?抱歉抱歉,不是我让别人猜,是我根本没意识到要把我现有的资料是什么样子的说一下...而且把我现有的资料是什么样子的说一下是什么意思啊我这里用到的资料是ncep,1960年到2008年的高度场再分析资料。{:eb315:}我这么说对么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-11 12:20:49 | 显示全部楼层
   很简单明了啊,错误提示里面不都告诉你了嘛,打不开那些nc文件或者不存在那些文件。sdfopen f:\paper\necp\hgt\hgt.'i'.nc 你写的这句里面的路径对不对啊, 这个路径下有没有hgt.1960.nc  hgt.1961.nc  ······· hgt.2007.nc这些文件啊。这还用得找发帖问吗,最基本的文件都没打开,你那些计算过程有没有错根本就不重要,因为根本到不了计算那一步啊。
  另外就是计算过程中你已经设置了'set dfile 'kk'',就没必要在变量后面加.2   .3什么的了。还有'ju=ju+j'在gs里这么写估计不行吧,还有'd (a-ju)' 可不是一个距平值吧,这么写肯定也会出错。 楼主先把最基本的问题解决了再说吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-11 20:24:55 | 显示全部楼层
river 发表于 2013-4-11 12:20
很简单明了啊,错误提示里面不都告诉你了嘛,打不开那些nc文件或者不存在那些文件。sdfopen f:\paper\ne ...

好吧,不管这么说,先谢谢你帮我发现我犯了一个低级错误,后面的东西我慢慢调,然后,同学,我惹着你了么?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-11 20:58:15 | 显示全部楼层
开心耗子 发表于 2013-4-11 20:24
好吧,不管这么说,先谢谢你帮我发现我犯了一个低级错误,后面的东西我慢慢调,然后,同学,我 ...

没有啦最近有人老是问一些莫名其妙的好像他根本没有接触过grads的问题,还要问得让人感觉他很在行似的,所以有时候说话打字火气大了点儿
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-11 21:09:26 | 显示全部楼层
river 发表于 2013-4-11 20:58
没有啦最近有人老是问一些莫名其妙的好像他根本没有接触过grads的问题,还要问得让人感觉他很在 ...

明白,因为我本人也反感那种装牛逼的,所以我在下面特别强调了我是这个菜鸟,我没说谎啊.....{:eb303:}这个程序是我照书的各种例子一点点拼凑起来的,结果打头就写错了,我文件夹是ncep,我写成necp了....然后我最清楚的就是我ju=ju+j那里绝对有错,但是我不知道该怎么用个循环把1960年到2007年1月10号到2月2号的高度场做个平均......不过同学谢谢你火大还愿意指出我的错误啊~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-11 21:30:25 | 显示全部楼层
开心耗子 发表于 2013-4-11 21:09
明白,因为我本人也反感那种装牛逼的,所以我在下面特别强调了我是这个菜鸟,我没说谎啊.....{: ...

这个和新手没关系,即使是新手你也不能问诸如有没有教人编ctl文件的书啊,怎么才能用gs批量描述ctl啊之类的问题吧。
不说这个,说你的问题。你的在循环里已经做过了啊,'define j=ave(hgt.'kk',t=10,t=33)' 这句就是。把后面的kk去掉吧。然后做距平也是一样的道理啊,求一个平均就做一个距平不是正好么,这么说你就明白了吧,求距平也要放在循环里啊。
改一下吧:
'reinit'

'sdfopen f:\paper\necp\hgt\hgt.2008.nc'
'set lon 20 160'
'set lat 0 75'
'set lev 500'
'define a=ave(hgt.1,t=10,t=33)'

'enable print e:\pp\hgtjuping.gmf'
i=1960
kk=2
while(i<=2007)
'sdfopen f:\paper\necp\hgt\hgt.'i'.nc'
'set dfile 'kk''
'set lon 20 160'
'set lat 0 75'
'set lev 500'
'define j=ave(hgt,t=10,t=33)'
'set ccolor 1'
'd (a-j)'
'print'
'c'
i=i+1
kk=kk+1
endwhile
'disable print'
;
这个不保证你一运行就能成功,但总体来说已经没问题了,按照错误提示稍微修改就能出来了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-11 21:37:20 | 显示全部楼层
开心耗子 发表于 2013-4-11 21:09
明白,因为我本人也反感那种装牛逼的,所以我在下面特别强调了我是这个菜鸟,我没说谎啊.....{: ...

还有一点我没明白,你是想用a减掉每一年1月10号到2月2号的平均高度场,得到48张异常场的图,还是要把48年的1月10号到2月2号的平均高度场再做平均,左后用a去减得到一张图?如果你的想法是前者,那我修改的gs就能达到,如果是后者那就还需要修改
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-11 21:49:44 | 显示全部楼层
river 发表于 2013-4-11 21:37
还有一点我没明白,你是想用a减掉每一年1月10号到2月2号的平均高度场,得到48张异常场的图,还是要把48年 ...

是后者~~不过谢谢啦~我刚刚....用了最笨的方法...一个个set dfile 1,2,3...49,然后一个个a1=ave(...),a2=ave(..).....终于弄出我想要的结果,但是我也很想知道怎么弄一个循环就可以解决的方法 1960-2007.png ,求指教啊!!!!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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