小二 发表于 2013-2-23 10:03:22

GMT的数学功能介绍

数学运算是GMT 除绘图外的另一个重要功能,GMT可以直接实现数据滤波、格网内插、重采样、梯度计算、统计分析等数学功能,也可以通过逆波兰算法(Reverse Polish Notation - RPN )实现复杂的数学运算。下面以grdmath和grdmath为例,介绍GMT的数学运算功能。GMT的数学运算遵循逆波兰句法——RPN,在计算机中进行算术表达式的计算是通过栈来实现的,可以显著提升计算速度。例如想要计算两个数的和,其公式为:(a+b)*2
其RPN句法为:a   b   +2*
grdmath和gmtmath是GMT中最主要的数学计算程序,分别可以对netCDF格式的网格文件和普通文本或者二进制数据表进行数学运算。其中gmtmath中含有131类运算符,grdmath有145中运算符,可以实现从简单的加减乘除到球谐函数的计算。

例如现在有12个同一区域、密度相同的netCDF格式标准网格文件,含有三列数据,分别为经度、纬度和该点上的后向散射系数,现在需要计算每一个网格点的标准差。数据标准差STD的计算公式为:
在GMT中可以通过grdmath来实现,其RPN句法如下:grdmath 1.nca.nc SUB SQR2.nc a.nc SUB SQRADD 3.nc a.nc SUB SQRADD 4.nc a.nc SUB SQRADD 5.nc a.nc SUB SQRADD 6.nc a.nc SUB SQRADD 7.nc a.nc SUB SQRADD 8.nc a.nc SUB SQRADD 9.nc a.nc SUB SQRADD 10.nc a.nc SUB SQRADD 11.nc a.nc SUB SQRADD 11 DIV SQRT = STD.nc其中nc文件为区域和密度相同的网格文件,SUB、SQR、ADD、DIV以及SQRT为GMT的运算符名称。通过上面的公式可以计算出每一个网格点的标准差,继而通过后续的绘图命令可以将其展示在地图上。
Figure: envisat 海冰后向散射系数标准差分布
另外GMT还可以方便的实现数据的统计分析,通过下面几条命令,可以将标准差数据的最大值、最小值和平均值存入指定文件。
gmtmath STD.txt -Sl -C2 MEAN = std.infominmax STD.txt -Eh2 >> std.infominmax STD.txt -El2 >> std.info
在gmtmath一行中,-C2表示对第三列数据进行运算,MEAN表示计算均值,-S1表示只输出结果数据的第一列(默认的是输出所有列,在统计形成重复数据);minmax 程序专门用于计算数据的最大值最小值。
参考:GMT帮助手册Abramowitz, M., and I. A. Stegun, 1964, Handbook of Mathematical Functions, Applied Mathematics Series, vol. 55, Dover, New York.

页: [1]
查看完整版本: GMT的数学功能介绍