exponenta event banner

Классическая конструкция фильтра IIR

В этом примере показано, как проектировать классические фильтры IIR. Первоначальный фокус на ситуации, для которой критическим расчетным параметром является частота отсечки, при которой мощность фильтра падает до половины (-3 дБ) номинального значения полосы пропускания.

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

Фильтры нижних частот

Давайте сконструируем фильтр 8-го порядка с нормированной частотой отсечки 0,4pi. Во-первых, мы создаем фильтр Баттерворта, который является максимально плоским (нет пульсации в полосе пропускания или в полосе останова):

N = 8; 
F3dB = .4;
d = fdesign.lowpass('N,F3dB',N,F3dB);
Hbutter = design(d,'butter','SystemObject',true)
Hbutter = 
  dsp.BiquadFilter with properties:

                   Structure: 'Direct form II'
             SOSMatrixSource: 'Property'
                   SOSMatrix: [4x6 double]
                 ScaleValues: [5x1 double]
           InitialConditions: 0
    OptimizeUnityScaleValues: true

  Show all properties

Конструкция типа I Чебышева позволяет контролировать рябь в полосе пропускания. В стоп-полосе до сих пор нет ряби. Более крупные ряби обеспечивают более крутой накат. Здесь мы определяем пиковые пульсации 0.5dB:

Ap = .5;
setspecs(d,'N,F3dB,Ap',N,F3dB,Ap);
Hcheby1 = design(d,'cheby1','SystemObject',true);
hfvt = fvtool(Hbutter,Hcheby1,'Color','white');
axis([0 .44 -5 .1])
legend(hfvt,'Butterworth','Chebyshev Type I');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent Butterworth, Chebyshev Type I.

Конструкция типа II Чебышева позволяет контролировать затухание стоп-полосы. Рябь в полосе пропускания отсутствует. Меньшее затухание полосы останова обеспечивает более крутой накат. В этом примере мы задаем затухание полосы останова 80 дБ:

Ast = 80;
setspecs(d,'N,F3dB,Ast',N,F3dB,Ast);
Hcheby2 = design(d,'cheby2','SystemObject',true);
hfvt = fvtool(Hbutter,Hcheby2,'Color','white');
axis([0 1 -90 2])
legend(hfvt,'Butterworth','Chebyshev Type II');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent Butterworth, Chebyshev Type II.

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

setspecs(d,'N,F3dB,Ap,Ast',N,F3dB,Ap,Ast);
Hellip = design(d,'ellip','SystemObject',true);
hfvt = fvtool(Hbutter,Hcheby1,Hcheby2,Hellip,'Color','white');
axis([0 1 -90 2])
legend(hfvt, ...
    'Butterworth','Chebyshev Type I','Chebyshev Type II','Elliptic');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 4 objects of type line. These objects represent Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic.

Увеличивая полосу пропускания, мы проверяем, что все фильтры имеют одинаковую точку частоты -3dB, и что только модели Butterworth и Chebyshev Type II имеют совершенно плоскую полосу пропускания:

axis([0 .44 -5 .1])

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 4 objects of type line. These objects represent Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic.

Рассмотрение этапа

Если фаза является проблемой, полезно отметить, что конструкции Butterworth и Chebyshev Type II также вносят меньшее искажение (их групповая задержка более плоская):

hfvt.Analysis = 'grpdelay';

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains 4 objects of type line. These objects represent Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic.

Проекты минимального заказа

В случаях, когда частота отсечки 3dB не представляет основного интереса, но вместо этого и полоса пропускания, и полоса останова полностью определены с точки зрения частот и количества допустимых пульсаций, мы можем использовать метод конструирования минимального порядка:

