В этом примере показано, как проектировать многоступенчатые полуполосные прореживатели IIR.
Подобно КИХ многоскоростным фильтрам, БИХ полуполосные прореживатели/интерполяторы могут быть реализованы с использованием эффективных многофазных структур. Полифазные фильтры БИХ обладают несколькими интересными свойствами: для их реализации требуется очень небольшое количество множителей, они по своей сути стабильны, имеют низкую чувствительность к шуму округления и не имеют предельных циклов.
Фильтры Butterworth и elliptic IIR могут быть спроектированы с типом полуполосного прореживания/интерполятора. Кроме того, можно достичь почти линейного фазового отклика с использованием специализированных алгоритмов БИХ проектирования.
Способ измерения вычислительной стоимости фильтра состоит в том, чтобы определить, сколько умножений необходимо вычислить (в среднем) на одну входную выборку (MPIS). Рассмотрим пример подсчета MPIS: FIR vs IIR для следующих спецификаций фильтра:
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 в каскаде. Полуполосные фильтры чрезвычайно эффективны, поскольку каждый другой коэффициент равен нулю.
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.
Эллиптические фильтры - это 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.
Если наложить амплитудные характеристики многостадийных фильтров FIR и IIR, два фильтра выглядят очень похожими и оба соответствуют спецификациям.
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
Хотя конструкция не так эффективна, как эллиптический случай, она, тем не менее, более эффективна, чем использование полубандов 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 в предыдущих разделах. Теперь возьмем, например, трансформатор Гильберта. Квазилинейно-фазовый фильтр БИХ Гильберта с шириной перехода 96Hz и максимальной пульсацией полосы пропускания 0,1 дБ может быть реализован как каскадно-волновой цифровой фильтр с использованием только 10 MPIS по сравнению с 133 MPIS для эквивалента FIR:
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 и Инструмент с фиксированной точкой для преобразования модели Simulink с плавающей точкой в фиксированную точку:
realizemdl(HilbertIIRFilt)

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