| Signal Processing Toolbox | ![]() |
フィルタ処理のための関数
filterとは別に、Signal Processing Toolboxには、基本的なフィルタ処理を行う関数がいくつか用意されています。このような関数としては、リサンプリングによるFIRフィルタ処理を行うupfirdn、フィルタ処理過程での位相歪みを除去するfiltfilt、周波数領域でFIRフィルタ処理演算を行うfftfilt、ラティス実現を使ってフィルタ処理するlatcfiltがあります。
マルチレートフィルタバンクの実現
関数upfirdnは、信号のサンプリングレートを整数比P/Qに変更します。これは、つぎの3つの処理を行う3つのシステムをカスケードに処理を行なうものです。
pによるアップサンプリング(ゼロ内挿)hによるフィルタ処理qによるダウンサンプリング
たとえば、信号のサンプリングレートを44.1 kHzから48 kHzに変更するには、まず最小公倍数p/qを求めます。
d = gcd(48000,44100); p = 48000/d; q = 44100/d;
ここで、p = 160と q = 147が得られます。そして、
y=upfirdn(x,h,p,q).
を使って、サンプリングレート変換を行います。演算のカスケード部は、ポリフェーズフィルタリングの手法(polyphase filtering techniques)を用いて効率的な形で実現され、これがマルチレートフィルタ処理の中心的な概念となります(マルチレートフィルタ理論の詳細については、参考文献 [1]を参照してください)。リサンプリング結果の品質は、FIRフィルタhの特性に左右されることに注意してください。
フィルタバンクは、フィルタhを列単位に1つのFIRフィルタに対応する行列にすることによって、upfirdnを用いて実現することができます。信号ベクトルは、独立に各FIRフィルタに通され、その結果の出力信号の行列となります。
マルチレートフィルタリングを行う他の関数として、resample、 interp、 decimateも用意しています。
| 関数filter | 非因果的ゼロ位相フィルタの実現 | ![]() |