使用Hampel标识符消除异常值
所使用的过程的简单实现hampel
检测和去除异常值。实际的函数要快得多。
生成一个随机信号,x
,包含24个样本。重置随机数发生器可重现的结果。
rng默认的Lx = 24;X = randn(1,lx);
的每个元素周围生成一个观察窗口x
.取k
=样本两侧的2个邻居。得到的移动窗口的长度为
样本。
K = 2;iLo = (1:lx)-k;iHi = (1:lx)+k;
截断窗口,以便函数在到达信号边缘时计算较小段的中值。
iLo(iLo<1) = 1;iHi(iHi>lx) = lx;
记录每个周围窗口的中间值。求每个元素相对于窗口中值的绝对偏差的中值。
为j = 1:lx w = x(iLo(j):iHi(j));Medj =中位数(w);Mmed (j) = medj;Mmad (j) =中位数(abs(w-medj));结束
缩放中位数绝对偏差
得到正态分布的标准差的估计。
Sd = mmad/(erfinv(1/2)*√(2));
找出与中位数相差大于的样本nd
= 2个标准差。将每个异常值替换为其周围窗口的中值。这就是Hampel算法的精髓。
Nd = 2;Ki = abs(x-mmed) > nd*sd;Yu = x;Yu (ki) = mmed(ki);
使用hampel
函数计算滤波后的信号并标注异常值。覆盖本例中计算的过滤值。
hampel (x, k, nd)在情节(yu,“o”,“HandleVisibility”,“关闭”)举行从