Фильтруйте выбросы с помощью идентификатора Хампеля
The dsp.HampelFilter
Система object™ обнаруживает и удаляет выбросы входного сигнала с помощью идентификатора Хампеля. Этот Идентификатор Хампеля является изменением правила статистики с тремя сигмами, которое устойчиво к выбросам. Для каждой выборки входного сигнала объект вычисляет медиану окна, состоящего из текущей выборки и смежные выборки с каждой стороны токовой выборки. Len - длина окна, заданная вами через WindowLength
свойство. Объект также оценивает стандартное отклонение каждой выборки относительно ее медианы окна с помощью медианного абсолютного отклонения. Если выборка отличается от медианы больше, чем порог, умноженный на стандартное отклонение, фильтр заменяет выборку на медиану. Для получения дополнительной информации см. «Алгоритмы».
Для фильтрации входного сигнала с помощью идентификатора Хампеля:
Создайте dsp.HampelFilter
Объекту и установите его свойства.
Вызывайте объект с аргументами, как будто это функция.
Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».
возвращает объект фильтра Hampel, hampFilt
= dsp.HampelFilterhampFilt
, с использованием свойств по умолчанию.
устанавливает hampFilt
= dsp.HampelFilter(Len
)WindowLength
свойство к Len
.
устанавливает hampFilt
= dsp.HampelFilter(Len
, Lim
)WindowLength
свойство к Len
и Threshold
свойство к Lim
.
hampFilt = dsp.HampelFilter(11,2);
задает свойства используя hampFilt
= dsp.HampelFilter(Name,Value
)Name,Value
пар. Неопределенные свойства имеют значения по умолчанию.
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj
, используйте следующий синтаксис:
release(obj)
Для заданной выборки данных, xs, алгоритм:
Центрирует окно нечетной длины в текущей выборке.
Вычисляет локальную медиану, mi и стандартное отклонение, σi, над активным окном данных.
Сравнивает текущую выборку с nσ × σi, где nσ - пороговое значение. Если фильтр идентифицирует текущую выборку, xs, как выбросы и заменяют ее медианным значением, mi.
Рассмотрим систему координат данных, которая передается в фильтр Хэмпеля.
В этом примере фильтр Hampel скользит по данным окном длины 5 (Len). Фильтр имеет порог значение 2 (nσ). Чтобы иметь полное окно в начале системы координат, алгоритм фильтра готовит систему координат с Len - 1 нулями. Чтобы вычислить первую выборку выхода, окно центрируется на выборка в добавленной системе координат, третий нуль в этом случае. Фильтр вычисляет медиану, среднее абсолютное отклонение и стандартное отклонение по данным в локальном окне.
Текущая выборка: xs = 0.
Окно данных: win = [0 0 0 0 1].
Локальная медиана: mi = медиана ([0 0 0 0 1]) = 0.
Срединное абсолютное отклонение: . Для этого окна данных, .
Стандартное отклонение: σi = κ × madi = 0, где .
Текущая выборка xs = 0 не подчиняется отношению для определения выбросов.
Поэтому фильтр Хэмпела выводит текущую входную выборку, xs = 0.
Повторите эту процедуру для каждой последующей выборки, пока алгоритм не центрирует окно на выборка, отмеченный как End
. Потому что окно с центром на последнем выборки не могут быть полными, эти выборки обрабатываются следующей системой координат входных данных.
Вот первый выходной кадр, который генерирует фильтр Хэмпеля:
Седьмая выборка добавленного входного кадра 23 является выбросами. Фильтр Хэмпела заменяет эту выборку медианой над локальным окном [4 9 23 8 12].
[1] Боденем, Дин. «Адаптивная фильтрация и обнаружение изменений для потоковых данных». PH.D. Дипломная работа. Имперский колледж, Лондон, 2012.
[2] Лю, Ханьсун, Сириш Шах и Вэй Цзян. «Оперативное определение выбросов и очистка данных». Компьютеры и химическая техника. Том 28, 2004 марта, с. 1635-1647.
[3] Суомела, Юкка. Медианная фильтрация эквивалентна сортировке, 2014.