У меня есть фильтр Баттерворта первого порядка с частотой среза . Его передаточная функция тогда
Используя билинейное преобразование, чтобы найти (как называется эта функция?), Я получаю
Однако я не могу согласовать этот результат с тем, что делает Matlab. Это кажется неправильным, независимо от того , какое значение . Я предполагаю, что и ниже находятся коэффициенты .H ( z )B
A
>> [B,A] = butter(1,0.5)
B = 0.5000 0.5000
A = 1.0000 -0.0000
>> [B,A] = butter(1,0.6)
B = 0.5792 0.5792
A = 1.0000 0.1584
>> [B,A] = butter(1,0.7)
B = 0.6625 0.6625
A = 1.0000 0.3249
>> [B,A] = butter(1,0.8)
B = 0.7548 0.7548
A = 1.0000 0.5095
Что я недопонимаю?
Ответы:
Пара вещей:
Перед выполнением подстановки необходимо предварительно обрезать частоту среза, выполнив подстановку:с = 2TZ- 1Z+ 1
где - деформированная частота среза. Это необходимо, потому что билинейное преобразование отображает левую полуплоскость в области Лапласа (используется в конструкции аналогового фильтра) в единичную окружность в -домене нелинейным образом. Поэтому при приближении к скорости Найквиста (цифровые частоты ) приближение к прототипу аналогового фильтра становится неточным. z ± πωс , ш Z ± π
Кроме того, вторым параметром, который вы передаете вT ( 0 , 1 )
butter
функцию, является нормализованная частота среза, а не интервал выборки . Нормализованная частота, используемая этой функцией, находится в интервале и равна отношению желаемой частоты среза к скорости Найквиста:( 0 , 1 )источник
Открывая код для
butter
функции MATLAB , мы видим, что она использует предварительное преобразование частоты :источник