重複追加と重複保存


24

フィルタリングにオーバーラップ追加とオーバーラップ保存のどちらを使用するかを決定するために、どのような違いやその他の基準を使用できますか オーバーラップ加算とオーバーラップ保存の両方は、FIRフィルターカーネルによるデータストリームのFFTベースの高速畳み込みを行うためのアルゴリズムとして説明されています。遅延、計算効率、またはキャッシュの局所性(など)の違いはありますか?それとも同じですか?

回答:


27

基本的に、OSはオーバーラップするトランジェントを追加する必要がないため、わずかに効率的です。ただし、繰り返されるサンプルではなく、ゼロパディングでFFTを再利用する必要がある場合は、OAを使用できます。

ここに私が少し前に書いた記事からの簡単な概要があります

高速畳み込みとは、線形畳み込みを達成するために循環畳み込みをブロックごとに使用することです。高速畳み込みは、OAまたはOSメソッドによって実現できます。OSは「重複スクラップ」とも呼ばれます。OAフィルタリングでは、各信号データブロックには、循環たたみ込みが線形たたみ込みと同等になるのと同じ数のサンプルのみが含まれます。信号データブロックは、FFTの前にゼロが埋め込まれ、フィルターインパルス応答がシーケンスの終わりを「ラップアラウンド」するのを防ぎます。OAフィルタリングは、1つのブロックの入力オントランジェントを前のブロックの入力オフトランジェントに追加します。図1に示すOSフィルタリングでは、入力データに対してゼロパディングが実行されないため、循環たたみ込みは線形たたみ込みと同等ではありません。「回り込む」部分は役に立たず破棄されます。これを補うために、前の入力ブロックの最後の部分が次のブロックの始まりとして使用されます。OSはトランジェントを追加する必要がないため、OAより高速です。


素晴らしい記事!=)
フォノン

OAバッファのゼロが埋め込まれた部分のDFTの計算方法には、OAメソッドにエッジを与える最適化がいくつかあります。これは、プロセッサとFFTパッケージに依存します。また、ゼロパッドを考慮したOA専用の独自のFFTアルゴリズムを実行可能に作成することもできます。
-orodbhen

@orodbhen、そのようなFFTパッケージを知っていますか?
マークボーガーディング

@MarkBorgerding OpenCVでは、ゼロ行の数を指定できますが、これは2Dに固有のものです。そのまたは他のFFTパッケージにどのような暗黙の最適化が存在するかについては、わかりません。スパース性を活用するためのカスタムFFTが役立つ多くの場合を考えることができますが、私はその道を自分で行っていません。未だに。
-orodbhen

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