О медианной фильтрации рядов данных.
Один из часто используемых типов фильтрации данных-это медианная фильтрация.
Вообще, что подразумевается под фильтрацией?
Это такой способ очистить данные от шума.
Но все по порядку:
Когда вы получаете какие-то данные с приборов, они ВСЕГДА содержат в себе шум. Это может быть аналоговый шум, в случае аналоговых приборов, или цифровой. В любом случае, он вносит погрешность в измерения.
Задача фильтрации -исключить шум, основываясь на его особенностях.
Существует большое разнообразие фильтров, обо всех здесь писать не буду, расскажу про медианную фильтрацию.
Как следует из названия, в его основе лежит функция, вычисляющая медиану.
Пусть у вас есть ряд данных x=[1,2,34,5,7].
Тогда чтобы вычислить медиану, нужно отсортировать этот массив и взять центральный элемент.
Отсортированый массив будет x=[1,2,5,7,34]
Центральный элемент 5. Он и будет медианой для этого массива.
Что видно из этого примера - фильтр исключает выбросы как вверх, так и вниз.
Теперь возьмём массив размером N, и окно w размером 2k+1 элементов.
Окно w перемещается по массиву х, выделяя подмассив y таким образом, что y[0,1,..2k] = x[i-k,..,x+k]. На массиве y вычисляется медиана и помещается в элемент x[i]. Далее i смещается на 1 элемент и все повторяется.
Размер окна w выбирается исходя из природы данных. Простой пример, полезный сигнал описывается ситусоидой с периодом T1.
На этот сигнал накладывается шум, с периодом T2, при этом T1>T2.
Размер окна должен быть таким, чтобы полезный сигнал в нем был примерно постоянным, а шумовой компонент менялся.