当地的文档

当地的函数返回一个一维数组的值计算出一个地区的兴趣3 d矩阵。举个例子,如果你有一个大全球3 d海面温度数据集,这个函数很容易获得一个时间序列的平均sst在一个感兴趣的区域。

回到气候数据工具的内容

内容

语法

y =当地(A) y = (A,面具)y =当地(面具,重量,重量)y =当地(面具,@function) y =当地(FunctionInputs…,…) y =当地(…,“omitnan”)

描述

y =当地(A)产生时间序列或概要平均值的2 d切片沿维度3的3 d矩阵一个

y =当地(面具)给出了时间序列值在一个感兴趣的区域定义为面具一个大网格内时间序列矩阵一个。对矩阵一个MxNxP维度的尺寸面具必须麦根和输出的尺寸吗yPx1。

y =当地(…,重量,重量)加权平均等任何给定的权重网格产生的cdtarea如果你想要一个面积加权的意思。

y =当地(面具,@function)适用于任何函数的数据值的每个元素y。默认的函数是@mean,但你可以使用@max,@std,或任何其他你能想到的功能。你甚至可以定义您自己的匿名函数

FunctionInputs, y =当地(……)允许额外的输入指定的函数。例如,性病函数允许将标准差权重方案01;指定前,使用y =当地(面具,@std, 0)

y =当地(…,“omitnan”)忽略了值。

例子

这个样例数据加载和上下文,情节意味着海洋表面温度:

负载pacific_sst.matimagescn(经度,纬度,意味着(sst, 3))轴xy图像cmocean包含“经”ylabel“纬度”

定义一个面具

有些人描述ENSO的意思是海洋表面温度在尼诺3.4箱,5 N之间定义的区域5 S 170 W到120 W的经度和纬度。让我们得到一个盒子内的平均海面温度的时间序列。首先创建一个面具尼诺对应3.4箱:

