私のLPターンドHPフィルター出力でこのsincは何をしていますか?


10

信号をLPフィルター処理し、元のフィルターから出力を差し引くことにより、信号をHPフィルター処理しようとしています。LPフィルター処理された信号を取得するために、16,000サンプルの信号に対して3次バタワースフィルターを使用して逆方向にフィルター処理しました。カットオフ周波数は、250 Hzで0.5 Hzでした。ウィンドウは使用されませんでした。

最初の85%程度のサンプルでは、​​このメソッドの出力は実際にHPフィルターされた信号と完全にオーバーラップしているようです。ただし、出力の最後には、sincのような疑わしい現象があります。

  • 何が原因ですか?
  • この方法を実現するために何を変更できますか?

以下は、2つの信号を重ねたものです。青いものはHPフィルター処理され、赤いものは減算によって得られます。

HPおよびorig-LP信号

これはサンプルごとの絶対差です。それらが完全に等しくなることはありません。最小の差は8e-12です。値の87%が0.01未満です。

2つの方法の違い

H(z)


プロットの生成に使用しているMATLABコードを含めることができますか?データは重要ではありません。必要に応じて、代わりにランダムサンプルを使用してシミュレーションすることもできます。
Jason R

回答:


0

Methinks @ hotpaw2は正しい方向に進んでいます。私の推測では、filtfiltは逆フィルターの初期条件を正しく処理していません。それは本当に難しい問題のように聞こえます-私はそれを誤解するためにMathworksを責めることはできないと思います...

修正は私には十分簡単に​​思えます:sincがなくなるまで信号の終わりをゼロパディングし、フィルターの後の(現在はゼロではない!)パディングを削除します。


0

一方に対して後方転送フィルターを実行し、もう一方に対して前方のみフィルターを実行しています。したがって、2つのフィルターは片方または両方のエッジで異なる動作をします。

信号が強く定常的であり、データウィンドウの長さで正確に周期的である場合、データを循環的にラップして、インパルス応答の長さからフィルターを開始することができます。


よくわからなければ申し訳ありません。(青)と比較している信号も、前方後方フィルタリング(filtfiltおよびbutter(3,0.5/250,high))されています。信号はECGからのものであり、正確に周期的であるとは期待できません。
Andreas

私は何かを誤解していますか?最初の段落が明らかに間違っているため、賛成票を理解できません。
Andreas
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.