Fp = .1; 
Fst = .3; 
Ap = 1;
Ast = 60;
setspecs(d,'Fp,Fst,Ap,Ast',Fp,Fst,Ap,Ast);
Hbutter = design(d,'butter','SystemObject',true);
Hcheby1 = design(d,'cheby1','SystemObject',true);
Hcheby2 = design(d,'cheby2','SystemObject',true);
Hellip = design(d,'ellip','SystemObject',true);
hfvt = fvtool(Hbutter,Hcheby1,Hcheby2,Hellip, 'DesignMask', 'on',...
    'Color','white');
axis([0 1 -70 2])
legend(hfvt, ...
    'Butterworth','Chebyshev Type I','Chebyshev Type II','Elliptic');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 5 objects of type line. These objects represent Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic.

Фильтр 7-го порядка необходим для соответствия спецификации с конструкцией Butterworth, тогда как 5-го порядка достаточно с любой из методик Чебышева. Порядок фильтра может быть даже уменьшен до 4 с эллиптической конструкцией:

order(Hbutter)
ans = 7
order(Hcheby1)
ans = 5
order(Hcheby2)
ans = 5
order(Hellip)
ans = 4

Соответствие точным спецификациям полосы пропускания или полосы останова

В конструкциях с минимальным порядком идеальный порядок должен быть округлен до следующего целого числа. Этот дополнительный дробный порядок позволяет алгоритму фактически превышать спецификации. Мы можем использовать MatchExactly флаг для ограничения алгоритма конструирования до соответствия только одной полосе. Другая полоса будет превышать свои спецификации. По умолчанию конструкции типа I Чебышева соответствуют полосе пропускания, Butterworth и Chebyshev Type II соответствуют полосе останова, а затухания обеих полос соответствуют эллиптической схеме (при превышении частоты края полосы останова):

Hellipmin1    = design(d, 'ellip', 'MatchExactly', 'passband',...
    'SystemObject',true);
Hellipmin2 = design(d, 'ellip', 'MatchExactly', 'stopband',...
    'SystemObject',true);
hfvt = fvtool(Hellip, Hellipmin1, Hellipmin2, 'DesignMask', 'on',...
    'Color','white');
axis([0 1 -80 2]);
legend(hfvt, 'Matched passband and stopband', ...
    'Matched passband', 'Matched stopband', ...
    'Location', 'Northeast')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 4 objects of type line. These objects represent Matched passband and stopband, Matched passband, Matched stopband.

Увеличьте масштаб полосы пропускания, чтобы сравнить края полосы пропускания. Согласованная полоса пропускания и согласованная обе конструкции имеют затухание ровно 1 дБ при Fpass = .1:

axis([0 .11 -1.1 0.1]);
legend(hfvt, 'Location', 'Southwest')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 4 objects of type line. These objects represent Matched passband and stopband, Matched passband, Matched stopband.

Мы проверяем, что результирующий порядок фильтров не изменился:

order(Hellip)
ans = 4
order(Hellipmin1)
ans = 4
order(Hellipmin2)
ans = 4

Фильтры High Pass, Bandpass и Bandstop

Результаты, представленные выше, могут быть расширены на типы ответа с высокой полосой пропускания, полосой пропускания и полосой пропускания. Например, здесь представлены полосовые фильтры минимального порядка:

d = fdesign.bandpass('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2', ...
    .35,.45,.55,.65,60,1,60);
Hbutter = design(d,'butter','SystemObject',true);
Hcheby1 = design(d,'cheby1','SystemObject',true);
Hcheby2 = design(d,'cheby2','SystemObject',true);
Hellip = design(d,'ellip','SystemObject',true);
hfvt = fvtool(Hbutter,Hcheby1,Hcheby2,Hellip, 'DesignMask', 'on',...
    'Color','white');
axis([0 1 -70 2])
legend(hfvt, ...
    'Butterworth','Chebyshev Type I','Chebyshev Type II','Elliptic',...
    'Location', 'Northwest')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 5 objects of type line. These objects represent Butterworth, Chebyshev Type I, Chebyshev Type II, Elliptic.