爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7418|回复: 6

使用conform_dims不足维数

[复制链接]
发表于 2014-4-27 15:56:41 | 显示全部楼层 |阅读模式
NCL
系统平台: CYGWIN
问题截图:
问题概况: 我有一个是2维的数组的变量,变量有12个不同月份的,想要做一下月平均,可是没有了时间维.
我看过提问的智慧: 看过
自己思考时长(天): 2

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

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

x
本帖最后由 chongzika 于 2014-4-27 16:25 编辑

函数使用时,总是显示错误,看了半天官网还是不懂怎么使用的,具体维数怎么定义的搞不懂。files=systemfunc("ls ./1995-*.nc")f   =addfiles(files,"r")
E0=f[:]->DSTSFDRY
lat=f[0]->lat
lon=f[0]->lon
nlat = dimsizes(lat)
nlon = dimsizes(lon)

E=new((/96,144/),float)
E1=conform_dims((/12,96,144),E0,(/1,2/))
E=dim_avg_n_Wrap(E1,0)
E!0="lat"
E!1="lon"
printVarSummary(E)


密码修改失败请联系微信:mofangbao
发表于 2014-4-29 10:24:34 | 显示全部楼层
chongzika 发表于 2014-4-28 19:31
可以解决,这个函数读取数据会直接增加一维,不过那个conform_dims函数还是没不明白,总之,感谢你解决了 ...

conform_dims,还有conform,根据官网的解释和例子应该都可以弄懂。继续你贴出的代码,E0为(/12, 96, 144/)的数组,E为(/96, 144/)的数组,现在要求每月与年均值的差值。显然,E0和E直接相减肯定不行,两者大小不一致;可以用循环,循环12次,作12次减法就行;比较符合ncl程序惯例的做法是,将E复制12次,变为和E0结构相同的数组,然后直接相减,这个复制的工作就由conform或者conform_dims完成。

E1 = conform_dims((/12, 96, 144/), E, (/1, 2/))
anom = E0 - E1
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

发表于 2014-4-27 15:58:13 | 显示全部楼层
不懂,还是给楼主顶顶
密码修改失败请联系微信:mofangbao
发表于 2014-4-27 21:18:33 | 显示全部楼层
估计是缺少这条语句:ListSetType (f, "join") 。
一些关键变量的信息最好贴出来,比如1995-*.nc是否每个代表一个月?DSTSFDRY的维数信息如何?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-28 08:34:06 | 显示全部楼层
longlivehj 发表于 2014-4-27 21:18
估计是缺少这条语句:ListSetType (f, "join") 。
一些关键变量的信息最好贴出来,比如1995-*.nc是否每个 ...

QQ截图20140428082415.png 数据是这样子的每个都代表一个月, QQ截图20140428082829.png
QQ截图20140428082913.png
还有一些量的相关信息,DSTSFDRY,DSTSFWET,DSTSFMBL是我需要的3个量,我想把他们求一下95年的平均

密码修改失败请联系微信:mofangbao
发表于 2014-4-28 10:27:04 | 显示全部楼层
chongzika 发表于 2014-4-28 08:34
数据是这样子的每个都代表一个月,

还有一些量的相关信息,DSTSFDRY,DSTSFWET,DSTSFMBL是我需要的3个 ...

files=systemfunc("ls ./1995-*.nc")
f = addfiles(files,"r")
ListSetType (f, "join")
E0=f[:]->DSTSFDRY
lat=f[0]->lat
lon=f[0]->lon
nlat = dimsizes(lat)
nlon = dimsizes(lon)

E=dim_avg_n_Wrap(E0,0)
E!0="lat"
E!1="lon"
printVarSummary(E)
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-4-28 19:31:33 | 显示全部楼层
longlivehj 发表于 2014-4-28 10:27
files=systemfunc("ls ./1995-*.nc")
f = addfiles(files,"r")
ListSetType (f, "join")

可以解决,这个函数读取数据会直接增加一维,不过那个conform_dims函数还是没不明白,总之,感谢你解决了我的燃眉之急。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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