Фильтрация данных

Фильтрация разностного уравнения

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

a(1)y(n)=b(1)x(n)+b(2)x(n1)++b(Nb)x(nNb+1)                 a(2)y(n1)a(Na)y(nNa+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 object. The axes object 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 object. The axes object contains 2 objects of type line. These objects represent Original Data, Filtered Data.

Ссылки

[1] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

Смотрите также

| | | |

Похожие темы