- 积分
- 16857
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-4-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
NCL循环效率不高,但是不同维度不用循环就无法计算。一维循环还好,二维及以上就慢了。此时当使用conform_dims函数,将维数最小的那个数组扩展为目标维数。
具体用法:比如我有一个(/6,12,73,144/)的数组,需要乘以一维的(/12/)这个数组,常规上需要用循环,但是计算慢,还啰嗦。
此时就可以用conform_dims扩充一维数组,使之成为和四维数组同一长度的四维数组,但其内容仍然是一维的12个数在6、73和144这三个维度上循环出现。
具体过程是:
;R就是一维数组,w_d是四维数组
ndim = 1 ;被扩展的在新数组的哪一维就是哪一维减一
R_4d = conform_dims(dimsizes(w_d),R,ndim) ;这里用了dimsizes就不用(/6,12,73,144/)这么啰嗦啦
printVarSummary(R_4d)
这时R_4d就是和w_d同维的四维数组啦,二者直接相乘即可K= R_4d * w_d。
注:
1、NCL的多维数组可以直接乘除/加减一个数,但是不能直接对一个一维数组这样做。
2、可以直接用conform,但是官网建议使用conform_dims,地址:conform_dims (ucar.edu)
希望能帮到需要使用的小伙伴。
|
|