exponenta event banner

Реализация фильтра

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

Математическим фундаментом фильтрации является свертка. Для фильтра с конечной импульсной характеристикой (КИХ) выходной сигнал 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) соответствуют коэффициентам импульсной характеристики фильтра n-го порядка.

Примечание

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

Фильтры FIR также называются фильтрами всех нулей, невосстановительных или скользящих средних (MA).

Для фильтра с бесконечной импульсной характеристикой (БИХ) передаточная функция является не многочленом, а рациональной функцией. 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) фильтрами. Фильтры IIR с 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) год (2) =b (1) x (2) +b (2) x (1) −a (2) год (1) год (3) =b (1) x (3) +b (2) x (2) +b (3) x (1) −a (2) год (2) −a (3) год (1) y (n) =b (1) x (n) + +b (n) x (1) −a (2) год (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. Если первый элемент не равен 1, то filter делит коэффициенты на a (1) перед реализацией уравнения разности.

См. также

Приложения

Функции