主要内容

dsp.HampelFilter

使用Hampel过滤异常值标识符

描述

dsp.HampelFilter系统对象™的异常值检测和删除输入信号通过Hampel标识符。Hampel标识符是一个变动的西格玛规则健壮的统计数据对离群值。对于每一个样本的输入信号,计算对象的中值当前样本和组成的一个窗口 l e n 1 2 当前样本的两边相邻样本。Len您所指定的窗口长度通过吗WindowLength财产。对象还估计每个样本的标准偏差对其窗口值通过使用平均绝对偏差。如果一个样本不同于超过阈值中位数乘以标准差,过滤器替换的样本值。有关更多信息,请参见算法

过滤输入信号使用Hampel标识符:

  1. 创建dsp.HampelFilter对象并设置其属性。

  2. 调用对象的参数,就好像它是一个函数。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

hampFilt= dsp.HampelFilter返回一个Hampel过滤器对象,hampFilt使用缺省属性。

例子

hampFilt= dsp.HampelFilter (Len)设置WindowLength财产Len

hampFilt= dsp.HampelFilter (Len,Lim)设置WindowLength财产Len阈值财产Lim

例子:2 hampFilt = dsp.HampelFilter(11日);

hampFilt= dsp.HampelFilter (名称,值)指定属性的使用名称,值对。未指定的属性有默认值。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

如果一个属性被列为可调,那么你可以改变它的值,即使对象是锁着的。

长度的滑动窗口,指定为一个积极奇怪的标量整数。数据窗口有限长度的幻灯片,和对象计算值和平均绝对偏差的数据窗口。

数据类型:|

阈值异常值检测、指定为一个积极的真正的标量。关于如何使用这个属性的信息来检测离群值,明白了算法

可调:是的

数据类型:|

使用

描述

例子

y= hampFilt (x)检测并删除离群值的每个通道的输入信号,x随着时间的推移,独立使用Hampel过滤器。

(y,isOutlier)= hampFilt (x)返回一个逻辑数组,isOutlier中,每个真正的元素表明,相应的输入是一个局外人。isOutlier是相同的大小作为输入和输出向量。

输入参数

全部展开

数据输入,指定为一个向量或矩阵。对象接受多路输入,——- - - - - -n大小的输入,≥1,n> 1。样品的数量在每一帧(频道),然后呢n通道的数量。对象还接受适应输入。在对象被锁定后,您可以更改每个输入通道的大小,但你不能改变通道的数量。

数据类型:|

输出参数

全部展开

过滤数据,返回向量或矩阵。

数据类型:|

逻辑数组的元素表示如果相应的输入数组中的元素是一个局外人。如果一个元素isOutlier真正的,相应的输入数组中的元素是一个例外。

数据类型:逻辑

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

从嘈杂的正弦波滤波器高频噪声信号使用Hampel过滤器。比较Hampel滤波器和中值滤波器的性能。

初始化

建立了一个dsp.HampelFilter和一个dsp.MedianFilter对象。这些对象使用滑动窗口方法的窗口长度7。创建时间范围查看输出。

Fs = 1000;hampFilt = dsp.HampelFilter (7);medFilt = dsp.MedianFilter (7);范围= timescope (“SampleRate”Fs,“TimeSpanOverrunAction”,“滚动”,“TimeSpanSource”,“属性”,“时间间隔”,1“ShowGrid”,真的,“LayoutDimensions”(3 - 1),“NumInputPorts”3);范围。ActiveDisplay = 1;范围。Title =“信号+噪声”;范围。YLimits = [1 3];范围。ActiveDisplay = 2;范围。Title =“Hampel滤波器输出(窗口长度= 7)';范围。YLimits = [1];范围。ActiveDisplay = 3;范围。Title =的中值滤波器输出(窗口长度= 7)';范围。YLimits = [1];

过滤器的使用一个窗口长度为7的正弦波

生成一个嘈杂的正弦波信号的频率10赫兹。应用Hampel信号滤波和中值滤波对象。查看输出的时间范围。

FrameLength = 256;正弦= dsp.SineWave (“SampleRate”Fs,“频率”10“SamplesPerFrame”,FrameLength);我= 1:50 0 hfn = 3 *(兰德(FrameLength, 1) < 0.02);x = sin() + 1依照* randn (FrameLength 1) + hfn;日元= hampFilt (x);y2 = medFilt (x);范围(x, y1, y2);结束(范围)

这两个过滤器去除高频噪声。然而,当你增加窗口长度,Hampel过滤器者优先。与中值滤波,Hampel过滤器保持正弦波的形状甚至大窗口长度。

滤波器的使用一个窗口长度为37的正弦波

