Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

detrend

去除多项式趋势

说明

示例

D = detrend(A)A 的数据中去除最佳直线拟合线,并返回其余的数据。

  • 如果 A 是向量,则 detrendA 的元素中减去趋势。

  • 如果 A 是矩阵,则 detrend 分别对每列进行运算,从 A 的对应列中减去每个趋势。

  • 如果 A 是多维数组,则 detrend 对所有维度按列进行运算,从 A 的对应列中减去每个趋势。

  • 如果 A 是具有 singledouble 类型的数值变量的表或时间表,则 detrend 分别对 A 的每个变量进行运算,从 A 的对应变量中减去每个趋势。

示例

D = detrend(A,n) 去除 n 次多项式趋势。例如,当 n = 0 时,detrendA 中删除均值。当 n = 1 时,detrend 去除线性趋势,这等效于上述语法。当 n = 2 时,detrend 去除二次趋势。

示例

D = detrend(A,n,bp) 去除由向量 bp 中指定的断点定义的线段的分段连续趋势。

D = detrend(___,nanflag) 在上述任一语法的基础上指定包含还是省略 A 中的 NaN 值。例如,detrend(A,"omitnan") 在计算趋势时会忽略 NaN 值。默认情况下,detrend 包括 NaN 值。

示例

D = detrend(___,Name,Value) 使用一个或多个名称-值参数指定其他参数。例如,detrend(A,1,bp,"Continuous",false) 指定拟合趋势可以有不连续趋势。

示例

全部折叠

创建一个数据向量,并去除连续线性趋势。绘制原始数据、去趋势后的数据和线性趋势。

t = 0:20;
A = 3*sin(t) + t;
D = detrend(A);

plot(t,A)
hold on
plot(t,D)
plot(t,A-D,":k")
legend("Input Data","Detrended Data","Trend")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

创建一个数据表,并从表中的指定变量中去除连续二次趋势。绘制原始数据、去趋势后的数据和趋势。

t = (-4:4)';
trend = (t.^2 + 4*t + 3);
sig = [0 1 -2 1 0 1 -2 1 0]';
x = sig + trend;
T = table(t,trend,sig,x);
T = detrend(T,2,"DataVariables","x","SamplePoints","t","ReplaceValues",false)
T=9×5 table
    t     trend    sig    x     x_detrended
    __    _____    ___    __    ___________

    -4      3       0      3     -0.12121  
    -3      0       1      1       0.9697  
    -2     -1      -2     -3      -1.9654  
    -1      0       1      1       1.0736  
     0      3       0      3      0.08658  
     1      8       1      9       1.0736  
     2     15      -2     13      -1.9654  
     3     24       1     25       0.9697  
     4     35       0     35     -0.12121  

plot(T,"t","x")
hold on
plot(T,"t","x_detrended")
plot(T.t,T.x-T.x_detrended,":k")
legend("Input Data","Detrended Data","Trend","Location","northwest")

Figure contains an axes object. The axes object with xlabel t contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

创建一个数据向量,并使用 0 处的断点去除分段线性趋势。指定所得到的输出可以是不连续的。绘制原始数据、去趋势后的数据和趋势。

t = -10:10;
A = t.^3 + 6*t.^2 + 4*t + 3;
bp = 0;
D = detrend(A,1,bp,"SamplePoints",t,"Continuous",false);

plot(t,A)
hold on
plot(t,D)
plot(t,A-D,":k")
legend("Input Data","Detrended Data","Trend","Location","northwest")

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Input Data, Detrended Data, Trend.

输入参数

全部折叠

输入数据,指定为向量、矩阵、多维数组、表或时间表。

  • 如果 A 是向量,则 detrendA 的元素中减去趋势。

  • 如果 A 是矩阵,则 detrend 分别对每列进行运算,从 A 的对应列中减去每个趋势。

  • 如果 A 是多维数组,则 detrend 对所有维度按列进行运算,从 A 的对应列中减去每个趋势。

  • 如果 A 是具有 singledouble 类型的数值变量的表或时间表,则 detrend 分别对 A 的每个变量进行运算,从 A 的对应变量中减去每个趋势。

数据类型: double | single
复数支持:

多项式次数,指定为非负整数标量,或指定为 "constant"(等效于 0)或 "linear"(等效于 1)。

用于定义数据的分段的断点,指定为包含以下项之一的向量:

  • 指示断点位置的采样点值。采样点值包含在默认采样点向量 [1 2 3 ...] 中,或由 SamplePoints 名称-值参数指定。

  • 逻辑值,其中逻辑值 1 (true) 表示输入数据的对应元素中的断点。如果 bp 包含逻辑值,则其长度必须与样本点相同。

