爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9815|回复: 19

[秀图] aave与ave函数求助!!!

[复制链接]
发表于 2014-8-9 15:27:21 | 显示全部楼层 |阅读模式

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

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

x
求两块海洋 3-5月份海平面高度差的逐年演变,数据有138年,都是月均值,先求面积平均,然后在求3-5月的时间平均,画折线图,为什么不出图,而且还没有错误提示。
我的做法是,先用aave求每年的高度差的面积平均,得到一个1656时次的时间序列,然后在从这个时间序列中挑出每年的3-5月求平均,最后得到138个时次的平均海平面高度差,单独求面积平均或者时间平均都可以出图,放到一起求就不出图了,求高手给点指点,ave和aave联合起来用确实困扰好久了!!!


'reinit'
'open G:\data\zhihou\sea_surface_height.ctl'
'set grid off'
'set grads off'
'set timelab off'
'set x 1'
'set y 1'
'set z 1'
'set t 1 1656'
'define h1=tloop(aave(ssh,lon=130,lon=170,lat=0,lat=40))'
'define h2=tloop(aave(ssh,lon=50,lon=90,lat=-10,lat=20))'
'define h=h1-h2'

tt=1
while(tt<=138)
ts=(tt-1)*12+3
td=ts+2
'd ave(h,t='ts',t='td')'
tt=tt+1
endwhile
;
来自群组: 成于大气 信达天下
QQ截图20140809151837.png
密码修改失败请联系微信:mofangbao
发表于 2014-8-9 18:25:47 | 显示全部楼层

回帖奖励 +10 金钱

你的  'd ave(h,t='ts',t='td')'  有点问题,d 在循环里面了,就是说每次只画了一个点(一年的春季平均值),你用这个程序单独对时间求出来的图是平面分布图,不是时间序列吧。
你先定义一个变量把所有年的先求出来,再把d 放在循环外面对其绘图看看。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-9 19:04:11 | 显示全部楼层
苏涛 发表于 2014-8-9 18:25
你的  'd ave(h,t='ts',t='td')'  有点问题,d 在循环里面了,就是说每次只画了一个点(一年的春季平均值) ...

按照正常来说是一个平面,但是我最前面用 aave函数已经久了区域平均,然后在用这个来求,每循环一次话一个点,然后就是一跳折线,但不知道为什么grads实现起来这么难。
密码修改失败请联系微信:mofangbao
发表于 2014-8-9 19:52:16 | 显示全部楼层
好像是不能直接绘图
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-9 19:53:40 | 显示全部楼层
一水天下 发表于 2014-8-9 19:52
好像是不能直接绘图

那要是画这种图怎么办,没有办法实现么?
密码修改失败请联系微信:mofangbao
发表于 2014-8-9 21:35:09 | 显示全部楼层
aa22556688 发表于 2014-8-9 19:53
那要是画这种图怎么办,没有办法实现么?

可以的,在循环中写入文件,然后另外绘图。。

评分

参与人数 1金钱 +10 收起 理由
aa22556688 + 10 很给力!

查看全部评分

密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-9 22:42:34 | 显示全部楼层
一水天下 发表于 2014-8-9 21:35
可以的,在循环中写入文件,然后另外绘图。。

那就需要把计算的结果保存,然后在读取这个数据画图呗?
密码修改失败请联系微信:mofangbao
发表于 2014-8-9 23:01:07 来自手机 | 显示全部楼层
aa22556688 发表于 2014-8-9 22:42
那就需要把计算的结果保存,然后在读取这个数据画图呗?

是这样的
密码修改失败请联系微信:mofangbao
发表于 2014-8-10 06:19:47 | 显示全部楼层
不是我会的语言,不了解.
密码修改失败请联系微信:mofangbao
发表于 2014-8-10 09:14:28 | 显示全部楼层
你可以把那一段修改一下
tt=3
while(tt<=138*12)
'define aver=(h,t='ts',t='tt'+3)'
tt=tt+12
endwhile
'd aver'
可以试试看
(我没太搞懂你这138年的数据是如何存放的,你while循环的时候,tt=1到138,ts循环月份,如果是这样的,也就是说,你的文件里的时间应该是12*138这么多个月存放的,像我这样做循应该可以的。我理解不对的地方还请见谅!)

评分

参与人数 1金钱 +10 收起 理由
aa22556688 + 10 非常感谢解答!!!

查看全部评分

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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