Signal Processing Toolbox    
filtfilt

ゼロ位相ディジタルフィルタリング

表示

詳細

y = filtfilt(b,a,x) は、入力データを順方向と逆方向の両方でフィルタリングすることにより、ゼロ位相ディジタルフィルタリングを実行します(参考文献[1]の問題5.39を参照)。順方向でフィルタ処理した後、フィルタ処理したデータ列を逆にして、再度フィルタリングを行ないます。得られるデータ列は、厳密に位相歪みがゼロになり、大きさは倍になります。filtfiltは、初期条件を適切に設定することにより、処理を行なう最初の部分と最後の部分の過渡状態を最小限に抑えることができます。

これらのフィルタの演算は、位相応答に非常に依存しているので、filtfiltは、微分器やHilbert FIR フィルタと共には使いません。

アルゴリズム

filtfiltは、関数filterを使ったM-ファイルです。順方向-逆方向フィルタリングに加え、初期条件を調整して信号の直流成分を一致させたり、入力信号を反転し、フィルタの長さの数倍の長さのデータを付加することにより、処理開始部の過渡状態を最小限に抑えようとします。

参考
fftfilt
オーバラップ法を使ったFFTベースFIRフィルタリング
filter
巡回型(IIR)または非巡回型(FIR)フィルタによるデータのフィルタリング
filter2
2次元ディジタルフィルタリング

参考文献

[1] Oppenheim, A.V., and R.W. Schafer, Discrete-Time Signal Processing, Prentice-Hall, 1989, pp. 311-312.


 filter2 filtic