В этом примере показано, как спроектировать lowpass конечная импульсная характеристика с помощью fdesign
. Идеальный lowpass требует бесконечной импульсной характеристики. Обрезка или оконная обработка импульсной характеристики, результатов в так называемом оконном методе конечной импульсной характеристики создания фильтра.
Конечная импульсная характеристика широко используются из-за мощных алгоритмов проекта, которые существуют для них, их неотъемлемой устойчивости при реализации в нерекурсивной форме, легкости, с которой можно достичь линейной фазы, их простой расширяемости для мультирейта случаев и достаточной аппаратной поддержки, которая существует по ним среди других причин. Этот пример демонстрирует функциональность в DSP System Toolbox™ для проекта низкочастотных конечных импульсных характеристик фильтров с различными характеристиками. Многие из представленных здесь концепций могут быть распространены на другие ответы, такие как highpass, bandpass и т.д.
Рассмотрим простой проект lowpass с частотой среза 0,4 * pi радиан на выборку:
Fc = 0.4;
N = 100;
Hf = fdesign.lowpass('N,Fc',N,Fc);
Мы можем спроектировать этот lowpass фильтр с помощью оконного метода. Для примера можем использовать Окно Хэмминга или окно Дольфа-Чебышёва:
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. Это станет точкой, в которой коэффициент усиления lowpass равен половине коэффициента усиления полосы пропускания (или точке, в которой фильтр достигает 6 дБ ослабления).
Проект окна Кайзера не является оптимальным проектом, и в результате порядок фильтра, требуемый для соответствия спецификациям с помощью этого метода, больше, чем должен быть. Equiripple проектов результата в lowpass-фильтре с наименьшим возможным порядком, чтобы соответствовать набору спецификаций.
Hd5 = design(Hf,'equiripple','systemobject',true); hfvt3 = fvtool(Hd4,Hd5,'Color','White'); legend(hfvt3,'Kaiser window design','Equiripple design')
В этом случае для проект equiripple необходимо 146 коэффициентов, в то время как для проекта окна Кайзера - 183.
design
| fdesign
| fdesign.lowpass
| fvtool