爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8576|回复: 11

[经验总结] NCL函数的小心得

[复制链接]

新浪微博达人勋

发表于 2022-8-2 10:37:35 | 显示全部楼层 |阅读模式

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

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

x
NCL中的函数要求最左维是什么参数,那这一维必须是什么参数。这时候如果需要用循环,即把第一维变为循环变量,第二维是原最左维的参数的话,也不行。
这时候不能用循环,只能用数组一个个算。

如使用gsn_csm_pres_hgt函数,要求变量最左边是lev,而如果有多图需要画,那首先:


1、多图的变量不能是第一维,第一维只能是层数

2、变量只能在第一维以外,如第二维

3、变量如果在第二/三维,这时候就不能用循环,会报错

这时候要画多图只能老老实实一个变量一个变量来画。
比如
        plot                      = new(7,graphic)  

        plot(0) = gsn_csm_pres_hgt(wks ,vd_Td(:,0,:)  , res)
        plot(1) = gsn_csm_pres_hgt(wks ,vd_Td(:,1,:)  , res)
        plot(2) = gsn_csm_pres_hgt(wks ,vd_Td(:,2,:)  , res)
        plot(3) = gsn_csm_pres_hgt(wks ,vd_Td(:,3,:)  , res)
        plot(4) = gsn_csm_pres_hgt(wks ,vd_Td(:,4,:)  , res)
        plot(5) = gsn_csm_pres_hgt(wks ,vd_Td(:,5,:)  , res)
        plot(6) = gsn_csm_pres_hgt(wks ,vd_Td_mean    , res)


目前心得是这样,大家还有更好的办法的话欢迎交流。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-8-3 10:27:35 | 显示全部楼层
你已经给出了分开写的,例如你给的例子就可以写成
do i = 0,6
     plot(i) = gsn_csm_pres_hgt(wks ,vd_Td(:,i,:)  , res)
end do
你要多种变量的话,甚至你可以把变量名存为一个新的数组,然后做循环一样的。
ncl的变量名不能用来f->var提取数据,但是用来画图是可以的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-8-3 14:29:13 | 显示全部楼层
yangzi88552 发表于 2022-8-3 10:27
你已经给出了分开写的,例如你给的例子就可以写成
do i = 0,6
     plot(i) = gsn_csm_pres_hgt(wks ,vd_ ...

您说的这个方法我试过,但是plot()这个函数貌似循环只能在第一维呢,放在第二维就出错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-8-3 17:40:39 | 显示全部楼层
贫道敬孔 发表于 2022-8-3 14:29
您说的这个方法我试过,但是plot()这个函数貌似循环只能在第一维呢,放在第二维就出错了

这个你需要查查你两种方式提取变量后的,变量具体的格式,这个和循环放在第几个维度是没有关系的,函数中看的只是你输入的变量是否符合规则
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-8-4 09:41:15 | 显示全部楼层
这种要求最左边或者最后边维度的,可以试试把维度调整一下,比如原来是x1(time,pressure,lat),x = x1(pressure|:,time|:,lat|:)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-8-4 11:06:28 | 显示全部楼层
LDW 发表于 2022-8-4 09:41
这种要求最左边或者最后边维度的,可以试试把维度调整一下,比如原来是x1(time,pressure,lat),x = x1(pre ...

嗯呢,本来数组的最左维是时间,因为要求最左维是层数,所以已经调整维度了呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-8-4 11:32:10 | 显示全部楼层
yangzi88552 发表于 2022-8-3 17:40
这个你需要查查你两种方式提取变量后的,变量具体的格式,这个和循环放在第几个维度是没有关系的,函数中 ...

之前一层循环不在最外围的都没有成功过,我以为是NCL做单层循环必须放到最外围。我再试试,谢谢回复
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-8-6 16:58:41 | 显示全部楼层
谢谢分享!!~~
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2022-8-8 09:36:11 | 显示全部楼层
非常感谢楼主分享,学习了。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-8-9 09:22:09 | 显示全部楼层
wrry22 发表于 2022-8-6 16:58
谢谢分享!!~~

不客气哒,我也在大家的分享中学习了很多
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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