文档

使用Hampel标识符消除异常值

所使用的过程的简单实现hampel检测和去除异常值。实际的函数要快得多。

生成一个随机信号,x,包含24个样本。重置随机数发生器可重现的结果。

rng默认的Lx = 24;X = randn(1,lx);

的每个元素周围生成一个观察窗口x.取k=样本两侧的2个邻居。得到的移动窗口的长度为 2 × 2 + 1 5 样本。

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));结束

缩放中位数绝对偏差

1 2 e r f - 1 1 / 2 1 4 8 2 6

得到正态分布的标准差的估计。

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”“关闭”)举行

另请参阅