Вопросы о фильтрах нижних частот с использованием функции «масло» в Matlab

Я пытаюсь создать фильтр нижних частот в Matlab:

fc = 100;           % Cutoff frequency
fs = 4020;          % Sampling frequency
w_norm = 2*fc/fs;
filter_order = 1;
[num,denom] = butter(filter_order,w_norm)
sys = tf(num, denom)
[z,p,k] = zpkdata(sys)

Matlab дает мне полюс по адресу:

s = 0.8541

Мои вопросы:

  1. Откуда это число? Разве полюс не должен находиться в точке w = 2*pi*fc = 628 рад/с (нормализованной до 1 при делении на wc)?
  2. Не должно ли оно быть отрицательным, поскольку полюса низкочастотного фильтра Баттерворта находятся в левой полуплоскости?
  3. Почему Matlab также дает мне ноль при -1?

Большое спасибо.


person Graham    schedule 29.12.2014    source источник


Ответы (1)


По умолчанию butter создает фильтр с дискретным временем. Поэтому передаточная функция определяется в терминах z (z-преобразование), а не s (преобразование Лапласа).

Фильтр Баттерворта с дискретным временем порядка n имеет нулевой порядок n при z=-1 и n полюсов внутри единичного круга. Это в соответствии с вашими результатами. (Напротив, фильтр Баттерворта с непрерывным временем будет иметь нуль порядка n на бесконечности и n полюсов в левой единичной полуокружности).

person Luis Mendo    schedule 29.12.2014