dsp。HampelFilter
使用Hampel标识符过滤异常值
描述
的dsp。HampelFilter
系统对象™通过使用Hampel标识符检测并移除输入信号的异常值。汉佩尔标识符是统计中三西格玛规则的一种变体,对异常值具有鲁棒性。对于输入信号的每个样本,对象计算由当前样本和组成的窗口的中位数
电流样品两侧相邻样品。Len窗口长度是否通过WindowLength
财产。该对象还通过使用中值绝对偏差估计每个样本关于其窗口中值的标准偏差。如果样本与中位数的差异大于阈值乘以标准差,则过滤器将样本替换为中位数。有关更多信息,请参见算法.
使用Hampel标识符对输入信号进行过滤:
创建
dsp。HampelFilter
对象并设置其属性。使用参数调用对象,就像调用函数一样。
有关系统对象如何工作的详细信息,请参见什么是系统对象?(MATLAB)。
创建
语法
描述
返回一个Hampel过滤器对象,hampFilt
= dsp。HampelFilterhampFilt
,使用默认属性。
设置hampFilt
= dsp。HampelFilter (Len
)WindowLength
财产Len
.
设置hampFilt
= dsp。HampelFilter (Len
,Lim
)WindowLength
财产Len
和阈值
财产Lim
.
hampFilt = dsp.HampelFilter(11,2);
使用hampFilt
= dsp。HampelFilter (名称,值
)名称,值
对。未指定的属性有默认值。
属性
使用
描述
输入参数
输出参数
对象的功能
要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj
,使用这种语法:
发行版(obj)
例子
更多关于
算法
对于给定的数据样本,x年代,算法为:
将奇数长度的窗口置于当前样本的中心。
计算局部中值,米我,标准差,σ我,超过当前窗口的数据。
比较当前样本nσ×σ我,在那里nσ为阈值。如果 ,滤波器识别当前样本,x年代,作为异常值,并将其替换为中值,米我.
考虑一个传递到Hampel过滤器的数据帧。
在这个例子中,Hampel过滤器滑动一个长度为5 (Len)而不是数据。过滤器的阈值为2 (nσ).为了在帧的开头有一个完整的窗口,过滤器算法在帧的前面加上Len- 1个0。为计算输出的第一个示例,窗口以 在附加的坐标系中,这里的第三个零。过滤器计算中位数、中位数绝对偏差和本地窗口中数据的标准偏差。
当前示例:x年代= 0。
数据窗口:赢得=[0 0 0 0 1]。
本地值:米我= median([0 0 0 0 1]) = 0。
绝对偏差中位数: .对于这个数据窗口, .
标准偏差:σ我=κ×疯了我= 0,其中 .
当前的样本,x年代= 0,不符合异常值检测关系。
因此,Hampel滤波器输出当前输入样本,x年代= 0。
对后续的每个样本重复此过程,直到算法将窗口居中
样品,标记为结束
.因为窗户的中心在最后一个
样本不能是满的,这些样本与下一帧输入数据一起处理。
下面是Hampel过滤器生成的第一个输出帧:
附加的输入帧的第七个样本23是一个异常值。Hampel过滤器将该样本替换为局部窗口上的中值[4 9 23 8 12]。
参考文献
[1]波登汉姆,迪恩。流数据的自适应过滤和变化检测博士论文。帝国理工学院,伦敦,2012。
[2]刘汉聪Sirish Shah Wei Jiang。“在线异常值检测和数据清理。”计算机与化学工程.第28卷,2004年3月,第1635-1647页。
[3] Suomela, Jukka。中值滤波等价于排序, 2014年。