爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 20746|回复: 10

[脚本编辑] grads上显示syntax error,error occured on line 13,但我不知道rr=tt+2这里哪里错了

[复制链接]

新浪微博达人勋

发表于 2021-2-7 10:51:32 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 afterrain_29 于 2021-2-7 10:53 编辑

'reinit'
'sdfopen c:/data/sst.mnmean.v4.nc'

'set gxout fwrite'
'set fwrite c:/data/sst/sst1981-2019.grd'
'set x 1 180'
'set y 1 89'
ss=1
tt=1536
while(tt<=1992)
'set t 'ss''
if(sst!=-9.96921e+36)
        rr=tt+2
        'define sst1=ave(sst,t='tt',t='rr')'        
else
        sst1=-9.96921e+36               
endif
'd sst1'
tt=tt+12
ss=ss+1
endwhile
'disable fwrite'
;

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-2-7 11:05:59 | 显示全部楼层
试试 rr=‘tt’+2
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-7 11:12:35 | 显示全部楼层

试过了,依然是这条报错信息。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-7 11:16:39 | 显示全部楼层
        'define rr=‘tt’+2‘
        'define sst1=ave(sst,t='tt',t=rr)'
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-7 11:21:09 | 显示全部楼层
占戈示申 发表于 2021-2-7 11:16
'define rr=‘tt’+2‘
        'define sst1=ave(sst,t='tt',t=rr)'

我又试过了,还是一样的报错信息。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-7 11:22:03 | 显示全部楼层
本帖最后由 lightmoon 于 2021-2-7 11:26 编辑

感觉有可能是if这个判断的问题,if(sst!=-9.96921e+36),我没写过这样的判断,GrADS可以直接判断一个文件变量内的值吗,而且你判断的是一个nx*ny的数组,且sst1=-9.96921e+36这句应该加上define
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-7 11:27:14 | 显示全部楼层
lightmoon 发表于 2021-2-7 11:22
感觉有可能是if这个判断的问题,if(sst!=-9.96921e+36),我没写过这样的判断,GrADS可以直接判断一个文件变 ...

您说得好像有点道理哦,那我还是采用迂回办法,先去fortran处理一下再倒腾回grads。我就是想试验一下能不能用grads一步到位。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-7 11:27:23 | 显示全部楼层
'reinit'
'sdfopen c:/data/sst.mnmean.v4.nc'
'set gxout fwrite'
'set fwrite c:/data/sst/sst1981-2019.grd'
'set x 1 180'
'set y 1 89'
ss=1
tt=1536
while(tt<=1992)
'set t 'ss
if(sst!=-9.96921e+36)
        rr=’tt’+2
        'define sst1=ave(sst,t='tt',t='rr')'        
else
        sst1=-9.96921e+36               
endif
'd sst1'
tt=tt+12
ss=ss+1
endwhile
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-2-7 11:29:56 | 显示全部楼层
占戈示申 发表于 2021-2-7 11:27
'reinit'
'sdfopen c:/data/sst.mnmean.v4.nc'
'set gxout fwrite'

试过了,还是不行。我觉得很有可能就是有位网友说的不能用Grads对数组进行if判别。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-2-7 11:33:05 | 显示全部楼层
本帖最后由 lightmoon 于 2021-2-7 11:38 编辑
afterrain_29 发表于 2021-2-7 11:29
试过了,还是不行。我觉得很有可能就是有位网友说的不能用Grads对数组进行if判别。

测试过了,不能判断,你想一步到位也不是不行,你加上对x,y的循环,display变量,然后用sublin和subrwd截取变量在result中的值,然后在判断就行了~~类似于这样~~

'reinit''sdfopen f:\data\ssw\uwnd.2018.nc'
'set x 1'
'set y 1'
'set cache 6e+08'
'd uwnd '
'd uwnd '
*say result
f=sublin(result,1)
ff=subwrd(f,4)
say ff
if(ff>3)
    say "uwnd>3?"
    say yes
else
    say no
endif;
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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