爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10674|回复: 9

[作图] dim_avg_n函数求平均

[复制链接]

新浪微博达人勋

发表于 2015-8-31 18:29:19 | 显示全部楼层 |阅读模式

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

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

x
有一组grib2数据,利用systemfunc,以及ListSetType等批量读入,需要求某一段时间的海平面气压平均,利用dim_avg_n(p,0)可以得到所读取的所有grib2数据的平均,但是有个问题,比如我读入了9个时间段的grib2数据,时间是从2014年6月1日00时开始,6月3日06时结束,但是我只想求其中某一段时间,譬如6月1日00时-2日00时,这时候问题就出来了: dim_avg_n(p,0)是对p的第一维度求平均,但是如何选择性的对所读取的数据(譬如第一个时间段到第四个时间段)求平均呢,第一次发帖,问题表达的不是很清楚,请见谅!




-------------------------------------------------------
begin
;---Open some netCDF files.
diri = "/home/tl/grib2/"   ; input directory
fils = systemfunc ("ls " + diri + "*.grib2" ) ; file paths
f    = addfiles (fils, "r")   
ListSetType (f, "join")       ; join
; print(f)
;---Read variables off the file and do some conversions.
p    = f[:]->PRES_P0_L101_GLL0
p_ave=dim_avg_n(p,0)
;printVarSummary(p_ave)  
xwks=gsn_open_wks("ps","prs")
plot=gsn_contour(xwks,p_ave,False)

end

-----------------------------------------------------------
p变量如下,他是一个三维数组,第一个维度可以理解为时间,

Variable: p
Type: float
Total Size: 2345760 bytes
            586440 values
Number of Dimensions: 3
Dimensions and sizes: [ncl_join | 9] x [lat_0 | 181] x [lon_0 | 360]
Coordinates:
            lat_0: [90..-90]
            lon_0: [ 0..359]


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

新浪微博达人勋

 楼主| 发表于 2015-8-31 19:04:31 | 显示全部楼层
有同学帮忙解答一下吗??
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-31 20:20:39 | 显示全部楼层
dim_avg_n(p(a:b,:,:),0)
a、b是时间的起终点。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-8-31 20:46:52 | 显示全部楼层
clarmy 发表于 2015-8-31 20:20
dim_avg_n(p(a:b,:,:),0)
a、b是时间的起终点。

可以了,感谢,思维被套到笼子里去了,哈哈
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-8-31 20:53:21 | 显示全部楼层
hnqx 发表于 2015-8-31 20:46
可以了,感谢,思维被套到笼子里去了,哈哈

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

新浪微博达人勋

发表于 2016-5-29 15:50:32 | 显示全部楼层
clarmy 发表于 2015-8-31 20:20
dim_avg_n(p(a:b,:,:),0)
a、b是时间的起终点。

你好如果求那个经纬度区域的平均,但是分辨率是0.5*0.5的应该怎么办呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-31 23:14:12 | 显示全部楼层
当时年少春衫薄 发表于 2016-5-29 15:50
你好如果求那个经纬度区域的平均,但是分辨率是0.5*0.5的应该怎么办呢

按角标计算起点和终点。
比如,0.5*0.5的分辨率,经纬范围是10*10。那么实际上的格点数就是21*21,那么经纬坐标中(1.5,2.5)的角标实际上就是(1.5/0.5-1=2,2.5/0.5-1=4)。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-1 10:49:12 | 显示全部楼层
clarmy 发表于 2016-5-31 23:14
按角标计算起点和终点。
比如,0.5*0.5的分辨率,经纬范围是10*10。那么实际上的格点数就是21*21,那么 ...

哦哦是这样,谢谢啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-6 15:23:48 | 显示全部楼层
本帖最后由 好久不见! 于 2018-5-6 15:25 编辑
clarmy 发表于 2015-8-31 20:20
dim_avg_n(p(a:b,:,:),0)
a、b是时间的起终点。

您好,如果想要计算的是指定高度范围内的平均应该怎么做呢?请问您知道吗?我只会插值到某一高度层,但是不会求指定高度范围内的平均呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-8-10 18:54:19 | 显示全部楼层
hnqx 发表于 2015-8-31 20:46
可以了,感谢,思维被套到笼子里去了,哈哈

dim_avg_n(p(a:b,:,:),0)
a、b是时间的起终点。
请问时间的起终点是需要用索引表示吗?如果是,怎么得到需要求平均的时间起终点的索引?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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