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

В этом примере показано, как спроектировать многоступенчатые полудиапазонные БИХ дециматоры.

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

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

Пример эффективности затрат

Способ измерения вычислительной стоимости фильтра состоит в том, чтобы определить, сколько умножений необходимо вычислить (в среднем) на входную выборку (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);

Многоступенчатая Полуполоса конечной импульсной характеристики Проекта

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

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 в среднем.

Многоступенчатая Полуполоса БИХ Проекта

Эллиптические фильтры являются БИХ оптимальных фильтров равновесия. Этот проект приводит к трём полуполосам БИХ в каскаде. Эллиптические проекты обеспечивают наиболее эффективный БИХ полуполосы проектов.

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

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

Путем изменения структуры, используемой для реализации каждого БИХ полуполосы фильтра, можно достичь почти линейных проектов фазы с помощью БИХ фильтров. Этот проект также приводит к трем полудиапазонным дециматорам в каскаде. Однако каждая полуполоса реализована определенным образом, который включает в себя чистую задержку, соединенную параллельно с фильтром 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

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

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

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

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

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

Полифазные БИХ могут быть реализованы различными способами. Мы уже сталкивались с односкоростным и многократным каскадным альпасом в предыдущих разделах. А теперь возьмем, например, трансформатор Гильберта. Квазилинейный фильтр Гильберта БИХ с шириной перехода 96Hz и максимальной неравномерности в полосе пропускания 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)

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

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

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

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