Фильтры являются методами обработки данных, которые могут сглаживать высокочастотные колебания данных или удалять периодические тренды определенной частоты из данных. В MATLAB®, filter
функция фильтрует вектор данных x согласно следующему разностному уравнению, которое описывает фильтр на линии задержки с отводами.
В этом уравнении a и b являются векторами коэффициентов фильтра, Na является порядком фильтра с обратной связью и Nb является порядком фильтра с feedforward. n - индекс текущего элемента x. Выход y (n) является линейной комбинацией тока и предыдущих элементов x и y.
The filter
функция использует указанные векторы коэффициентов a и b, чтобы фильтровать входные данные x. Для получения дополнительной информации о разностных уравнениях, описывающих фильтры, см. [1].
The filter
функция является одним из способов реализации фильтра скользящего среднего, который является общим методом сглаживания данных.
Следующее разностное уравнение описывает фильтр, который усредняет зависящие от времени данные относительно текущего часа и трех предыдущих часов данных.
Импортируйте данные, которые описывают поток трафика с течением времени, и присвойте первый столбец отсчета транспортного средства вектору 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-преобразование разностного уравнения
является следующей передаточной функцией.
Используйте передаточную функцию
для изменения амплитуды данных в 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] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. Upper Saddle River, NJ: Prentice Hall, 1999.
conv
| filter
| filter2
| movmean
| smoothdata