爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18177|回复: 26

[分享资料] Grads 条件IF语句的问题

[复制链接]

新浪微博达人勋

发表于 2013-10-31 11:40:14 | 显示全部楼层 |阅读模式

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

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

x
我想判断每个格点上变量(shum)数值大于1e-05,并且在这个格点上画+,用if语句判断,结果并没有判断,而是所有的格点都画了+,这是为什么,是IF用的不对吗?
llon=30
while(llon<=180)
'set lon 'llon
llat=-30
while(llat<=60)
'set lat 'llat
'set t 1'
'set z 1'
'q w2xy 'llon' 'llat' '
x1=subwrd(result,3)
y1=subwrd(result,6)
if(shum>1e-05)
raw mark 1 'x1' 'y1' 0.1'
'set line 3 1 6'
endif
llat=llat+2.5
endwhile
llon=llon+2.5
endwhile
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-10-31 12:25:16 | 显示全部楼层
grads的判断好像不能简单地等同于fortran里面的吧,你这个虽然判断了变量的值,但是这个变量没有和经纬度建立联系,也就是你这个判断语句仅仅作用在了变量上,而对于经纬度却没有限制作用,所以就都化成那样的了。给你个清风帖子的连接,去看一下,可能会有收获的。

楼主完成之后可以来发帖分享一下,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-10-31 16:03:09 | 显示全部楼层

恩恩,好的。我试一试~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-10-31 17:30:55 | 显示全部楼层
river 发表于 2013-10-31 12:25
grads的判断好像不能简单地等同于fortran里面的吧,你这个虽然判断了变量的值,但是这个变量没有和经纬度建 ...

根据那个帖子我在Grads里一步一步运行了一下,到上面第三句的时候,显示
Syntax Error: Invalid Operand,这个是为什么,result不是不用定义吗?
搜狗截图13年10月31日1725_1.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-10-31 17:53:20 | 显示全部楼层
勇敢的悲伤 发表于 2013-10-31 17:30
根据那个帖子我在Grads里一步一步运行了一下,到上面第三句的时候,显示
Syntax Error: Invalid Operand ...

这个只能在gs里面用吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-10-31 19:06:27 | 显示全部楼层
river 发表于 2013-10-31 17:53
这个只能在gs里面用吧

哦哦,好的~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-1 10:36:11 | 显示全部楼层
本帖最后由 勇敢的悲伤 于 2013-11-1 14:00 编辑
river 发表于 2013-10-31 17:53
这个只能在gs里面用吧


现在我已经画出来了大于某个数值的区域,但是小于某个数值的区域仍然出现刚开始的情况(就是每个给点都会画上符号),这个是为什么呢?用subwrb函数得出的应该是字符串吧,这个怎么能直接和数字比较呢?

llon=30
while(llon<=180)
'set lon 'llon
llat=-30
while(llat<=0)
'set lat 'llat
'set t 1'
'set z 1'
'q w2xy 'llon' 'llat' '
x1=subwrd(result,3)
y1=subwrd(result,6)
'set gxout print'
'd shum.8'
res=result
ln=sublin(res,2)
i=1
while(i<=2257)
data=sublin(res,2)
a=subwrd(data,i)    → 此时a应该是字符串,怎么能和1e-05比较呢?
if(a>1e-05)            →  如果改为if(a<-1e-05) 画出来的图就没有判断直接全部画出符号
'draw mark 1 'x1' 'y1' 0.05'
'set line 8 1 7'
endif
i=i+1
endwhile
llat=llat+2.5
endwhile
llon=llon+2.5
endwhile
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-11-1 10:58:17 | 显示全部楼层
勇敢的悲伤 发表于 2013-11-1 10:36
现在我已经画出来了大于某个数值的区域,但是小于某个数值的区域仍然出现刚开始的情况(就是每个给点都会 ...

那是不是你的数据没有小于那个值的呢。我也不太会弄这几个函数命令,我帮你呼叫清风吧@mofangbao
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-11-1 11:04:16 | 显示全部楼层
river 发表于 2013-11-1 10:58
那是不是你的数据没有小于那个值的呢。我也不太会弄这几个函数命令,我帮你呼叫清风吧@mofangbao

有的,我画过这个变量的阴影图,是有比这个值小的数的。谢谢啦。。。多亏你的帮忙,现在成功一半了~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-11-1 12:57:05 | 显示全部楼层
river 发表于 2013-11-1 10:58
那是不是你的数据没有小于那个值的呢。我也不太会弄这几个函数命令,我帮你呼叫清风吧@mofangbao

你需要给出ctl的信息。
这种错误应该比较好查找,只要你在判断之前say一下变量的结果基本就能看出问题所在了。
我不知道你这里为什么是三重循环,如果说外面两层是经纬度的循环,那里面这个是什么,为什么每个点上都要进行2257次循环,而且这么多次用的是同一个res,也就是截取出来的a结果是一样的?
还有外层经纬度循环最好用x y的形式,而不是lon,lat,除非你明白lon、lat这种需要和数据点一一对应。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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