КИХ-создание фильтра lowpass

В этом примере показано, как спроектировать КИХ-фильтр lowpass с помощью fdesign. Идеальный фильтр lowpass требует бесконечной импульсной характеристики. При усечении или работа с окнами импульсная характеристика приводит к так называемому методу окна КИХ-создания фильтра.

КИХ-создание фильтра Lowpass Используя различный Windows

КИХ-фильтры широко используются из-за мощных алгоритмов проекта, которые существуют для них, их свойственная устойчивость, когда реализовано в нерекурсивной форме, простоте, с которой может достигнуть линейной фазы, их простой расширяемости к многоскоростным случаям и вполне достаточной аппаратной поддержки, которая существует для них среди других причин. Этот пример демонстрирует функциональность в DSP System Toolbox™ для проекта низких КИХ-фильтров передачи со множеством характеристик. Многие концепции, представленные здесь, могут быть расширены к другим ответам, таким как highpass, полоса пропускания, и т.д.

Рассмотрите простой проект фильтра lowpass с частотой среза 0.4*pi радианы на выборку:

Fc = 0.4;
N = 100;
Hf = fdesign.lowpass('N,Fc',N,Fc);

Мы можем спроектировать этот фильтр lowpass с помощью метода окна. Например, мы можем использовать Окно Хэмминга или Dolph-окно-Чебышева:

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')

Выбор фильтра был произволен. Поскольку идеально порядок должен быть бесконечным, в целом, больший порядок приводит к лучшему приближению к идеалу за счет более дорогостоящей реализации. Например, с Dolph-окном-Чебышева, мы можем уменьшить область перехода путем увеличения порядка фильтра:

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')

Минимальный порядок создание фильтра Lowpass

Для того, чтобы определить подходящего порядка фильтра, необходимо задать сумму неравномерности в полосе пропускания и затухания в полосе задерживания, которое будет допускаться. Также необходимо задать ширину области перехода вокруг идеальной частоты среза. Последний сделан путем установки частоты ребра полосы пропускания и частоты ребра полосы задерживания. Различие между этими двумя определяет ширину перехода.

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 пи. Это станет точкой, в которой усиление фильтра lowpass является половиной усиления полосы пропускания (или точка, в которой фильтр достигает 6 дБ затухания).

Оптимальные проекты минимального порядка

Проект окна Кайзера не является оптимальным проектом, и в результате порядок фильтра, требуемый соответствовать спецификациям с помощью этого метода, больше, чем это должно быть. Экюриппл проектирует результат в фильтре lowpass с наименьшим порядком соответствовать набору спецификаций.

Hd5 = design(Hf,'equiripple','systemobject',true);
hfvt3 = fvtool(Hd4,Hd5,'Color','White');
legend(hfvt3,'Kaiser window design','Equiripple design')

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

Смотрите также

| | |

Похожие темы