2026a

# detrend


去除多项式趋势

函数库: TyMath

# 语法

y = detrend(x)
y = detrend(x,n)
y = detrend(x,n,bp)
y = detrend(___,nanflag)
y = detrend(___;Name = Value)

# 说明

y = detrend(x) 从 x 的数据中去除最佳直线拟合线,并返回其余的数据。示例

  • 如果 x 是向量,则 detrend 从 x 的元素中减去趋势;
  • 如果 x 是矩阵,则 detrend 分别对每列进行运算,从对应的列中减去每个趋势;
  • 如果 x 是多维数组,则 detrend 对所有维度按列进行运算,从 x 的对应列中减去每个趋势。

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


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


y = detrend(___,nanflag) 在上述任一语法的基础上指定包含还是省略 A 中的 NaN 值。例如,detrend(x,'omitnan') 在计算趋势之前删除 NaN 值,而 detrend(x,'includenan') 包括这些值(默认)。


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

# 示例

连续线性趋势

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

using TyMath
using TyPlot
t = 0:20
x = 3*sin.(t) + t
y = detrend(x)
plot(t,x,t,y,t,x-y,":k")
legend(["Input Data","Detrended Data","Trend"],loc="northwest")
连续二次趋势

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

using TyMath
using TyPlot
t = 0:20
x = 20*sin.(t) + t.^2
y = detrend(x,2)
plot(t,x,t,y,t,x-y,":k")
legend(["Input Data","Detrended Data","Trend"],loc="northwest")
不连续线性趋势

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

using TyMath
using TyPlot
t = -10:10
x = t.^3 .+ 6*t.^2 .+ 4*t .+ 3
bp = 0
y = detrend(x,1,bp;SamplePoints=t,Continuous=false)
plot(t,x,t,y,t,x-y,":k")
legend(["Input Data","Detrended Data","Trend"],loc="northwest")

# 输入参数

x - 输入数据
向量 | 矩阵 | 多维数组

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

  • 如果 x 是向量,则 detrend 从 x 的元素中减去趋势;
  • 如果 x 是矩阵,则 detrend 分别对每列进行运算,从对应的列中减去每个趋势;
  • 如果 x 是多维数组,则 detrend 对所有维度按列进行运算,从 x 的对应列中减去每个趋势。

数据类型: Int64 | Int32 | Int16 | Int128 | Float32 | Float64

复数支持:

n - 多项式次数
非负整数标量

多项式次数,指定为非负整数标量。

bp - 断点
向量

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

  • 指示断点位置的样本点值。样本点值包含在默认样本点向量 [1 2 3 ...] 或 'SamplePoints' 参数指定的向量中;
  • 逻辑值,其中逻辑值 1 (true) 表示输入数据的对应元素中的一个断点。如果 bp 包含逻辑值,则其长度必须与样本点相同。

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

数据类型: Int64 | Int32 | Int16 | Int128 | Float32 | Float64

nanflag - 缺失值条件
"includenan"(默认) | "includemissing" |"omitnan" | "omitmissing"

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

  • "includemissing" 或 "includenan" - 在计算趋势时包括 x 中的 NaN 值。如果运算维度中有任一元素为 NaN,则 y 中对应的元素为 NaN。"includemissing" 和 "includenan" 具有相同的行为;
  • "omitmissing" 或 "omitnan" - 在计算趋势时忽略 x 中的 NaN 值。如果运算维度中的所有元素均为 NaN,则 y 中对应的元素为 NaN。"omitmissing" 和 "omitnan" 具有相同的行为。

# 名称-值对组参数

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

示例: y = detrend(x; SamplePoints = 1:10:1000)

Continuous - 连续性约束
true(默认) | false

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

  • true - 拟合趋势在任何位置都必须是连续的;
  • false - 拟合趋势可以包含不连续趋势。
SamplePoints - 样本点
Float64[] (默认值) | 向量

采样点,指定为由采样点值组成的向量。样本点代表数据的 x 轴位置,必须为有序且包含唯一的元素。

数据类型: Int64 | Int32 | Int16 | Int128 | Float32 | Float64

# 另请参阅

polyfit