与Fortran、C、Matlab、IDL等编程语言类似,NCL具有很多现代编程语言的特点,如具有变量、数据类型、常数、函数、程序、运算符(代数运算和逻辑运算)、表达式、条件语句、循环等。其脱胎于Python的编程习惯,使得一些小细节与Python语言十分相似。一起来学习吧!
1.数据类型
NCL支持的三种数据类型:
(1)数值型
包括double(双精度型)、float(浮点型)、long(长整型)、integer(整型)、byte(字节型)。
(2)Enumeric型
包括int64、unit64、uint(32位)、ulong、ushort、ubyte类型,在平时的编程中不太常用。
(3)非数值型
包括string(字符串型)、character(字符型)、graphic(图形)、file(文件)、logical(逻辑型)和list(列表型)。
2.数据类型转换
同时,NCL提供一系列的库函数进行数据类型之间的转化,常用的库函数如下:
数据类型转化函数:
命令
描述
tofloat(array)
转化为浮点型
toint(array)
转化为整型
tolong(array)
转化为长整型
toshort(array)
转化为短整型
tostring(array)
转化为字符串
tochar(array)
转化为字符
todouble(array)
转化为双精度型
使用方法形如:
arr=tofloat(array)
除此之外,NCL内置了类型判断函数:
命令
描述
isdouble(var)
是否为双精度型
isstring(var)
是否为字符串
isinteger(var)
是否为整形
islogical(var)
是否为逻辑变量
islong(var)
是否为长整形
isnumeric(var)
是否为数值型
使用方法形如:
a=1.34b=isstring(a)print(b)
得到结果如下:
3.常用的语法字符
在计算过程中,可能用到的语法有:
符号
含义
:=
重新赋值
;
注释
$……$
封装字符串变量
{……}
坐标截取数组
[……]
截取列表变量
(/……/)
创建数组
[/……/]
创建列表变量
:
数组下标分隔符
命名维的分隔符
创建或引用变量的一个属性
!
创建或引用变量的一个命名维
创建或引用变量的一个坐标变量
值得注意的是,与Python的逻辑相同,NCL的1是从0开始数的,即:
a=(/0,1,2,3,4/)b=a(1)
得到a中位置2的变量为1:
:属性可通过“”来读取、赋值或修改,典型的变量属性包括“_FillValue”、“missing_value”、“units”、“long_name”、“standard_name”、“coordinates”、“axis”等。!:维的命名或名称通过“!”来读取、赋值或修改,数组的维数大小和各维的大小均为整数,NCL变量数组从左往右分别为第0维至第n-1维,n是数组变量的维数大小。
test!0=“time”,test!1=“height”
:坐标变量通过“”来读取、赋值或修改,可通过printVarSummary(test)来查看其坐标变量。
4.运算符
常用的运算符包括算术运算符和逻辑运算符,数学运算符也可适用于数组。
加减乘除即为+、-、*、/,其他的算术运算符有:
符号
说明
%
取余数
返回较大值
返回较小值
^
幂运算
#
矩阵乘
值得注意的是:
1、使用括号可以修改计算优先级
2、“+”具有两重含义,即有两种不同的应用:加法;连接字符串
3、“-”具有两重含义:负号,具有最高优先级;减法
4、“/”用于整数时,返回值也为整数值
逻辑运算符从左向右执行,直至返回值为否
符号
符号
.lt.
小于
.le.
小于等于
.eq.
等于
.ne.
不等于
.gt.
大于
.ge.
大于等于
.and.
并且
.or.
或
.not.
非
.xor.
异或
5.常见计算函数
1)数组的平均值
函数dim_avg_n_Wrap可计算变量在指定维上的平均值,并保留元数据。
xout_wrap=dim_avg_n_Wrap(x,dims)
2)数组的标准差
函数dim_stddev_n_Wrap可计算数组在指定维上的标准差,并保留元数据。
ret_var_Wrap=dim_stddev_n_Wrap(var,dims)
3)加权面积平均
函数wgt_areaave_Wrap可计算数组的加权面积平均,并保留元数据。
Qave_Wrap=wgt_areaave_Wrap(q,wgty,wgtx,opt)
4)滑动平均
函数runace_n_Wrap可计算数组的等权重滑动平均,并保留元数据。
Xave_Wrap=runave_n_Wrap(x,nave,opt,dim)
5)线性回归
函数regline可计算出两个一维变量间的回归系数(趋势或斜率)、t值统计量和y截断等信息:
rc=regline(x,y)。;若需计算多维数组的回归系数,可以用函数regCoef。;返回变量有以下属性值:xave:x的平均值;yave:y的平均值;tval:t值统计量;rstd:估算回归系数的标准差;yintercept:x=0时的y值;nptxy:样本个数。
6)月平均资料计算年平均
函数month_to_annual可计算月平均变量的年平均值:
array_annual=month_to_annual(array_mon,option);array_annual是月平均数组变量,其时间维的大小应为12的倍数.;option为计算参数,option=0为计算12个月的算术和,option=1则将12个月的算术和除以12,即得年平均值。
本期到此结束!练手材料在下方~