2

オーバーラップ処理に関して利用可能な(可能であれば科学的な)優れたリソース(Webまたは書籍)はありますか。要件が異なるため、信号を分析するときにオーバーラップ処理とウィンドウを使用した場合の影響にはそれほど興味がありません。それは次のリアルタイムの状況についての詳細です:(私は現在オーディオ信号を扱っています)

  • 信号を小さな部分に分割します。
  • オーバーラップウィンドウの作成。
  • ウィンドウ化されたチャンクのFFT。
  • 周波数領域で処理を行います。
  • 結果をIFFTします。
  • チャンクをまとめて連続ストリームにします。

特に、使用するウィンドウが結果のエラーに与える影響と、オーバーラップの長さの影響に関心があります。しかし、私はその主題を詳細に扱っている良いリソースを見つけることができませんでした。助言がありますか?

編集:

ウィンドウ関数を使用することが適切かどうかをいくつか議論した後、オーバーラップと追加/保存の方法を説明する適切な配布物を見つけました。http://www.ece.tamu.edu/~deepa/ecen448/handouts/08c/10_Overlap_Save_Add_handouts.pdf

ただし、いくつかのテストを行った後、ウィンドウバージョンは、ほとんどの場合、オーバーラップ&追加/保存方法よりも正確に実行されることに気付きました。誰かがこれを確認できますか?ただし、計算時間に関する結論に飛びつきたくありません。

Edit2:

これが私のテストからのいくつかのグラフです:

3つの正弦波で構成される信号を作成しました ここに画像の説明を入力してください

このフィルター関数を時間領域でフィルター処理に使用しました。(FFTの出力全体に適用されるため、対称です。これは、実際の入力信号に対しても対称です) ここに画像の説明を入力してください

IFFTの出力は次のようになります。低周波数が中域の周波数よりも減衰していることがわかります。 ここに画像の説明を入力してください

オーバーラップ加算/保存とウィンドウ処理のために、入力信号を256サンプルの8つのチャンクに分割しました。それらを再組み立てした後、それらはそのように見えます。(サンプル490-540) ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

オーバーラップ加算/保存プロセスは、チャンクがまとめられる点でウィンドウバージョンとは異なることがわかります(サンプル511)。これは、ウィンドウ処理とオーバーラップ加算/保存を比較したときに異なる結果につながるエラーです。ウィンドウ処理されたプロセスは、1つの大きなジャンクで処理されたプロセスに近いものです。

しかし、なぜ彼らがそこにいるのか、あるいは彼らがまったくそこにいるべきではないのか、私にはわかりません。

4

3 に答える 3

3

これは信号処理のかなりよく知られた領域であり、一般的に言えば、FFT->スペクトル処理-> IFFTのラインに沿って処理を行う場合は、「オーバーラップ加算」アプローチを使用する必要があります。2つの入力の相互相関は典型的な例であり、時間領域よりもスペクトル領域ではるかに簡単に実行されます。

これがGoogleですぐに見つけた短い論文です(「fftoverlap and add」を検索しました): http: //www.coe.montana.edu/ee/rmaher/ee477/ee477_fftlab_sp07.pdf

古典的なRabiner&Goldの「デジタル信号処理の理論と応用」(Prentice-Hall ISBN 0-13-914101-4)など、優れた信号処理の本に投資することをお勧めします。これは、オーバーラップ加算処理の概念をカバーする必要があります。

于 2011-02-22T13:18:03.837 に答える
1

オーバーラップ加算またはオーバーラップ保存の高速畳み込みフィルタリングにFFTを使用する場合、通常、ウィンドウ関数は使用しません。正規のオーバーラップ加算/保存フィルタリングで連続するFFTフレームを組み合わせると、円形のウィンドウアーティファクトがキャンセルされます。

追加した:

非長方形のウィンドウを使用する場合は、ウィンドウのオーバーラップしたすべてのフレームの合計がDCになるようにする必要があります。そうしないと、結果のフィルター処理された信号の振幅がスカラップになります。オーバーラップ量がウィンドウ幅の正確な約数である場合、長方形ウィンドウとレイズドコサイン(フォンハン)ウィンドウの合計はDCになります(もちろん、オーバーラップシーケンスの最初と最後を除く)。

于 2011-02-22T15:29:34.960 に答える
1

私は、なぜ窓を使うのかという質問に自分で答えようとして、これで遊んでいます。合成ウィンドウへの私の唯一の参照はこれです: https ://ccrma.stanford.edu/~jos/sasp/Inverse_FFT_Synthesis.html

http://recherche.ircam.fr/anasyn/roebel/amt_audiosignale/VL2.pdf

http://www.dspdimension.com/tutorials/

Stephan Bernseeは、いくつかの優れた概要情報を持っています。彼のsmbpitchshiftコードは合成ウィンドウを使用しています-彼は入力ブロックでレイズドコサインを使用し、それを出力ブロックに再度適用しますが、ピッチシフトアルゴリズムは線形フィルタリング操作ではないため、これが必要であると私は信じています。ウィンドウの境界に不連続なアーティファクトがある可能性があるため、合成ウィンドウを使用してフレーム間のスムーズな遷移を作成します。

周波数領域のリアルタイム畳み込みのウ​​ィンドウ処理に特に対処する情報があまりない理由は、何らかの分析(つまり、ある種の適応フィルター)を実行する必要がない限り、実用的なアプリケーションがないためだと思います。スペクトル拡散に関連するトピックも興味深いものです。

レイズドコサインウィンドウとオーバーラップ加算法の両方を使用して、フィルター処理された信号からの出力をプロットしました。最終結果は、同一のIRと同一の信号になります。時間領域で実行された同じ操作が同じ結果をもたらすので、当然のことです。

一方、壊れたフィルターカーネルを実装する場合、スムーズなウィンドウ関数はアーティファクトをマスクするのに役立ちます。これはある意味で壊れたIRをウィンドウ処理するため、フレーム間にはよりまとまりのある遷移があります。時間領域で長さnff​​t/2に制限されているIRを使用する方がよいでしょう。nfft / 2より長いIRでフィルター応答を取得する必要がある場合は、より大きなFFTサイズを使用するか(遅延が問題にならない場合)、パーティション化された畳み込みスキームを使用することを検討する必要があります。

http://www.google.com/url?sa=t&rct=j&q3%esrc=s&source=web&cd=1&ved=0CB4QFjAA&url=http%3A%2F%2Fpcfarina.eng.unipr.it%2FPublic%2FPapers%2F164-Mohonk2001。 PDF&ei = qtH0TorDEoKziQKAloHEDg&usg = AFQjCNGDmz79DiuG1kmPXifbWJ7M-gr9rQ&sig2 = CMopEcGc1VArZ3gipWTr_w

また

http://www.music.miami.edu/programs/mue/Research/jvandekieft/jvchapter2.htm

これを読んでいる人に役立つことを願っています

リアルタイムの周波数領域フィルタリングで使用されるウィンドウ処理に直接対応していなくても、これらのリンクが役立つことを願っています。

于 2011-12-23T19:13:03.960 に答える