当您要计算不同数据段的单独趋势时,断点非常有用。

数据类型: double | single | datetime | duration | logical

缺失值条件,指定为下列值之一:

  • "includemissing""includenan" - 在计算趋势时包括 A 中的 NaN 值。如果运算维度中有任一元素为 NaN,则 D 中对应的元素为 NaN"includemissing""includenan" 具有相同的行为。

  • "omitmissing""omitnan" - 在计算趋势时忽略 A 中的 NaN 值。如果运算维度中的所有元素均为 NaN,则 D 中对应的元素为 NaN"omitmissing""omitnan" 具有相同的行为。

名称-值参数

将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参数名称,Value 是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。

示例: D = detrend(A,SamplePoints=1:10:1000)

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: D = detrend(A,"SamplePoints",1:10:1000)

连续性约束,指定为下列值之一:

  • true - 拟合趋势在任何位置都必须是连续的。

  • false - 拟合趋势可以包含不连续趋势。

采样点,指定为由采样点值组成的向量或下表中的选项之一(当输入数据为表时)。样本点代表数据的 x 轴位置,必须为有序且包含唯一的元素。样本点不需要均匀采样。向量 [1 2 3 ...] 是默认值。

当输入数据是表时,可以使用以下选项之一将采样点指定为表变量:

索引方案示例

变量名称:

  • 字符串标量或字符向量

  • "A"'A' - 名为 A 的变量

变量索引:

  • 引用变量在表中位置的索引编号

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false

  • 3 - 表中的第三个变量

  • [false false true] - 第三个变量

函数句柄:

  • 函数句柄,以表变量作为输入并返回逻辑标量

  • @isnumeric - 一个包含数值的变量

变量类型:

  • vartype 下标,用于选择一个指定类型的变量

  • vartype("numeric") - 一个包含数值的变量

注意

当输入数据为 timetable 时,不支持此名称-值参数。时间表使用行时间向量作为采样点。要使用不同采样点,您必须编辑时间表,以便行时间包含所需的采样点。

示例: detrend(A,"SamplePoints",0:0.1:10)

数据类型: double | single | datetime | duration

要对其进行操作的表或时间表变量,指定为下表中的选项之一。DataVariables 值指示要对输入表或时间表的哪些变量去除多项式趋势。

表或时间表中未由 DataVariables 指定的其他变量会传递给输出,而不会对其进行去趋势处理。

索引方案示例

变量名称:

  • 字符串、字符向量或元胞数组

  • pattern 对象

  • "A"'A' - 名为 A 的变量

  • ["A","B"]{'A','B'} - 两个名为 AB 的变量

  • "Var"+digitsPattern(1) - 变量名为 "Var" 后跟一个数字

变量索引:

  • 引用变量在表中位置的索引编号

  • 由数字组成的向量

  • 逻辑向量。通常,此向量的长度与变量的数目相同,但可以省略尾部的 0false

  • 3 - 表中的第三个变量

  • [2 3] - 表中的第二个和第三个变量

  • [false false true] - 第三个变量

函数句柄:

  • 函数句柄,以表变量作为输入并返回逻辑标量

  • @isnumeric - 所有包含数值的变量

变量类型:

  • vartype 下标,用于选择指定类型的变量

  • vartype("numeric") - 所有包含数值的变量

对于向量、矩阵或多维数组输入数据,不支持 DataVariables

示例: detrend(A,"DataVariables",["Var1" "Var2" "Var4"])

替换值指示符,当 A 是表或时间表时,指定为以下值之一:

  • true1 - 将输入表变量替换为包含经过去趋势的数据的表变量。

  • false0 - 在输入表变量中追加包含去趋势数据的表变量。

对于向量、矩阵或多维数组输入数据,不支持 ReplaceValues

示例: detrend(A,"ReplaceValues",false)

提示

  • detrend 函数从数据中减去均值或最佳拟合线(基于最小二乘指标)。如果您的数据是表格或包含几个数据列,或是表或时间表,detrend 会分别处理每个数据列。

    通过从数据中去除线性趋势,您能够将分析集中在趋势数据的波动上。线性趋势通常表示数据的系统性增加或减少。例如,传感器漂移可能导致系统性偏移。虽然趋势可能是有意义的,但在去除线性趋势后,某些类型的分析能引发更深层的洞见。

    视分析目的不同,您可决定是否需要去除数据中的趋势效应。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开