周波数領域で信号を操作してから時間領域に回復するのではなく、バンドパスにデジタルフィルターを使用する必要があるのはなぜですか?


15

私は信号処理の初心者です。この質問は広すぎるかもしれません。しかし、私はまだ専門家からのヒントを聞きたいです。

MATLABでオフラインで(つまり、記録の完了後)EEG(脳波)信号のバンドパスbutterフィルター処理(バターワースフィルター、別名、最大フラットマグニチュードフィルター)およびfiltfilt(ゼロ位相デジタルフィルター処理)を使用するように教えられました。この方法により、デジタルフィルター(つまり、ゼロ位相フィルター)によって引き起こされる避けられない「遅延」を回避できます。

次に、誰かがfft(高速フーリエ変換)を使用して信号の周波数領域表現を取得できず、不要な周波数のパワーをゼロに設定し、続いてifft(逆高速フーリエ変換)を使用してフィルタリングされたデータを時間内に復元できない理由を尋ねました同じ目的のためのドメイン。周波数領域でのこの操作は、私にとってより単純で合理的なものであり、その理由に本当に答えることはできませんでした。

fft/ifftバンドパスフィルタリングに単純な方法を使用する利点と欠点は何ですか?なぜ人々はFIRまたはIIRデジタルフィルターを使用することを好むのですか?

たとえば、このfft/ifft方法は、確立されたデジタルフィルターと比較して、スペクトルの漏れやリップルが発生しやすいのでしょうか?この方法は位相遅延の影響も受けますか?このフィルタリング方法のインパルス応答を比較のために視覚化する方法はありますか?



FFTを使用して信号をフィルター処理することは絶対に有効ですが、注意すべき点がいくつかあります。詳細については、この同様の質問/回答をご覧ください:stackoverflow.com/a/2949227/565542
sbell

5
このような質問は、信号処理サイトに適している場合があります。
ジェイソンR

2
Steven W. Smithによるデジタル信号処理の科学者およびエンジニア向けガイドには答えがあると思います。彼は、サンプルイン-サンプルアウトはデジタルフィルターの方がはるかに効率的だと言っていると思います。ただし、Freqドメインでブリックフィルターを使用できるFFT変換を行うほうが適切な場合、ウィンドウの最小幅(64サンプル以上、正確には覚えていません)があります。効率だけが問題ではありません。ブリックフィルターは、将来のサンプルを使用する必要があることを意味しますが、これはリアルタイムでは不可能です。
ヴァル

おかげで、私は信号処理サイトのようなものを探していましたが、それを見つけることができませんでした。
中村幸一C.

回答:


9

周波数領域の処理が直接行われない主な理由は、遅延が関係していることです。たとえば、信号でFFTを実行するには、時間領域信号を周波数領域に変換する前に、最初から最後まで時間領域信号全体を記録する必要があります。その後、処理を行い、それを時間領域に変換して、結果を再生できます。2つの変換と中央の信号処理が実質的に瞬時であっても、最後の入力サンプルが記録されるまで最初の結果サンプルは取得されません。しかし、これに我慢するなら、「理想的な」周波数領域の結果を得ることができます。たとえば、44100サンプル/秒で記録された3分間の歌では、800万ポイントの変換が必要になりますが、これは現代のCPUでは大したことではありません。

時間領域信号をより小さな固定サイズのデータ​​ブロックに分割し、それらを個別に処理して、ブロックの長さまで遅延を短縮したい場合があります。ただし、これは「エッジ効果」のため機能しません。特定のブロックの両端のサンプルは、隣接するブロックの対応するサンプルと適切に整列せず、結果に好ましくないアーティファクトが作成されます。

これは、時間領域と周波数領域の間で変換するプロセス(およびその逆)で暗黙的な仮定のために発生します。たとえば、FFTおよびIFFTは、データが周期的であると「想定」します。つまり、同じ時間領域データのブロックは、処理中のブロックの前後に来ます。これは一般的に真実ではないため、アーティファクトを取得します。

時間領域処理には問題があるかもしれませんが、遅延を制御でき、周期的なアーティファクトを生成しないという事実により、ほとんどのリアルタイム信号処理アプリケーションで明確な勝者になります。

(これは以前の回答の拡張バージョンです。)


1
わかりやすい言葉で詳細な回答をありがとう。今、私の質問で、私の仕事はオンラインまたはリアルタイムの処理ではなく、主にオフライン分析のためであることを述べたはずです。質問を編集します。ポイントは非常に明確です。FFTはデータの全期間を必要とするため、記録が完了するまで待つ必要があります。
中村浩一C.

