June 2, 2024

О медианной фильтрации рядов данных.

Один из часто используемых типов фильтрации данных-это медианная фильтрация.

Вообще, что подразумевается под фильтрацией?
Это такой способ очистить данные от шума.

Но все по порядку:
Когда вы получаете какие-то данные с приборов, они ВСЕГДА содержат в себе шум. Это может быть аналоговый шум, в случае аналоговых приборов, или цифровой. В любом случае, он вносит погрешность в измерения.

Задача фильтрации -исключить шум, основываясь на его особенностях.

Существует большое разнообразие фильтров, обо всех здесь писать не буду, расскажу про медианную фильтрацию.

Как следует из названия, в его основе лежит функция, вычисляющая медиану.

Пусть у вас есть ряд данных x=[1,2,34,5,7].

Тогда чтобы вычислить медиану, нужно отсортировать этот массив и взять центральный элемент.

Отсортированый массив будет x=[1,2,5,7,34]

Центральный элемент 5. Он и будет медианой для этого массива.

Что видно из этого примера - фильтр исключает выбросы как вверх, так и вниз.

Теперь возьмём массив размером N, и окно w размером 2k+1 элементов.

При этом N больше чем w.

Окно w перемещается по массиву х, выделяя подмассив y таким образом, что y[0,1,..2k] = x[i-k,..,x+k]. На массиве y вычисляется медиана и помещается в элемент x[i]. Далее i смещается на 1 элемент и все повторяется.

Размер окна w выбирается исходя из природы данных. Простой пример, полезный сигнал описывается ситусоидой с периодом T1.

На этот сигнал накладывается шум, с периодом T2, при этом T1>T2.

Размер окна должен быть таким, чтобы полезный сигнал в нем был примерно постоянным, а шумовой компонент менялся.