%将纬度和经度变成网格:(经度、纬度)= meshgrid(经度、纬度);%的面具的多边形内:掩码= geomask(纬度,经度,5 [5],[-170 - -120]);图imagescn(经度、纬度、面具)轴xy标题“尼诺3.4面具”包含“经”ylabel“纬度”ax =轴;边界(“国家”轴(ax)

黄色矩形网格包含细胞我们会计算平均海温时间序列。得到一个时间序列的平均海温在尼诺3.4箱,给的当地的函数,风场数据集和面具:

y =当地(sst,面具);图绘制(t, y)轴盒子datetick (“x”,“keeplimits”)ylabel (“海洋表面温度(\ circC)”)

区域平均的意思

假设你不平坦地球协会,我们将不得不应对难以忽视的真相,纬度和经度的网状细胞面积不相等。如果你想要一个面积加权的意思是,使用cdtarea函数得到网格细胞的面积和呼叫时使用这些地区作为权重当地的:

面积= cdtarea(纬度、经度);yw =当地(sst,面具,“重量”、区);持有情节(t, yw)

现在你可能已经注意到,area-averaged值非常接近未加权的意思。这是因为尼诺3.4箱接近赤道,所有网格细胞是同样的大小。最大和最小网格细胞尼诺3.4盒内只相差约0.2%区域,这里面积加权平均计算可能是不必要的。

想看自己吗?试试上面的示例使用完整的风场数据集,让掩码= isfinite(平均(sst, 3));。然后你会看到有一个大区别平均网格细胞的尺寸时考虑。

超出平均水平

也许你不想让尼诺3.4盒内的平均值——也许不是你需要的最大和最小值。让我们计算尼诺3.4盒内的最大和最小值作为时间的函数。也得到标准差和阴谋boundedline:

%计算最大和最小值在尼诺3.4箱:ymax =当地(sst、面具、@max);ymin =当地(sst、面具、@min);ystd =当地(sst、面具、@std);图boundedline (t y ystd);持有ymin情节(t,“:”,“颜色”rgb (“灰色”ymax)情节(t,“:”,“颜色”rgb (“灰色”))%放大去看发生了什么:ylim([22] 31日)xlim ([datenum (1990年1月1日的)datenum (2000年1月1日的)))datetick (“x”,“keeplimits”)传说(“σ1下午\ \”,“平均sst”,的最大值和最小值,“位置”,“西南”)

更多的例子

%海洋面具:海洋=所有(isfinite (sst), 3);%使北半球和南半球的面具:北海洋& Lat = > 0;南部海洋& Lat < = 0;

这是这些面具是什么样子;黄色是真正的和蓝色的是:

图次要情节(1、3、1)显示亮度图像(海洋)轴图像标题“海洋”次要情节(1、3、2)显示亮度图像(北)轴图像标题北半球的次要情节(1、3、3)显示亮度图像(南)轴图像标题“南半球”

定义了面具很容易比较在北半球和南半球海洋表面温度:

太平洋的%计算时间序列:北部ynorth =当地(sst);ysouth =当地(sst、南);%绘制时间序列:图绘制(t ynorth“b”)举行情节(t, ysouth“r”)ylabel (“平均sst (\ circC)”)传说(北半球的,“南半球”)%放大3年:xlim ([datenum (1990年1月1日的)datenum (1993年1月1日的)))datetick (“x”,“keeplimits”)

面积加权平均

上面的时间序列表明,北半球和南半球的海洋表面温度往往是由于季节性彼此的阶段。但是在上面的图中,每一个网格单元是同等重量的计算手段,即使向极(冷)网格细胞比朝赤道方向小网格细胞(温暖)。未加权的意味着偏见全球平均水平向两极附近发现值而不是代表一个真正的空间平均。为更好地衡量平均海表温度,使用“areaweighted”选择:

太平洋的%计算时间序列:ynorthw =当地(sst、北“重量”、区);ysouthw =当地(sst、南、“重量”、区);%绘制时间序列:情节(t, ynorthw“b”,“线宽”2)图(t, ysouthw“r”,“线宽”2)传说(未加权的北半球的,未加权的南半球的,北半球面积加权的,面积加权南半球的)%放大3年:xlim ([datenum (1990年1月1日的)datenum (1993年1月1日的)))datetick (“x”,“keeplimits”)

面积加权海洋表面温度高于未加权的方法因为温暖网格细胞赤道附近是远远大于冷,小格子细胞两极附近,所以他们应该为真正的空间平均作出更大贡献。一个偏移量之间的数度仍然是北半球和南半球,但这并不意味着北半球比南半球数度。而偏见更可能由于加拿大和美国的海洋,从而减少的总体贡献最北的网格单元。来看看有多少网格细胞导致平均水平,纬度:

图直方图(Lat(海洋),55:10:55)包含(“纬度”)ylabel (促进细胞的数量的60)xlim ([-60])

定义自己的匿名函数

也许你太受限于Matlab提供的简单功能@mean,@max,@min等。如果你需要变得更加复杂的措施里想的是什么一个感兴趣的区域,简单地定义自己的函数。

说你想要的总温度范围在一个地区的兴趣度。对于任意设置温度的值x我们想要的马克斯(x)-分钟(x),然后转换为华氏乘以9/5和添加32:

%定义温度跨度度:fn = @ (x) (max (x) - min (x)) * 9/5 + 32;%计算sst_range_F =当地(sst、北、fn);图绘制(t, sst_range_F)%放大3年:xlim ([datenum (1990年1月1日的)datenum (1993年1月1日的)))datetick (“x”,“keeplimits”)ylabel (在北半球,太平洋的范围(\ circF)”)

上面的情节暗示在冬天,大约有90度的温差在北极和赤道之间。在夏天,北极变暖,而赤道保持相同的温度,所以温度下降到72度的差异。

海洋资料

当地的函数的不只是时间序列数据!任何3 d网格atmoshperic或海洋等变量是容易获得的当地的。你想要的平均盐度剖面地中海吗?定义您感兴趣的区域的扩展,得到你总是梦想。这里有一个例子SODB德雷克海峡的数据。情节的表面温度(图层1天车),

负载sodb_example图imagescn(经度、纬度、天车(:,:1)cmoceancb = colorbar;ylabel (cb、“表面温度\ circC”)包含经度ylabel纬度%威德尔海坐标:wlon = (-23 -42 -36 -20 4 -23);wlat = (-62 -64 -71 -71 -67 -60 -62);%大纲黄色的威德尔:持有情节(wlon wlat,“y”)

威德尔海的温度曲线,网格的纬度、经度数组,威德尔海坐标转化为相应的面具geomask,并使用当地的平均温度剖面的威德尔海:

%将数组转化为网格:(经度、纬度)= meshgrid(经度、纬度);%创建一个威德尔海面具:掩码= geomask(纬度、经度、wlat wlon);%得到温度曲线:ptm1 =当地(天车,面具,“omitnan”);图绘制(ptm1 d)轴ij%翻转y轴和消除空的空间盒子包含“潜在的温度(\ circC)”ylabel的深度(米)

作者信息

当地的功能和支持文档是乍得a·格金宝app林写的德克萨斯大学的地球物理研究所(UTIG), 2017年2月。