# 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