Многоступенчатое БИХ-создание фильтра полуполосы

В этом примере показано, как спроектировать многоступенчатую полуполосу IIR decimators.

Подобно КИХ-многоскоростным фильтрам полуполоса IIR, decimators/interpolators, может быть реализована с помощью эффективных многофазных структур. БИХ многофазные фильтры представляют несколько интересных свойств: они требуют, чтобы очень небольшое количество множителей реализовало, они по сути устойчивы, имеют низкую чувствительность шума округления и никакие предельные циклы.

Баттерворт и эллиптические БИХ-фильтры могут быть спроектированы с полуполосой тип ответа decimator/interpolator. Кроме того, возможно достигнуть почти линейного фазового отклика с помощью специализированных БИХ-алгоритмов проекта.

Тематическое исследование экономической эффективности

Способ измерить вычислительную стоимость фильтра состоит в том, чтобы определить, сколько умножения должно быть вычислено (в среднем) на входную выборку (MPIS). Рассмотрите тематическое исследование количества MPIS: КИХ по сравнению с БИХ для следующих спецификаций фильтра:

Fs  = 9.6e3;   % Sampling frequency: 9.6 kHz
TW  = 120;     % Transition width
Ast = 80;      % Minimum stopband attenuation: 80 dB
M   = 8;       % Decimation factor
NyquistDecimDesign = fdesign.decimator(M,'Nyquist',M,TW,Ast,Fs);

Многоступенчатый КИХ-проект полуполосы

Способ получить эффективные КИХ-проекты с помощью многоскоростных многоступенчатых методов. Этот проект приводит к трем полуполосам FIR decimators в каскаде. Полуленточные фильтры чрезвычайно эффективны, потому что любой коэффициент является нулем.

MultistageFIRDecim = design(NyquistDecimDesign,'multistage',...
           'HalfbandDesignMethod','equiripple','SystemObject',true);
cost(MultistageFIRDecim)
ans = 

  struct with fields:

                  NumCoefficients: 69
                        NumStates: 126
    MultiplicationsPerInputSample: 12.8750
          AdditionsPerInputSample: 12

Этот метод достигает вычислительных затрат на 12.875 MPIS в среднем.

Многоступенчатый БИХ-проект полуполосы

Эллиптические фильтры являются БИХ, эквивалентным из оптимальных фильтров equiripple. Этот проект приводит к трем полуполосам IIR decimators в каскаде. Эллиптические проекты производят самые эффективные проекты полуполосы IIR.

MultistageIIRDecim = design(NyquistDecimDesign,'multistage',...
    'HalfbandDesignMethod','ellip','SystemObject',true);
cost(MultistageIIRDecim)
ans = 

  struct with fields:

                  NumCoefficients: 11
                        NumStates: 17
    MultiplicationsPerInputSample: 2.5000
          AdditionsPerInputSample: 5

Этот метод достигает вычислительных затрат только на 2,5 MPIS в среднем.

Если мы накладываем ответы величины КИХ и БИХ многоскоростные фильтры мультиэтапов, два фильтра выглядят очень похожими, и оба соответствуют спецификациям.

fvFig = fvtool(MultistageFIRDecim,MultistageIIRDecim,'Color','white');
legend(fvFig, 'Multirate/Multistage FIR Polyphase', ...
    'Multirate/Multistage IIR Polyphase')

Тщательное изучение на самом деле показывает неравномерности в полосе пропускания БИХ-фильтра, чтобы далеко превзойти тот из КИХ-фильтра. Таким образом, вычислительное сокращение затрат не происходит в цену ухудшенного ответа величины.

fvtool(MultistageFIRDecim,MultistageIIRDecim,'Color','white');
title('Passband Magnitude Response (dB)')
axis([0 0.325 -0.0016 0.0016])

Квазилинейные БИХ-проекты полуполосы фазы

Путем изменения структуры, используемой, чтобы реализовать каждый БИХ-полуленточный фильтр, возможно достигнуть почти линейных проектов фазы с помощью БИХ-фильтров. Этот проект также приводит к трем полуполосам decimators в каскаде. Однако каждая полуполоса реализована в особенном методе, который включает чистую задержку, соединенную параллельно с фильтром allpass. Это ограничение на реализацию помогает обеспечить квази линейный фазовый отклик. Это прибывает за счет небольшого увеличения вычислительной стоимости по сравнению с эллиптическими проектами.

IIRLinearPhaseFilt = design(NyquistDecimDesign,'multistage',...
    'HalfbandDesignMethod','iirlinphase','SystemObject',true);
cost(IIRLinearPhaseFilt)
ans = 

  struct with fields:

                  NumCoefficients: 25
                        NumStates: 55
    MultiplicationsPerInputSample: 4.3750
          AdditionsPerInputSample: 8.7500

Несмотря на то, что не столь эффективный как эллиптический случай, проект, тем не менее, более эффективен, чем использование полуполос FIR.

Сравнение групповой задержки

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

fvFig = fvtool(MultistageFIRDecim,MultistageIIRDecim,IIRLinearPhaseFilt,...
    'Color','white','Analysis','grpdelay');
axis([0 0.6 0 225])
title('Passband Group delay')
legend(fvFig, 'Linear-Phase FIR', 'Nonlinear Phase Elliptic IIR',...
    'Quasi-Linear Phase IIR')

Робастность фиксированной точки

Многофазные БИХ-фильтры могут быть реализованы по-разному. Мы уже столкнулись с односкоростным и многоскоростным каскадом allpass в предыдущих разделах. Теперь возьмите Гильбертов преобразователь, например. Квази БИХ линейной фазы Гильбертов фильтр с шириной перехода 96 Гц и максимальной неравномерностью в полосе пропускания 0,1 дБ может быть реализован как каскадный цифровой фильтр волны с помощью только 10 MPIS по сравнению с 133 MPIS для эквивалентного КИХ:

HilbertDesign = fdesign.hilbert('TW,Ap',96,.1,Fs);
HilbertIIRFilt = design(HilbertDesign,'iirlinphase',...
                 'FilterStructure','cascadewdfallpass',...
                 'SystemObject',true);
cost(HilbertIIRFilt)
ans = 

  struct with fields:

                  NumCoefficients: 10
                        NumStates: 33
    MultiplicationsPerInputSample: 10
          AdditionsPerInputSample: 25

Цифровые фильтры волны, как доказывали, были очень устойчивы, даже когда полюса близко к модульному кругу. Они по сути устойчивы, имеют низкие свойства шума округления и свободны от предельных циклов. Чтобы преобразовать нашего БИХ, Гильберт фильтрует к представлению фиксированной точки, мы можем использовать realizemdl команду и Fixed-Point Tool, чтобы сделать преобразование из плавающей запятой в фиксированную запятую модели Simulink:

realizemdl(HilbertIIRFilt)

Сводные данные

БИХ-фильтры были традиционно рассмотрены намного более эффективными, чем их КИХ-дубликаты в том смысле, что они требуют намного меньшего количества коэффициентов для того, чтобы соответствовать данному набору спецификаций.

Современные КИХ-инструменты создания фильтра, использующие многоскоростные/многофазные методы, устранили разрыв при обеспечении линейного фазового отклика наряду с хорошей чувствительностью к эффектам квантования и отсутствию устойчивости и ограничивают проблемы циклов, когда реализовано в фиксированной точке.

Однако многофазные фильтры БИХ обладают большинством преимуществ, что КИХ-фильтры имеют и требуют, чтобы очень небольшое количество множителей реализовало.