Классический БИХ Создания фильтра

В этом примере показано, как разработать классические БИХ. Начальное особое внимание на ситуации, для которой критическим расчётным параметром является частота отключения, при которой степень фильтра уменьшается до половины (-3 дБ) номинального значения полосы пропускания.

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

Lowpass

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

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.

Фактор фазы

Если фаза является проблемой, полезно заметить, что проекты Баттерворта и Чебышёва типа 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

Соответствие точно спецификациям Passband или Stop Band

С проектами минимального порядка идеальный порядок должен быть округлён до следующего целого числа. Этот дополнительный дробный порядок позволяет алгоритму фактически превысить спецификации. Мы можем использовать MatchExactly флаг для ограничения алгоритма проекта, чтобы соответствовать в точности одной полосе. Другая полоса превысит свои спецификации. По умолчанию проекты Chebyshev Type 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

Фильтры Highpass, 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.