exponenta event banner

Фильтровать данные

Уравнение разности фильтров

Фильтры - это методы обработки данных, которые могут сглаживать высокочастотные флуктуации данных или удалять периодические тренды конкретной частоты из данных. В MATLAB ®, filter функция фильтрует вектор данных x в соответствии со следующим уравнением разности, которое описывает фильтр линии задержки с отводом.

a (1) y (n) = b (1) x (n) + b (2) x (n 1) + . . .    b  (  Nb )  x  ( n Nb + 1) a (2) y (n 1) −... − a (Na) y (n − Na + 1)

В этом уравнении a и b являются векторами коэффициентов фильтра, Na является порядком фильтра обратной связи, и Nb является порядком фильтра прямой связи. n - индекс текущего элемента x. Выход y (n) является линейной комбинацией текущего и предыдущего элементов x и y.

filter функция использует указанные векторы коэффициентов a и b для фильтрации входных данных x. Подробнее о уравнениях разностей, описывающих фильтры, см. [1].

Фильтр скользящих средних данных трафика

filter функция является одним из способов реализации фильтра скользящего среднего, который является общей методикой сглаживания данных.

Следующее уравнение разности описывает фильтр, который усредняет зависящие от времени данные относительно текущего часа и трех предыдущих часов данных.

y (n) = 14x (n) + 14x (n-1) + 14x (n-2) + 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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original Data, Filtered Data.

Изменение амплитуды данных

В этом примере показано, как изменить амплитуду вектора данных путем применения передаточной функции.

В цифровой обработке сигналов фильтры часто представлены передаточной функцией. Z-преобразование дифференциального уравнения

a (1) y (n) = b (1) x (n) + b (2) x (n-1) +... b (Nb) x (n-Nb + 1) -a (2) y (n-1) -... -a (Na) y (n-Na + 1)

- следующая передаточная функция.

Y (z) = H (z-1) X (z) = b (1) + b (2) z-1 +... + b (Nb) z-Nb + 1a (1) + a (2) z-1 +... + a (Na) z-Na + 1X (z)

Используйте функцию переноса

H (z-1) = b (z-1) a (z-1) = 2 + 3z-11 + 0 .2z-1

для изменения амплитуды данных в count.dat.

Загрузите данные и назначьте вектору первый столбец x.

load count.dat
x = count(:,1);

Создайте векторы коэффициентов фильтра в соответствии с передаточной функцией H (z-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')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Original Data, Filtered Data.

Ссылки

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

См. также

| | | |

Связанные темы