Фильтры - это методы обработки данных, которые могут сглаживать высокочастотные флуктуации данных или удалять периодические тренды конкретной частоты из данных. В MATLAB ®, filter функция фильтрует вектор данных x в соответствии со следующим уравнением разности, которое описывает фильтр линии задержки с отводом.
−... − a (Na) y (n − Na + 1)
В этом уравнении a и b являются векторами коэффициентов фильтра, Na является порядком фильтра обратной связи, и Nb является порядком фильтра прямой связи. n - индекс текущего элемента x. Выход y (n) является линейной комбинацией текущего и предыдущего элементов x и y.
filter функция использует указанные векторы коэффициентов a и b для фильтрации входных данных x. Подробнее о уравнениях разностей, описывающих фильтры, см. [1].
filter функция является одним из способов реализации фильтра скользящего среднего, который является общей методикой сглаживания данных.
Следующее уравнение разности описывает фильтр, который усредняет зависящие от времени данные относительно текущего часа и трех предыдущих часов данных.
) + 14x (n-3)
Импорт данных, описывающих поток трафика во времени, и назначение вектору первого столбца количества транспортных средств x.
load count.dat
x = count(:,1);Создайте векторы коэффициентов фильтра.
a = 1; b = [1/4 1/4 1/4 1/4];
Вычислите 4-часовое скользящее среднее данных и постройте график как исходных, так и отфильтрованных данных.
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')

В этом примере показано, как изменить амплитуду вектора данных путем применения передаточной функции.
В цифровой обработке сигналов фильтры часто представлены передаточной функцией. Z-преобразование дифференциального уравнения
(n-1) -... -a (Na) y (n-Na + 1)
- следующая передаточная функция.
) z-1 +... + a (Na) z-Na + 1X (z)
Используйте функцию переноса
3z-11 + 0 .2z-1
для изменения амплитуды данных в count.dat.
Загрузите данные и назначьте вектору первый столбец x.
load count.dat
x = count(:,1);Создайте векторы коэффициентов фильтра в соответствии с передаточной функцией ).
a = [1 0.2]; b = [2 3];
Вычислите отфильтрованные данные и постройте график как исходных данных, так и отфильтрованных данных. Этот фильтр в первую очередь изменяет амплитуду исходных данных.
y = filter(b,a,x); t = 1:length(x); plot(t,x,'--',t,y,'-') legend('Original Data','Filtered Data')

[1] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. Река Верхнее Седло, Нью-Джерси: Прентис-Холл, 1999.
conv | filter | filter2 | movmean | smoothdata