detrend3文档
detrend3沿矩阵的第三维执行线性最小二乘去趋势。
参见:趋势.
内容
语法
Ad = detrend3(A) Ad = detrend3(A,t) Ad = detrend3(…,'omitnan')
描述
Ad = detrend3(A)的第三维中去除线性趋势一个假设切片一个以恒定的间隔进行采样。
Ad = detrend3(A,t)指定时间t与a的每个切片有关t不需要在固定的时间间隔发生。
Ad = detren3(…,'omitnan')甚至在包含的网格单元格中应用去趋势南值。如果许多网格单元格包含虚假的nan,您可能会发现此选项比默认选项慢。
例1:3D网格数据集
这个样本数据集到处都有3.2个单位/时间步长的趋势:
T = 50:50:1000;Y = 3.2*t + 0.1*randn(size(t));%趋势为3.2*t(加上一些随机噪声)%创建5x5网格w/趋势由y决定:Z = expand3(ones(5),y);
这是通过趋势趋势函数:
趋势(Z, t)
Ans = 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000 3.2000
现在让我们看看趋势:
z_dettrend = detrend3(Z,t);
现在的趋势是什么?
趋势(Z_detrend t)
Ans = 1.0e-14 * -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212 -0.2212
只是数值噪声(注意它是0到1.0e-14的水平)。
例2:海面温度
这个例子计算了一个区域平均海面温度异常从网格时间序列,然后去趋势网格化海表温度时间序列,绘制去趋势异常时间序列。
首先加载示例pacific_sst。每月sst的mat数据集。使用cdtarea得到每个网格单元的面积,然后使用当地的得到所有海洋网格单元面积加权sst的一维时间序列。
加载示例数据:负载pacific_sst%将lat,lon数组转换为网格:[Lon,Lat] =网格(Lon,Lat);获取每个网格单元的面积(m^2):A = cdtarea(Lat,Lon);每个网格单元面积的% (m^2)%只做有限数据的掩码(有效地忽略土地)掩码= all(isfinite(sst),3);得到面积加权sst的1D时间序列:Sst_1 = local(sst,mask,“重量”,);
现在绘制面积加权海温异常异常函数。为上下文,绘制线性趋势polyplot:
图异常(t,sst_1-mean(sst_1))轴紧datetick (“x”,“keeplimits”) ntitle (“海面温度异常(非去趋势)”)举行在polyplot (t, sst_1-mean (sst_1), 1,“k”,“线宽”3)
现在对整个3D sst数据集进行去趋势化,并绘制相同的面积平均时间序列,但这次使用去趋势数据:
%全3d时间序列去趋势:Sst_dt = detrend3(sst);得到面积平均无趋势海温时间序列:Sst_dt_1 = local(sst_dt,mask,“重量”,);图异常(t,sst_dt_1-mean(sst_dt_1))轴紧datetick (“x”,“keeplimits”) ntitle (“非趋势海温异常”)举行在polyplot (t, sst_dt_1-mean (sst_dt_1), 1,“k”,“线宽”3)
例3:'omitnan'选项
在某些情况下,网格化数据集可能包含虚假的nan。这就是我们在上面示例中分析的sst数据集的情况。对于802个月的海表温度数据,看看有多少值是有限的:
图imagescn(lon,lat,sum(isfinite(sst),3)) cb = colorbar;ylabel (cb、有限数据值的数目)的士([700 802])%设置颜色轴限制
在上图中,我们来看看加拿大的哈德逊湾。您会注意到,并非所有802个月都有有效数据。多达100个月的数据缺失,因为在冬季的几个月里,当冰破坏测量时,很难获得良好的海表温度读数。不过,您可能需要从可用数据中删除长期趋势。
下面是sst数据集去趋势的比较“omitnan”选择。首先使用趋势函数,简单地评估趋势的大小:
图subplot(1,2,1) imagescn(lon,lat,trend(sst,12)) cb = colorbar(“位置”,“southoutside”);包含(cb、“海温趋势\circC/年”)标题“没有omitnan的趋势”Caxis ([-0.04 0.04])“平衡”) subplot(1,2,2) imagescn(lon,lat,trend(sst,12,“omitnan”)) cb = colorbar(“位置”,“southoutside”);包含(cb、“海温趋势\circC/年”)标题“潮流与omitnan”Caxis ([-0.04 0.04])“平衡”)
在上图中,请注意加拿大哈德逊湾的差异。
去趋势也是一样的。我们将对每个数据集进行去趋势化,然后像上面那样绘制去趋势数据集的趋势图:
Sst_dt = detrend3(sst);Sst_dt_o = detrend3(sst,“omitnan”);图subplot(1,2,1) imagescn(lon,lat,trend(sst_dt,12)) cb = colorbar(“位置”,“southoutside”);包含(cb、“海温趋势\circC/年”) caxis([-0.000000000000001 0.000000000000001])“平衡”)标题“没有omitnan的去趋势”次要情节(1、2、2)imagescn(经度、纬度、趋势(sst_dt_o 12“omitnan”)) cb = colorbar(“位置”,“southoutside”);包含(cb、“海温趋势\circC/年”) caxis([-0.000000000000001 0.000000000000001])“平衡”)标题“与omitnan的去趋势”
现在,去趋势数据集中唯一的“趋势”是数值噪声(注意颜色尺度的1x10^-15限制)。
作者信息
这个函数是气候数据工具箱Matlab.函数和支持文档由Chad A. G万博1manbetxreene编写。