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.

Другие вопросы по тегам