爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8053|回复: 3

[经验总结] 手把手教使用NCL的conform函数扩大维度

[复制链接]

新浪微博达人勋

发表于 2022-7-31 18:36:08 | 显示全部楼层 |阅读模式

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

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

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)

希望能帮到需要使用的小伙伴。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-8-1 11:52:24 | 显示全部楼层
挺实用的,顶一下。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-10-12 19:50:22 | 显示全部楼层
看了官网没看懂 看了大佬发的才看懂 谢谢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-9-27 20:51:51 | 显示全部楼层
{:eb520:}感谢感谢,清晰明了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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