Почему я получаю разные результаты при сравнении цифрового фильтра, разработанного с использованием функций МАСЛО и БИЛИНЕЙ, в Signal Processing Toolbox?

Используя следующие спецификации:

Fs     = 172800;
Fc     = 70000;

где «Fs» представляет частоту дискретизации, а «Fc» — частоту среза, я создал цифровой фильтр двумя разными способами:

1. Использование функции МАСЛО.

[B ,A] = butter(4,Fc/(Fs/2));

2. Использование функции БИЛИНЕАР для преобразования аналогового фильтра, разработанного с помощью функции МАСЛО, в цифровой фильтр посредством билинейного преобразования.

[Bs,As] = butter(4,Fc*2*pi,'s');
[Bz,Az] = bilinear(Bs,As,Fs);

Затем я использовал функцию FVTOOL для вычисления отклика величины и сравнил два результата:

fvtool(B,A,Bz,Az);

Обратите внимание, что результаты двух откликов величины не совпадают, хотя я использую одни и те же спецификации.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Это ожидаемое поведение для дискретизации фильтра в Signal Processing Toolbox. Приведенный выше пример иллюстрирует нелинейный характер билинейного преобразования. Чтобы противодействовать этой нелинейности, необходимо создать фильтры аналоговых доменов с предварительно деформированными краями полос, которые отображаются в правильных местах при билинейном преобразовании.

Если вы хотите спроектировать аналоговый фильтр, который будет эквивалентен дизайну с использованием опции «s» в функции BUTTER, вам необходимо выполнить предварительную деформацию частоты следующим образом:

Wc = tan(pi/2*Fc/(Fs/2)); % Analog prewarped freq. rad/second

Обратите внимание, что эта частота уже выражена в рад/секунду, поэтому аналоговая схема выглядит следующим образом:

[Bs,As] = butter(4,Wc,'s');

Теперь вопрос в том, какую частоту дискретизации (Fs) использовать с BILINEAR. В методе предварительной деформации, используемом для вычисления «Wc», мы неявно использовали билинейное преобразование, которое чаще всего встречается в литературе:

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