窗口长度增加到37的过滤器。过滤器的正弦波和视图过滤输出的时间范围。改变窗口长度的过滤器,你必须释放过滤的对象开始的时候处理循环。

释放(hampFilt);释放(medFilt);hampFilt。WindowLength = 37;medFilt。WindowLength = 37;范围。ActiveDisplay = 1;范围。Title =“信号+噪声”;范围。ActiveDisplay = 2;范围。Title =“Hampel滤波器输出(窗口长度= 37)';范围。ActiveDisplay = 3;范围。Title =的中值滤波器输出(窗口长度= 37)';我= 1:50 0 hfn = 3 *(兰德(FrameLength, 1) < 0.02);x = sin() + 1依照* randn (FrameLength 1) + hfn;日元= hampFilt (x);y2 = medFilt (x);范围(x, y1, y2);结束(范围)

中值滤波平缓正弦波的波峰和波谷由于操作在一个大窗口中值的数据。Hampel过滤器保护信号的形状,除了删除离群值。

删除从流媒体信号使用高频离群值dsp.HampelFilter系统对象™。

使用dsp.MatFileReader读取陀螺仪垫文件系统对象。的数据文件包含三列,每列包含7140个样本。三列代表x设在,y设在,z设在陀螺仪运动传感器的数据。选择一个帧大小的714个样本,这样每一列的数据包含10帧。的dsp.HampelFilter系统对象使用一个窗口的长度11。创建一个timescope对象查看过滤输出。

读者= dsp.MatFileReader (“SamplesPerFrame”,714,“文件名”,“LSM9DSHampelgyroData73.mat”,“VariableName”,“数据”);hampFilt = dsp.HampelFilter (11);范围= timescope (“NumInputPorts”,1“SampleRate”,119,“YLimits”(-300 300),“ChannelNames”,{“输入”,“过滤输出”},“TimeSpanSource”,“属性”,“时间间隔”现年60岁的“ShowLegend”,真正的);

过滤陀螺仪数据使用dsp.HampelFilter系统对象。查看过滤z设在数据的时间范围。

我= 1:10 gyroData =读者();filteredData = hampFilt (gyroData);范围([gyroData (:, 3), filteredData (:, 3)));结束

Hampel过滤器移除所有的异常值和保留信号的形状。

更多关于

全部展开

算法

对于一个给定的样本数据,x年代该算法:

  • 中心的窗户奇数长度在当前样本。

  • 计算当地的值,和标准偏差,σ在当前窗口的数据。

  • 比较了当前样本nσ×σ,在那里nσ是阈值。如果 | x 年代 | > n σ × σ 过滤器标识当前样本,x年代,作为一个局外人和取代它与中值,

考虑一个帧的数据传递到Hampel过滤器。

在这个例子中,Hampel过滤器幻灯片的窗口长度5 (Len)的数据。过滤器的阈值2 (nσ)。有一个完整的窗口框架的一开始,过滤算法框架加Len- 1 0。计算的第一个示例输出,窗口中心的 ( l e n 1 2 + 1 ] th 附加的样本框架,第三个零。过滤器计算中值,平均绝对偏差和标准偏差数据在本地窗口。

  • 当前示例:x年代= 0。

  • 窗口的数据:赢得= (0 0 0 0 1)。

  • 本地值:中值= ((0 0 0 0 1))= 0。

  • 平均绝对偏差: 一个 d = 中位数 ( | x k | , , | x + k | ) 。这个窗口的数据, 一个 d = 中位数 ( | 0 0 | , , | 1 0 | ) = 0

  • 标准偏差:σ=κ×疯了= 0, κ = 1 2 误差补函数 1 ( 1 / 2 ) 1.4826

  • 当前的样品,x年代= 0,不服从的关系异常值检测。

    ( | x 年代 | = 0 ] > ( ( n σ × σ ) = 0 ]

    因此,Hampel滤波器输出当前的输入样本,x年代= 0。

每一个成功样本重复这个过程,直到算法中心的窗口 ( E n d l e n 1 2 ] th 示例中,标记为结束。因为窗口集中在最后一个 l e n 1 2 不能完整样本,这些样本处理与下一帧的输入数据。

这是第一个输出帧Hampel过滤器生成:

第七个样品的附加输入帧,23岁,是个例外。Hampel过滤器替换这个样本中位数在本地窗口[4 9 23 8 12]。

引用

[1]Bodenham,院长。“自适应过滤,流数据变化检测。“博士论文。伦敦帝国理工学院,2012。

[2]刘、Hancong Sirish Shah,魏江。“在线异常值检测和数据清洗。”电脑和化学工程。28卷,2004年3月,页1635 - 1647。

[3]Suomela Jukka。中值滤波相当于排序,2014年。

扩展功能

版本历史

介绍了R2017a