主要内容

发现并删除趋势

在实时编辑器中查找并删除数据中的多项式或周期趋势

自从R2019b

描述

发现并删除趋势任务让您可以交互地识别数据中的多项式或周期趋势,并返回或删除它们。任务自动生成MATLAB®为您的活动脚本编写代码。有关实时编辑器任务的详细信息,请参见在活动脚本中添加交互式任务

使用此任务,您可以:

  • 识别数据中的多项式趋势。

    • 选择要从数据中去除的多项式趋势的次。

    • 动态安排断点定义数据的分段。

    • 指定连续性约束。

    • 可视化并返回已删除趋势的计算趋势和数据。

  • 识别数据中的长期和周期性、季节性或振荡趋势。

    • 选择奇异谱分析(SSA)基于黄土的季节趋势分解找出数据趋势的算法。

    • 当趋势周期未知时,指定周期趋势的个数和滞后窗口。

    • 当趋势周期已知时,指定周期长度。

    • 可视化并返回已删除趋势的计算趋势和数据。

相关功能

代码发现并删除趋势generate使用以下函数:

打开任务

要添加发现并删除趋势任务到MATLAB编辑器中的实时脚本:

  • 住编辑器选项卡上,选择任务>发现并删除趋势

  • 在脚本中的代码块中,键入相关的关键字,例如找到删除去趋势,或trenddecomp.选择发现并删除趋势从建议的命令补全。

例子

全部展开

控件交互地识别和删除数组数据中的线性趋势发现并删除趋势任务在实时编辑器。

创建一个向量x包含一些波动。创建一个图形来可视化数据。

T = 0:8;趋势= 2*t+5;Sig = [0 1 -2 1 0 1 -2 1 0];数据= sig +趋势;情节(t,数据)

图中包含一个轴对象。axis对象包含一个line类型的对象。

添加发现并删除趋势任务添加到活动脚本。因为数据具有多项式趋势,所以选择多项式趋势类型。

从数据中去掉多项式趋势。选择数据作为输入数据和去趋势数据作为输出返回。或者,您可以使用输出字段返回趋势。选择t随着x-与输入数据相关的轴值。通过指定多项式类型来识别线性趋势线性

在堆叠图中显示输入数据、结果趋势和去趋势数据。

若要查看此任务生成的代码,请单击展开任务显示这个向下的三角形在任务参数区域的底部。

生活任务

图中包含一个轴对象。带有xlabel t的axes对象包含3个line类型的对象。这些对象表示输入数据、去趋势数据和趋势。

交互识别和删除一个分段多项式趋势在数组数据使用发现并删除趋势任务在实时编辑器。

多项式趋势是最能描述波动数据的趋势。当数据的值同时增加和减少,并且多项式趋势的程度随着数据的波动而增加时,就会使用多项式趋势。

考虑一个心电图(ECG)信号,它显示的模式不是必须删除的数据的固有模式。加载信号ecgnl使用示例文件ecgSignals.mat然后画出信号。