1
OK、結構です。周波数ドメインフィルタリングについてもう1つ指摘しておきますが、これは問題になる場合もあれば、そうでない場合もあります。フィルターは時間ドメインでは因果関係になりません。言い換えれば、それらのインパルス応答は正と負の両方の時間に拡張されます。これを知らない場合、これにはいくつかの驚くべき効果があります。
デイブツイード

ありがとう。ウィキペディアで「因果フィルター」を検索しました。定義上、FFTボックスカーは時間を気にしないので、非因果関係であることがわかります。この性質は、リアルタイムフィルタリングに使用できない理由を説明しています。
幸一C.中村

3
@DaveTweed:44.1 kHzでサンプリングされた3分間の歌をフィルタリングするために800万ポイントのFFTを要求するというあなたの主張は間違っています。実際、FFTベースの畳み込みアルゴリズムは実際に頻繁に使用されています。オーバーラップ保存オーバーラップ追加などの方法が使用されるため、より控えめなFFTサイズ(および処理レイテンシ)が必要になります。これらの手法は、2番目の段落で提案されているとおりに実行します。小さいブロックを使用し、それらの間に発生する「エッジ効果」を処理します。
ジェイソンR

2
@DaveTweed:私は同意しません。オーバーラップ保存やオーバーラップ加算などの高速畳み込み手法は、直接線形畳み込み(つまり、時間領域でフィルターを実装する)と同等です(数値精度まで)。あらゆる種類の境界条件と時間ドメイン処理のパフォーマンスの妥協はありません。また、それらの制限されたレイテンシは、多くのリアルタイムアプリケーションに役立ちます。私は、周波数ドメインフィルタリングが入力信号全体で1つの大きなFFTを必要とするという主張は真実ではないと主張し、このコンテキストでの「純粋な」周波数ドメイン処理とはどういう意味かわかりません。
ジェイソンR

2

確かに、周波数領域で「ボックスカー」理想フィルタを使用できます。双対性は、これが無限の長さのsinc関数で畳み込むことに等しいと言います。長さを有限にすることに関連するアーティファクトを減らすために、sinc関数にウィンドウが乗算されることがよくあります。ハミング、ハニング(実際にはフォンハン)、コサインロールオフ、およびその他のウィンドウ手法について聞いたことがあるかもしれません。たたみ込みは、fft / ifftアプローチよりも計算的に単純かもしれませんが、答えは同じです。

すべてのメソッドにはプラスとマイナスがあります。バターワースはIIR、ボックスカーはFIRです。バターワースはパスバンドではおそらく平坦ですが、IIRの次数とFIRの幅に応じて、おそらく急峻なロールオフはありません。filtfiltは、リアルタイムで実装するのが難しいでしょう。


1
ウィンドウ処理とブロックフィルタリングの非常に明確な説明については、本RW HammingによるDigital Filtersを参照してください。ドーバーから入手できるので、とてもいい値段です。(ちなみに、スコット、私はこれが窓の名前が付けられたハミングであり、フォン・ハンは彼の窓の命名で彼の名前を殺された人だと思います)
The Photon

また、FFTで実装されたボックスカーは、定義上、通過帯域で完全にフラットであると確信しています。バターワースフィルターが「最大フラット」であると言うとき、私たちは因果フィルターのコンテキストでのみそれについて話していると信じています(そして、ウィキは、バターワースよりもフラットな逆チェビシェフフィルターを作成することも可能だと言っています)。
ザフォトン

1
理想的な無限の長さに同意しましたが、切り捨てとウィンドウ処理の後はあまりわかりません
Scott Seidman

@ThePhoton Hamming / von Hannの修正に感謝します。自宅から本棚を正しく視覚化できませんでした。
スコットサイドマン

@The Photon; HammingのDigital Filtersブックをありがとう。私はそれを見て、特に小学校の学習者向けに書かれているように見えました。希望を持って購入しました。:)
幸一C.中村

0

関連する質問

FFTビンをゼロにすることでフィルタリングするのはなぜ悪い考えですか? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

フィルター処理と同じ結果をFFT結果から削除しますか? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

FFTがスペクトルを変更するのではなく、逆FFTよりも時間領域でウィンドウを使用する理由 /signals/8911/why-do-we-use-window-in-time-domain-rather -than-do-fft-modify-the-spectrum-and-t?noredirect = 1&lq = 1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.