数据平滑是指消除数据中不需要的噪声或行为的技术,而离群值检测则识别出与其他数据有显著差异的数据点。
移动窗口方法是一种每次处理小批量数据的方法,通常是为了统计地表示数据中的一个邻近点。移动平均是一种常见的数据平滑技术,它沿着数据滑动窗口,计算每个窗口内点的平均值。这可以帮助消除从一个数据点到另一个数据点的不重要的变化。
例如,考虑在大约3小时内每分钟测量一次的风速。使用movmean
功能窗口大小为5分钟,以平稳高速阵风。
负载windData.mat分钟= 1:长度(速度);窗口= 5;meanspeed = movmean(速度、窗口);情节(分钟,速度,分钟,meanspeed)轴紧传奇(测量风速的,“平均风速超过5分钟视窗”,“位置”,“最佳”)包含(“时间”) ylabel (“速度”)
类似地,您可以使用movmedian
函数。
medianspeed = movmedian(速度、窗口);情节(分钟,速度,分钟,medianspeed)轴紧传奇(测量风速的,“风速中位数超过5分钟窗口”,“位置”,“最佳”)包含(“时间”) ylabel (“速度”)
并不是所有的数据都适合用移动窗口方法进行平滑。例如,创建一个注入随机噪声的正弦信号。
t = 1:0.2:15;sin(2* t) + cos(2* 0.5*t)噪声= A + 0.5*rand(1,长度(t));情节(t, t,声音吵醒)轴紧传奇(“原始数据”,“数据”,“位置”,“最佳”)
使用窗口大小为3的移动平均值来平滑噪声数据。
窗口= 3;Amean = movmean(声音吵醒,窗口);情节(t, t Amean)轴紧传奇(“原始数据”,“移动平均数-视窗大小3”)
移动平均达到了数据的一般形状,但不能非常准确地捕捉山谷(局部极小值)。由于谷点在每个窗口中都被两个较大的相邻点所包围,所以平均值并不是这些点的很好的近似。如果您使窗口大小变大,平均值将完全消除较短的峰值。对于这种类型的数据,您可以考虑其他平滑技术。
Amean = movmean(声音吵醒,5);情节(t, t Amean)轴紧传奇(“原始数据”,“移动平均数-窗口面积5”,“位置”,“最佳”)
的smoothdata
函数提供了几种平滑方法,如Savitzky-Golay方法,这是一种常用的信号处理平滑技术。默认情况下,smoothdata
根据数据选择方法的最佳猜测窗口大小。
使用Savitzky-Golay方法平滑噪声信号声音吵醒
,并输出它所使用的窗口大小。该方法提供了较好的谷近似movmean
.
[Asgolay,窗口]= smoothdata(声音吵醒,“sgolay”);情节(t, t Asgolay)轴紧传奇(“原始数据”,“Savitzky-Golay”,“位置”,“最佳”)
窗口
窗口= 3
稳健的Lowess方法是另一种平滑方法,当数据中除了噪声之外还有异常值时,它特别有用。在噪声数据中注入一个异常值,并使用鲁棒Lowess平滑数据,从而消除异常值。
声音吵醒(36)= 20;Arlowess = smoothdata(声音吵醒,“rlowess”5);情节(t,声音吵醒,t, Arlowess)轴紧传奇(“数据”,‘强健’洛斯)
数据中的异常值会显著地影响数据处理结果和其他计算量。例如,如果试图用移动的中值平滑包含离群值的数据,可能会得到误导的峰值或低谷。
Amedian = smoothdata(声音吵醒,“movmedian”);情节(t,声音吵醒,t, Amedian)轴紧传奇(“数据”,“移动平均”)
的isoutlier
函数在检测到离群值时返回逻辑1。验证中离群值的指标和值声音吵醒
.
TF = isoutlier(声音吵醒);印第安纳州=找到(TF)
印第安纳州= 36
Aoutlier =声音吵醒(印第安纳州)
Aoutlier = 20
你可以使用filloutliers
函数通过指定填充方法替换数据中的异常值。例如,填入离群值声音吵醒
它的右边邻居的值。
Afill = filloutliers(声音吵醒,“下一个”);情节(t,声音吵醒,t, Afill)轴紧传奇(“带有异常值的噪声数据”,“带有填充异常值的噪声数据”)
并非所有的数据都由等间距的点组成,这可能会影响数据处理的方法。创建一个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)轴紧传奇(“原始数据”,“使用默认样本点平滑数据”)
MATLAB®中的许多数据处理函数,包括smoothdata
,movmean
,filloutliers
,允许您提供采样点,确保数据是相对于其采样单位和频率进行处理的。去除数据前半小时的高频变化Airreg
,可以使用“SamplePoints”
选项带有时间戳时间
.
Asamplepoints = smoothdata (Airreg,“movmean”小时(3),“SamplePoints”、时间);情节(时间、Airreg时间,Asamplepoints)轴紧传奇(“原始数据”,“用样本点平滑数据”)
smoothdata
|isoutlier
|filloutliers
|movmean
|movmedian