MATLABのfiltfiltの利点は何ですか


30

MATLAB filtfiltは、順方向、逆方向のフィルタリングを実行します。つまり、フィルタリング、信号のリバース、再度のフィルタリング、そして再度のリバースです。どうやらこれは位相遅れを減らすために行われたのですか?このようなフィルタリングを使用することの利点/欠点は何ですか(フィルター次数の効果的な増加につながると思います)。

(つまり、前方フィルタリングのみ)のfiltfilt代わりに、常に使用することが望ましいでしょうfilterか?これを使用する必要があるアプリケーションと使用しないアプリケーションがありますか?


音声にゼロ位相フィルタリングを使用しないでください。奇妙に聞こえる「プリリンギング」が発生します。最小位相フィルタリングはより自然です。ccrma.stanford.edu/~jos/filters/Linear_Phase_Really_Ideal.html
endolith

回答:


34

周波数領域で最もよく見ることができます。場合入力シーケンスであり、H [ N ]フィルタのインパルス応答であり、最初のフィルタパスの結果でありますx[n]h[n]

X(ejω)H(ejω)

H E J ωのフーリエ変換Xは、[ N ]H [ N ]はそれぞれ、。交換するまでの時間反転対応ω- ω周波数領域で、その時間反転した後、我々が得ますX(ejω)H(ejω)x[n]h[n]ωω

X(ejω)H(ejω)

H(ejω)

X(ejω)H(ejω)H(ejω)

時間反転後、最終的に出力信号のスペクトルを与える

(1)Y(ejω)=X(ejω)H(ejω)H(ejω)=X(ejω)|H(ejω)|2

H(ejω)=H(ejω)|H(ejω)|2

h^[n]=h[n]h[n]

要するに:

  • IIRフィルターがあるか、必要であり、位相歪みをゼロにしたい場合、および処理遅延は問題ありません。この方法は便利です。

  • 処理の遅延が問題になる場合は、使用しないでください

  • FIRフィルターがある場合、このメソッドを使用するのと同等の新しいFIRフィルター応答を簡単に計算できます。FIRフィルターでは、常に正確な線形位相を実現できることに注意してください。


という名前のタグを作成しましたmaximum-aposteriori-estimation。名前をに変更してくださいmaximum-a-posteriori-estimation。間違って私は-後を忘れましたa。ありがとうございました。
Royi

15

このビデオは非常に有用であることがわかりました(マットの答えを詳しく説明します)。

ビデオからのいくつかの重要なアイデアは次のとおりです。

  • 位相がゼロの場合、位相の歪みは発生しませんが、非因果的フィルタが生成されます。これは、データが収集されたときにフィルタリングされている場合、これはオプションではないことを意味します(後処理が可能な保存データに対してのみ有効です)。ここに画像の説明を入力してください
  • 非因果的フィルタを実装すると、トランジェントは前後にぼやけます(たとえば、2dBのリップルが必要な場合、フィルタを使用して前後に実行するという事実は、それぞれのこれらは1dBになります)。ここに画像の説明を入力してください
  • 離散時間フーリエ変換の時間反転特性を使用します。 ここに画像の説明を入力してください
  • FILTFILTによって引き起こされる有効な周波数応答は、1方向の大きさの2乗です。入力信号を取得しx[n]、フィルタリングし、結果を反転し、再度フィルタリングし、再度反転します(時間反転ステップでは、すべてのデータが利用可能であることが必要です)。ここに画像の説明を入力してください
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.