MATLAB: коэффициенты фильтра IIR
Я довольно новичок в обработке сигналов, и один из моих проектов - реализовать класс фильтра C++. Мне нужны коэффициенты более высокого порядка для типичных фильтров, таких как Чебышевские типы I и II, Баттерворт, Эллиптик, и, к сожалению, большинство таблиц коэффициентов в сети содержат только максимум до 10-го порядка. Я решил использовать MATLAB для генерации этих фильтров и получения их коэффициентов более высокого порядка, однако меня смущает лишь то, что они выдают только 1 набор коэффициентов, который, как я предполагаю, аналогичен высказыванию (ao,a1,a2..... ап).
Я узнал, что БИХ-фильтры имеют 2 набора коэффициентов, обычно выражаемых как a0,a1...an и b0,b1,...,bn. Вот мой код MATLAB для генерации этих коэффициентов и их экспорта в файл Excel:
%Chebyshev Filter Coefficients
filename = 'cheby2coefs.xlsx';
for Order = 1:64
fprintf('This is');
disp(Order);
fprintf('coefficients');
[i,j] = cheby2(Order, 20, 300/500);
disp([i,j]);
fprintf('\n');
xlswrite(filename,[i,j]',Order);
end
До сих пор в сети было мало источников о том, как придумать эти коэффициенты с помощью MATLAB, поэтому мне трудно. Мой вопрос заключается в том, как точно получить коэффициенты БИХ для этих фильтров (при условии, что они БИХ)?
2 ответа
Похоже, вы на правильном пути. Ваш звонок в cheby2
отсутствует Wst
параметр (частота полосы останова). Вы должны прочитать официальную документацию MATLAB для этой команды и подтвердить свой вызов.
Кроме того, не называйте выходные переменные i
а также j
Плохая практика. i
а также j
зарезервированные имена для sqrt(-1)
мнимое число. Назовите выходные переменные b
а также a
по крайней мере.
Как только вы закончите с Чебышевым, используйте butter
а также ellip
для Баттерворта и эллиптических фильтров соответственно.
Похоже, это описано в документации MATLAB:
[b, a] = cheby2 (n, R, Wst) создает низкочастотный цифровой фильтр Чебышева типа II порядка n с нормализованной краевой частотой полосы пропускания Wst и пульсацией полосы останова R dB вниз от пикового значения полосы пропускания. Он возвращает коэффициенты фильтра по длинам n+1 векторным строкам b и a с коэффициентами по убыванию степеней z.