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 | 非因果的ゼロ位相フィルタの実現 | ![]() |