Внедрение фильтра

Свертка и фильтрация

Математическая основа фильтрации является сверткой. Для фильтра конечной импульсной характеристики (FIR) выход y (k) операции фильтрации является сверткой входного сигнала x (k) с импульсной характеристикой h (k):

y(k)=∑l=−∞∞h(l) x(k−l).

Если входной сигнал имеет также конечную длину, можно реализовать операцию фильтрации с помощью MATLAB® conv функция. Например, чтобы отфильтровать случайный вектор с пятью выборками с фильтром усреднения третьего порядка, можно сохранить x (k) в векторном x, h (k) в векторном h, и примените операцию свертки к двум:

x = randn(5,1);
h = [1 1 1 1]/4;   % A third-order filter has length 4
y = conv(h,x)
y =
   -0.3375
    0.4213
    0.6026
    0.5868
    1.1030
    0.3443
    0.1629
    0.1787
Длина y тот меньше, чем сумма длин x и h.

Фильтры и передаточные функции

Передаточной функцией фильтра является Z-преобразование своей импульсной характеристики. Для КИХ-фильтра Z-преобразование выхода y, Y (z), является продуктом передаточной функции и X (z), Z-преобразование входа x:

Y(z)=H(z)X(z)=(h(1)+h(2)z−1+⋯+h(n+1)z−n)X(z).

Полиномиальные коэффициенты h (1), h (2), …, h (n + 1) соответствуют коэффициентам импульсной характеристики фильтра th-порядка n.

Примечание

Содействующие индексы фильтра, запущенные от 1 до (n + 1), а не от 0 до n. Это отражает стандартную схему индексации, используемую для векторов MATLAB.

КИХ-фильтры также называются все-нулем, нерекурсивными фильтрами, или скользящего среднего значения (MA).

Для фильтра бесконечной импульсной характеристики (IIR) передаточная функция не является полиномом, а рациональной функцией. Z-преобразования сигналов ввода и вывода связаны

Y(z)=H(z)X(z)=b(1)+b(2)z−1+...+b(n+1)z−na(1)+a(2)z−1+...+a(m+1)z−mX(z),

где b (i) и a (i) является коэффициентами фильтра. В этом случае порядок фильтра является максимумом n и m. БИХ-фильтры с n = 0 также называются все-полюсом, рекурсивным, или авторегрессивным (AR) фильтры. БИХ-фильтры и с n и с m, больше, чем нуль, также называются нулем полюса, рекурсивное, или авторегрессивное скользящее среднее значение (ARMA) фильтры. AR акронимов, MA и ARMA обычно применяются к фильтрам, сопоставленным с отфильтрованными стохастическими процессами.

Фильтрация с filter Функция

Для БИХ-фильтров операция фильтрации описана не простой сверткой, а разностным уравнением, которое может быть найдено от отношения передаточной функции. Примите, что a (1) = 1, переместите знаменатель в левую сторону и возьмите обратное Z-преобразование, чтобы получить

y(k)+a(2) y(k−1)+…+a(m+1) y(k−m)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n).

В терминах текущих и прошлых входных параметров, и мимо выходных параметров, y (k)

y(k)=b(1) x(k)+b(2) x(k−1)+⋯+b(n+1) x(k−n)−a(2) y(k−1)−⋯−a(m+1) y(k−m),

который является стандартным представлением временного интервала цифрового фильтра. Начиная с y (1) и принятие причинной системы с нулевыми начальными условиями, представление эквивалентно

y(1)=b(1) x(1)y(2)=b(1) x(2)+b(2) x(1)−a(2) y(1)y(3)=b(1) x(3)+b(2) x(2)+b(3) x(1)−a(2) y(2)−a(3) y(1)  ⋮   y(n)=b(1) x(n)+⋯+b(n) x(1)−a(2) y(n−1)−⋯−a(n) y(1).

Чтобы реализовать эту операцию фильтрации, можно использовать MATLAB filter функция. filter хранит коэффициенты в двух векторах-строках, один для числителя и один для знаменателя. Например, чтобы решить разностное уравнение

y(n)−0.9y(n−1)=x(n) ⇒ Y(z)=11−0.9 z−1X(z)=H(z) X(z),

можно использовать

b = 1;
a = [1 -0.9];
y = filter(b,a,x);
filter дает вам столько же выходных выборок, сколько существуют входные выборки, то есть, длина y совпадает с длиной x. Если первый элемент a не 1, то filter делит коэффициенты на a (1) прежде, чем реализовать разностное уравнение.

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

Приложения

Функции