负载(“ecgSignals.mat”“ecgnl”)地块(ecgnl)标题(“心电趋势信号”)包含(“样本”) ylabel (“电压(mV)”

图中包含一个轴对象。标题为ECG Signals with Trends, xlabel Sample, ylabel Voltage (mV)的axis对象包含一个类型为line的对象。

然后,消除非线性趋势。添加发现并删除趋势任务添加到活动脚本。因为数据具有多项式趋势,所以选择多项式趋势类型。

通过选择对信号进行操作ecgnl作为输入数据。选择去趋势数据作为输出。默认的x-axis值为样本编号。因为心率的漂移频率不一致,所以通过在样本数据图中选择断点来识别分段趋势。选择一个自定义多项式类型,并指定多项式次为5。

结果可视化显示输入数据、分段多项式趋势和删除趋势后的数据。返回去趋势数据detrendedData大小和ecgnl.或者,要返回趋势,请使用输出字段。

若要查看此任务生成的代码,请单击展开任务显示这个向下的三角形在任务参数区域的底部。

生活任务

图中包含一个轴对象。axis对象包含4个line类型的对象。这些对象表示输入数据、去趋势数据、趋势和断点。

交互式地将阵列数据分解为其长期趋势、两个周期趋势和余数,利用黄土季节趋势分解(STL)算法与发现并删除趋势任务在实时编辑器。

创建一个变量数据其中包括一个长期趋势,两个不同时期的季节性趋势,以及一个噪声成分。创建一个图形来可视化数据。

T = (1:200)';趋势= 0.001*(t-100).^2;Period1 = 20;Period2 = 30;Seasonal1 = 2*sin(2*pi*t/period1);Seasonal2 = 0.75*sin(2*pi*t/period2);噪声= 2*(兰特(200,1)- 0.5);数据=趋势+季节性1 +季节性2 +噪声;情节(数据)

图中包含一个轴对象。axis对象包含一个line类型的对象。

添加发现并删除趋势任务添加到活动脚本。因为数据具有周期性的循环趋势,所以选择周期趋势类型。

通过选择将数据分解为其趋势成分数据作为输入数据和所有的趋势作为输出返回。因为数据中季节性趋势的周期是已知的,所以选择STL算法并将已知的周期长度指定为20和30个数据点。

在堆叠图中显示输入数据和由此产生的长期趋势、两个周期趋势和余数。Live Editor任务返回数组中已识别的趋势长期而且周期.或者,要返回去趋势化数据,请使用输出字段指定要删除的趋势类型。

若要查看此任务生成的代码,请单击展开任务显示这个向下的三角形在任务参数区域的底部。

生活任务

图中包含一个类型为stackedplot的对象。

交互式识别和返回周期趋势使用奇异谱分析(SSA)算法与发现并删除趋势任务在实时编辑器。

考虑1949年至1960年每月国际航空乘客总数的时间表。使用示例文件加载时间表Data_Airline.mat绘制出乘客数据。

负载(“Data_Airline.mat”“DataTimeTable”);情节(DataTimeTable“时间”“PSSG”)标题(“乘客数据”

图中包含一个轴对象。标题为Passenger Data, xlabel Time, ylabel PSSG的axes对象包含一个类型为line的对象。

注意,时间表的间隔是不规则的。的发现并删除趋势任务要求输入时间表有规律的间隔。

isregular (DataTimeTable.Time)
ans =逻辑0

使时间表规则,重新采样使用调整时间的时间表任务在实时编辑器。将数据插值到一个时间步长为30天的常规时间向量上,并在一个名为的时间表中返回重新采样的数据每月

生活任务
月=147×1的时间表时间PSSG ___________ ______ 01-Jan-1949 112 31-Jan-1949 117.81 02-Mar-1949 131.9 01-Apr-1949 129 01-May-1949 121 31-May-1949 134.55 30- june -1949 147.57 30- july -1949 148 29-Aug-1949 137.16 28- september -1949 120.7 28-Oct-1949 105.94 27- 11 -1949 116.13 27- 12 -1949 115.48 26-Jan-1950 123.87 25-Feb-1950 138.86 27-Mar-1950 135.97
isregular (monthly.Time)
ans =逻辑1

航空公司乘客数据显示季节性差异随着时间的推移而增加。因为发现并删除趋势任务使用加性分解模型分析序列,对数据应用日志转换。

每月。PSSGLog= log(monthly.PSSG);

然后,通过添加。来识别乘客数据中的周期性趋势发现并删除趋势任务添加到活动脚本。因为数据具有周期性的循环趋势,所以选择周期趋势类型。

的输入数据对乘客总数进行操作PSSGLog变量的每月.由于数据中季节性趋势的周期是未知的,所以选择SSA算法。增加周期性趋势的数量,直到剩余部分的基线变平。

在堆叠图中显示输入数据和由此产生的长期趋势、四个周期趋势和余数。Live Editor任务返回数组中已识别的趋势趋势.或者,要返回去趋势化数据,请使用输出字段指定要删除的趋势类型。

若要查看此任务生成的代码,请单击展开任务显示这个向下的三角形在任务参数区域的底部。

生活任务

图中包含一个类型为stackedplot的对象。

相关的例子

参数

全部展开

多项式趋势

此任务对包含在矢量、矩阵、多维数组、表格或时间表中的输入数据进行操作。数据可以是有类型的

对于表或时间表输入数据,该任务分别对每个表变量进行操作。对所有类型的变量进行操作中,选择所有受支万博1manbetx持的变量.来选择要操作的变量,选择指定的变量

周期性规律

此任务对包含在矢量、表或时间表中的输入数据进行操作。数据可以是有类型的.对于时间表输入数据,行时间向量必须有规律的间隔。

对于表或时间表输入数据,该任务分别对每个表变量进行操作。对所有类型的变量进行操作中,选择所有受支万博1manbetx持的变量.来选择要操作的变量,选择指定的变量

提示

  • 如果数据具有与时间序列水平成正比的季节变化,则使用日志在寻找周期性趋势之前对数据进行转换。

算法

全部展开

版本历史

R2019b引入

全部展开