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