主要内容

数据平滑和离群值检测

数据平滑是指消除数据中不需要的噪声或行为的技术,而离群值检测则识别出与其他数据有显著差异的数据点。

移动窗口方法

移动窗口方法是一种每次处理小批量数据的方法,通常是为了统计地表示数据中的一个邻近点。移动平均是一种常见的数据平滑技术,它沿着数据滑动窗口,计算每个窗口内点的平均值。这可以帮助消除从一个数据点到另一个数据点的不重要的变化。

例如,考虑在大约3小时内每分钟测量一次的风速。使用movmean功能窗口大小为5分钟,以平稳高速阵风。

负载windData.mat分钟= 1:长度(速度);窗口= 5;meanspeed = movmean(速度、窗口);情节(分钟,速度,分钟,meanspeed)轴传奇(测量风速的“平均风速超过5分钟视窗”“位置”“最佳”)包含(“时间”) ylabel (“速度”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表测量风速,平均风速超过5分钟窗口。

类似地,您可以使用movmedian函数。

medianspeed = movmedian(速度、窗口);情节(分钟,速度,分钟,medianspeed)轴传奇(测量风速的“风速中位数超过5分钟窗口”“位置”“最佳”)包含(“时间”) ylabel (“速度”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表测量风速,平均风速超过5分钟窗口。

并不是所有的数据都适合用移动窗口方法进行平滑。例如,创建一个注入随机噪声的正弦信号。

t = 1:0.2:15;sin(2* t) + cos(2* 0.5*t)噪声= A + 0.5*rand(1,长度(t));情节(t, t,声音吵醒)轴传奇(“原始数据”“数据”“位置”“最佳”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表原始数据,噪声数据。

使用窗口大小为3的移动平均值来平滑噪声数据。

窗口= 3;Amean = movmean(声音吵醒,窗口);情节(t, t Amean)轴传奇(“原始数据”“移动平均数-视窗大小3”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表原始数据,移动平均窗口大小3。

移动平均达到了数据的一般形状,但不能非常准确地捕捉山谷(局部极小值)。由于谷点在每个窗口中都被两个较大的相邻点所包围,所以平均值并不是这些点的很好的近似。如果您使窗口大小变大,平均值将完全消除较短的峰值。对于这种类型的数据,您可以考虑其他平滑技术。

Amean = movmean(声音吵醒,5);情节(t, t Amean)轴传奇(“原始数据”“移动平均数-窗口面积5”“位置”“最佳”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表原始数据,移动平均窗口大小5。

常见的平滑方法

smoothdata函数提供了几种平滑方法,如Savitzky-Golay方法,这是一种常用的信号处理平滑技术。默认情况下,smoothdata根据数据选择方法的最佳猜测窗口大小。

使用Savitzky-Golay方法平滑噪声信号声音吵醒,并输出它所使用的窗口大小。该方法提供了较好的谷近似movmean

[Asgolay,窗口]= smoothdata(声音吵醒,“sgolay”);情节(t, t Asgolay)轴传奇(“原始数据”“Savitzky-Golay”“位置”“最佳”

图中包含一个坐标轴。轴线包含2个线型对象。这些物体代表原始数据,Savitzky-Golay。

窗口
窗口= 3

稳健的Lowess方法是另一种平滑方法,当数据中除了噪声之外还有异常值时,它特别有用。在噪声数据中注入一个异常值,并使用鲁棒Lowess平滑数据,从而消除异常值。

声音吵醒(36)= 20;Arlowess = smoothdata(声音吵醒,“rlowess”5);情节(t,声音吵醒,t, Arlowess)轴传奇(“数据”‘强健’洛斯

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表噪声数据,鲁棒Lowess。

检测异常值

数据中的异常值会显著地影响数据处理结果和其他计算量。例如,如果试图用移动的中值平滑包含离群值的数据,可能会得到误导的峰值或低谷。

Amedian = smoothdata(声音吵醒,“movmedian”);情节(t,声音吵醒,t, Amedian)轴传奇(“数据”“移动平均”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表有噪声的数据,移动的中值。

isoutlier函数在检测到离群值时返回逻辑1。验证中离群值的指标和值声音吵醒

TF = isoutlier(声音吵醒);印第安纳州=找到(TF)
印第安纳州= 36
Aoutlier =声音吵醒(印第安纳州)
Aoutlier = 20

你可以使用filloutliers函数通过指定填充方法替换数据中的异常值。例如,填入离群值声音吵醒它的右边邻居的值。

Afill = filloutliers(声音吵醒,“下一个”);情节(t,声音吵醒,t, Afill)轴传奇(“带有异常值的噪声数据”“带有填充异常值的噪声数据”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象表示带离群值的噪声数据,带填充离群值的噪声数据。

非均匀数据

并非所有的数据都由等间距的点组成,这可能会影响数据处理的方法。创建一个datetime中数据的不规则采样时间向量Airreg.的时间向量表示前30分钟每分钟采集的样本,然后是两天内每小时采集的样本。

t0 = datetime(2014年,1,1,1,1,1);Timeminutes = sort(t0 + minutes(1:30));Timehours = t0 + hours(1:48);Time =[时间分钟时间小时];Airreg =兰德(1、长度(时间);情节(时间,Airreg)轴

图中包含一个坐标轴。轴包含一个线型对象。

默认情况下,smoothdata对等间距整数进行平滑,在这种情况下,1、2、…,78.由于整数时间戳与中点的采样不协调Airreg,前半小时的数据在平滑后仍出现噪声。

Adefault = smoothdata (Airreg,“movmean”3);情节(时间、Airreg时间,Adefault)轴传奇(“原始数据”“使用默认样本点平滑数据”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表原始数据,带有默认采样点的平滑数据。

MATLAB®中的许多数据处理函数,包括smoothdatamovmean,filloutliers,允许您提供采样点,确保数据是相对于其采样单位和频率进行处理的。去除数据前半小时的高频变化Airreg,可以使用“SamplePoints”选项带有时间戳时间

Asamplepoints = smoothdata (Airreg,“movmean”小时(3),“SamplePoints”、时间);情节(时间、Airreg时间,Asamplepoints)轴传奇(“原始数据”“用样本点平滑数据”

图中包含一个坐标轴。轴线包含2个线型对象。这些对象代表原始数据、样本点平滑数据。

另请参阅

||||

相关的话题