このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
多段フィルター設計の IIR ハーフバンド段階
この例では、多段間引きおよび内挿の IIR ハーフバンド段階について説明します。
はじめに
レート変換フィルターは、ローパス フィルターおよびダウンサンプリング ブロックまたはアップサンプリング ブロックのカスケードである多段間引きおよび内挿を使用して効率的に実装できます。designMultistageDecimator
とdesignMultistageInterpolator
を使用することで、このような効率的な多段設計を取得できます。既定では、これらの設計には FIR ローパス フィルターが使用されます (通常はカイザー ウィンドウまたは等リップル設計)。ただし、フィルター仕様が FIR 段階と同じであれば、FIR ローパス フィルターを IIR ローパス フィルターに置き換えることもできます。FIR マルチレート フィルターと同様に、IIR の間引きと内挿は、ポリフェーズ構造を使用して効率的に実装できます。IIR ポリフェーズ フィルターには、FIR 設計に優るいくつかの興味深い利点があります。これらは、非常に少数の乗数の実装のみを必要とするため、計算コストが小さくなります。また、ゲイン応答も向上します。IIR 設計の欠点は、非線形位相であること、そして固定小数点で実装した場合、不安定さ、量子化に対する感度、およびリミット サイクルの問題に起因する潜在的な課題があることです。ただし、このような IIR 設計の欠点は対処できることもあります。
この例では、間引きのハーフバンド段階に焦点を当てていますが、この方法論は内挿と同様に、より高いレートに一般化できます。
コスト効率のケース スタディ
畳み込みフィルターの計算コストは、MPIS、つまり入力サンプルごとに必要な乗算の数 (平均) に大きく影響されます。この例では、MPIS カウントをフィルターの計算コストとして測定します。ケース スタディとして、以下のフィルター仕様でのいくつかの FIR 設計と IIR 設計を解析します。
Fs = 9.6e3; % Sampling frequency: 9.6 kHz TW = 120; % Transition width Ast = 80; % Minimum stopband attenuation: 80 dB M = 8; % Decimation factor
多段ハーフバンド標準 FIR の設計
designMultistageDecimator
を使用して、効率的な多段 FIR 間引き設計を取得できます。この例では、designMultistageDecimator
を使用してレート M
=8
の間引きを設計することで、3 つの FIR ハーフバンド間引きのカスケードを得られます。
MultistageFIRDecim = designMultistageDecimator(M,Fs,TW,Ast)
MultistageFIRDecim = dsp.FilterCascade with properties: Stage1: [1x1 dsp.FIRDecimator] Stage2: [1x1 dsp.FIRDecimator] Stage3: [1x1 dsp.FIRDecimator] CloneStages: false
この既定の設計は、平均で 12.875 MPIS の計算コストを達成します。関数cost
を使用して、設計したフィルターカスケード System object™ の計算コストを決定します。
cost(MultistageFIRDecim)
ans = struct with fields:
NumCoefficients: 69
NumStates: 126
MultiplicationsPerInputSample: 12.8750
AdditionsPerInputSample: 12
ハーフバンド IIR の変換
カスケード MultistageFIRDecim
の場合、すべてのハーフバンド間引き段階を同等の IIR 設計に置き換えます。このデモに含まれる関数 redesignHalfbandStages(origDesign, DesignMethod)
は、カスケード origDesign
のすべてのハーフバンド段階を、DesignMethod
で指定された方法を使用してdsp.IIRHalfbandDecimator
System object 設計に置き換えます。設計法は、"Elliptic"
または "Quasi-linear phase"
のいずれかです。
まず、最適な FIR 等リップル フィルターの IIR に相当する楕円の設計を使用します。楕円の設計によって、最も効率的な IIR ハーフバンド設計が得られます。
MultistageIIRDecim = redesignHalfbandStages(MultistageFIRDecim, "Elliptic");
cost(MultistageIIRDecim)
ans = struct with fields:
NumCoefficients: 11
NumStates: 17
MultiplicationsPerInputSample: 2.5000
AdditionsPerInputSample: 5
この方法は、平均わずか 2.5 MPIS という安価な計算コスト (FIR 設計の 5 分の 1) を達成します。
振幅応答の比較
FIR および IIR マルチレート多段フィルターの振幅応答を重ねます。2 つのフィルターは非常によく似ており、いずれも仕様を満たしています。
fvFig = fvtool(MultistageFIRDecim,MultistageIIRDecim); legend(fvFig,'Multirate/Multistage FIR Polyphase', 'Multirate/Multistage IIR Polyphase')
詳細な検査では、IIR フィルターの通過帯域リップルが FIR フィルターの通過帯域リップルとの比較で非常に優れていることが示されます。したがって、計算コストでの節約によって、振幅応答の劣化が発生しないことがわかります。
zoom(fvFig,[0 0.325 -0.0016 0.0016])
準線形位相ハーフバンド IIR の設計
IIR 設計の欠点は、非線形位相のために歪みが生じる可能性があることです。これは、非線形位相を補正することで大幅に緩和できます。特殊な IIR 設計アルゴリズムを使用すると、線形位相に非常に近い応答が得られます。dsp.IIRHalfbandDecimator
の設計法 "Quasi-linear phase"
は、フィルターの通過帯域で線形位相に非常に近い応答を得られます。
この方法では、IIR ハーフバンド フィルターは、オールパス フィルターと並列に接続される純粋な遅延を含む方法で実装されます。この実装上の制約により、準線形位相応答 (ほぼフラットな群遅延) を提供しやすくなります。この実装は、楕円の設計と比較して、計算コストを多少増加することで得られます。
IIRLinearPhaseFilt = redesignHalfbandStages(MultistageFIRDecim, "Quasi-linear phase");
cost(IIRLinearPhaseFilt)
ans = struct with fields:
NumCoefficients: 25
NumStates: 55
MultiplicationsPerInputSample: 4.3750
AdditionsPerInputSample: 8.7500
楕円の場合ほど効率的ではありませんが、この設計は FIR ハーフバンド フィルターを使用するよりもはるかに効率的です。
群遅延の比較
3 つの設計の群遅延を重ね合わせて、フィルターの通過帯域 (対象領域) に注目することで、後者の IIR 設計がその領域のほぼフラットな群遅延を実現することを検証できます。対照的に、楕円フィルターは、より効率的である (および全体的により低い群遅延もつ) 一方で、非線形位相応答があるのは明らかです。
fvFig = fvtool(MultistageFIRDecim, MultistageIIRDecim, IIRLinearPhaseFilt, Analysis='grpdelay'); zoom(fvFig, [0 0.6 0 225]); legend(fvFig, 'Linear-Phase FIR', 'Nonlinear Phase Elliptic IIR', 'Quasi-Linear Phase IIR')
まとめ
マルチレート設計では、問題の仕様や要件に応じて、FIR または IIR のいずれかを選択できます。それぞれのアプローチには、利点と欠点があります。
IIR フィルターは、従来、同等の FIR よりもはるかに、数値的に効率的に特定の仕様を満たすことができると見なされてきました。また、振幅応答も向上しています。欠点としては、非線形位相であること (歪みが生じる) や、数値的に敏感である可能性があることなどが挙げられます。
これに対し、FIR フィルターは、線形位相応答とロバストな数値的動作 (特に固定小数点実装の場合) を提供できます。ただし、FIR フィルターは計算コストが高く、IIR フィルターよりも振幅応答が劣るという問題があります。
特別な構造 (ポリフェーズ手法など) を利用することで、2 つのアプローチのギャップを埋めることができます。ポリフェーズ FIR フィルターは単相よりも計算効率が高くなります。同様に、ポリフェーズ IIR フィルターは、FIR フィルターにあるほとんどの利点 (数値安定性やほぼフラットな群遅延) を備えながら、計算コストも抑えることができます。