В этом примере показано, как проектировать фильтр FIR нижних частот с помощью fdesign. Идеальный фильтр нижних частот требует бесконечной импульсной характеристики. Усечение или окнирование импульсной характеристики приводит к так называемому оконному методу конструкции КИХ-фильтра.
Фильтры FIR широко используются благодаря мощным алгоритмам проектирования, которые существуют для них, присущей им стабильности при реализации в нерекурсивной форме, легкости, с которой можно достичь линейной фазы, их простой расширяемости до многоскоростных случаев, и широкой аппаратной поддержке, которая существует для них среди других причин. В этом примере показаны функциональные возможности системы DSP, Toolbox™ для проектирования фильтров ПИХ нижних частот с различными характеристиками. Многие из представленных здесь концепций могут быть расширены на другие ответы, такие как высокий канал, полосовой канал и т.д.
Рассмотрим простую конструкцию фильтра нижних частот с частотой отсечки 0,4 * пи радиан на образец:
Fc = 0.4;
N = 100;
Hf = fdesign.lowpass('N,Fc',N,Fc);Мы можем разработать этот фильтр нижних частот с помощью метода окна. Например, можно использовать окно Хэмминга или окно Дольфа-Чебышева:
Hd1 = design(Hf,'window','window',@hamming,'systemobject',true); Hd2 = design(Hf,'window','window',{@chebwin,50}, ... 'systemobject',true); hfvt = fvtool(Hd1,Hd2,'Color','White'); legend(hfvt,'Hamming window design', ... 'Dolph-Chebyshev window design')

Выбор фильтра был произвольным. Поскольку в идеале порядок должен быть бесконечным, в общем случае больший порядок приводит к лучшему приближению к идеалу за счет более дорогостоящей реализации. Например, с помощью окна Дольфа-Чебышева можно уменьшить область перехода, увеличив порядок фильтрации:
Hf.FilterOrder = 200; Hd3 = design(Hf,'window','window',{@chebwin,50},... 'systemobject',true); hfvt2 = fvtool(Hd2,Hd3,'Color','White'); legend(hfvt2,'Dolph-Chebyshev window design. Order = 100',... 'Dolph-Chebyshev window design. Order = 200')

Чтобы определить подходящий порядок фильтрации, необходимо указать величину пульсации полосы пропускания и затухания полосы останова, которая будет допустима. Также необходимо задать ширину переходной области вокруг идеальной частоты отсечки. Последнее выполняют путем установки граничной частоты полосы пропускания и граничной частоты полосы останова. Разница между ними определяет ширину перехода.
Fp = 0.38;
Fst = 0.42;
Ap = 0.06;
Ast = 60;
setspecs(Hf,'Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast);Мы по-прежнему можем использовать метод окна вместе с окном Кайзера для проектирования фильтра нижних частот.
Hd4 = design(Hf,'kaiserwin','systemobject',true); measure(Hd4)
ans = Sample Rate : N/A (normalized frequency) Passband Edge : 0.38 3-dB Point : 0.39539 6-dB Point : 0.4 Stopband Edge : 0.42 Passband Ripple : 0.016058 dB Stopband Atten. : 60.092 dB Transition Width : 0.04
ans =
Sampling Frequency : N/A (normalized frequency) Passband Edge : 0.38 3-dB Point : 0.39539 6-dB Point : 0.4 Stopband Edge : 0.42 Passband Ripple : 0.016058 dB Stopband Atten. : 60.092 dB Transition Width : 0.04
Следует отметить, что ширина перехода, как указано, центрирована вокруг частоты отсечки 0,4 pi. Это станет точкой, в которой коэффициент усиления фильтра нижних частот равен половине коэффициента усиления полосы пропускания (или точкой, в которой фильтр достигает 6 дБ ослабления).
Конструкция окна Kaiser не является оптимальной, и в результате порядок фильтрации, необходимый для соответствия спецификациям с помощью этого метода, превышает необходимый. Конструкция Equiripple приводит к тому, что фильтр нижних частот имеет наименьший возможный порядок для соответствия набору спецификаций.
Hd5 = design(Hf,'equiripple','systemobject',true); hfvt3 = fvtool(Hd4,Hd5,'Color','White'); legend(hfvt3,'Kaiser window design','Equiripple design')

В этом случае 146 коэффициентов необходимы для эквириптной конструкции, в то время как 183 необходимы для оконной конструкции Кайзера.
design | fdesign | fdesign.lowpass | fvtool