回答:
ゼロパディングにより、長いFFTを使用できるようになり、長いFFT結果ベクトルが生成されます。
FFTの結果が長いほど、周波数の間隔が狭くなる周波数ビンが多くなります。ただし、元のデータのゼロ以外の短いFFTの高品質のSinc補間と本質的に同じ結果が得られます。
これにより、さらに補間せずにプロットすると、スペクトルがより滑らかに見える場合があります。
この補間は、隣接するまたは近くの周波数の解決または解像度の改善には役立ちませんが、スペクトル内に重要な隣接信号またはノイズがない単一の分離された周波数のピークを視覚的に簡単に解決できる可能性があります。統計的には、FFT結果ビンの密度が高いほど、ピーク振幅ビンがランダムな隔離された入力周波数正弦波の周波数に近くなり、さらに補間する必要がなくなる可能性が高くなります(放物線など)。
しかし、本質的に、DFT / FFTの前のゼロパディングは、多数のポイントを補間する計算的に効率的な方法です。
相互相関、自己相関、または畳み込みフィルタリングのゼロパディングは、畳み込みの結果を混合しないために使用されます(循環畳み込みのため)。線形畳み込みの完全な結果は、2つの入力ベクトルのいずれよりも長くなります。このより長い畳み込み結果の終わりを置く場所を提供しない場合、FFT高速畳み込みはそれを単に混ぜ合わせて、希望する結果を作り上げます。ゼロパディングは、より長い結果を混合するためのバンチゼロを提供します。また、ゼロのベクトルとのみ混合/合計されたものを混合解除する方がはるかに簡単です。
時間領域信号のゼロパッドを決定する前に、考慮すべきことがいくつかあります。信号をゼロパッドする必要はまったくありません!
1)時間領域データ(ゼロパディングではない)を長くして、周波数領域でより良い解像度を取得します。
2)FFTビンのより良い定義を確認したい場合、時間領域の信号長(ゼロパディング)を超えてFFTポイントの数を増やしますが、それ以上の真の解像度は得られません。また、2の累乗数のFFTポイントになるようにパディングすることもできます。
3)FFTポイント(前のポイント)をいじるときは、周波数ポイントが目的の場所になることを確認してください。ポイントの間隔は。ここで、はサンプリング周波数で、はFFTポイントの数です。
http://www.bitweenie.com/listings/fft-zero-padding/にこれらのポイントを示す素晴らしい数字があります
最後に、時間領域で信号をゼロパッドし、ウィンドウ関数を使用する場合は、ゼロパッドする前に信号をウィンドウ処理してください。ゼロパディングの後にウィンドウ関数を適用すると、ウィンドウが達成するはずのことを達成できません。具体的には、スムーズにゼロに移行する代わりに、信号からゼロに急激に移行します。
一般に、DFTの前のゼロパディングは、変換されたドメインでの補間、またはより頻繁なサンプリングと同等です。
以下に、逆の仕組みを簡単に視覚化します。帯域制限された信号をより高いレートで時間内にサンプリングすると、より「押しつぶされた」スペクトル、つまり両端にゼロが多いスペクトルが得られます。言い換えると、DFTを行った後に周波数をゼロでパディングし、ゼロでパディングした結果をIDFTするだけで、より多くのサンプルを時間内に取得できます。
ゼロパディングが時間内に発生すると、同じ効果が逆に保持されます。これは、信号が帯域制限され、少なくともナイキストレートでサンプリングされる限り、完全な信号再構成が可能なためです。
「解像度」という用語は、定義方法によって異なります。私にとって、それは、時間または周波数における隣接する2つの観測点を、確実に(統計的に)識別できることを意味します。この場合、分解能は実際にはスペクトル漏れによるDFTサイズに依存します。つまり、ウィンドウサイズが小さくなり、変換された信号がよりぼやけたり不鮮明になったりします。サンプリングの頻度や、「定義」と呼ぶものとは異なります。たとえば、非常にぼやけた画像を高レート(高解像度)でサンプリングすることはできますが、低レートでサンプリングするよりも多くの情報を取得することはできません。したがって、要約すると、以前より多くの情報を取得しないため、ゼロパディングでは解像度はまったく向上しません。
時間領域サンプルの分離に使用されるウィンドウ関数のスペクトルに関心がある場合、ゼロパディングはウィンドウ関数の周波数分解能を向上させます。
時間信号がで、が窓関数の場合、全体のスペクトルはで、畳み込みを示します。
あなたの窓関数は、単純な長方形の値のいくつかの組の(抽出である場合しシンク関数である。したがって、例えば、NFFTはあなたの矩形の幅と同じであり、そしてビン周波数の1つに正弦波があり、そのビンの中心に表示される同期関数のサンプルは、オフピークのゼロ交差で正確に落ち、同期の形状が表示されません。全くのスペクトル。あなたは今、ゼロパッドデータが入る場合にはFFT、ピークとゼロ交差以外の場所でいくつかのサンプルが表示され、結果のスペクトルの同期関数の形状が明らかになります。それでは、ゼロパディングの用途は何ですか?通常、ウィンドウ化された信号の離散変換の性質を明らかにする際に、それは教育的に使用されます。これは通常のケースです。実用的な意味では、搬送波に乗っている孤立したエンベロープのスペクトル形状に関心がある場合は、どのような場合にも役立ちます。
フーリエ変換の前後に実行されるプロセスに応じて、これにはさまざまな理由があります。最も一般的な理由は、変換結果の周波数分解能を高めることです。つまり、変換で使用されるサンプルの数が多いほど、結果のパワースペクトルのビン幅が狭くなります。要確認:binwidth = sample_frequency / transform_size(多くの場合、ウィンドウサイズと呼ばれます)。これから想像できるように、変換サイズを大きくすると、binwidthが減少します(=より良い周波数解像度)。ゼロパディングは、信号に新しい情報を導入せずに変換サイズを増やす方法です。
それでは、ゼロパディングなしでより大きな変換を行うだけではどうでしょうか。それは同じ効果を達成しませんか?良い質問。多くの場合、短時間フーリエ変換(stft)を使用している可能性のある時間領域データのストリームを分析する必要があります。これには、周波数スペクトルの変化を特徴付けるために必要な時間分解能に従って、Nサンプルごとに変換を行うことが含まれます。ここに問題があります。ウィンドウが大きすぎると時間分解能が失われ、ウィンドウが小さすぎると周波数分解能が失われます。その場合の解決策は、小さな時間領域ウィンドウを使用して、良好な時間分解能を提供し、ゼロパディングして周波数分解能を改善することです。これがあなたに役立つことを願っています
アップデート
私はこれをうまく説明しませんでした。もっと明確にすべきだった。ウィンドウ化された変換を参照すると、実際には「実際の」より高い周波数分解能は得られませんが、視覚化の目的(パワースペクトルを目で読む)ではより明確な結果を得ることができます。クリティカルサンプリングレートを使用すると、各サイドローブは単一のビンを占有します。これは、グラフ化手法によっては誤解を招く可能性があります。ゼロパディングは、より明確な補間周波数スペクトルを提供します。さらに、周波数推定に単純なピーク選択方法を使用している場合、ゼロパディングのスペクトル補間効果により、メインローブの真のピークにより近いスペクトルサンプルが得られます。このリンクはいくつかの有用な図を提供します:http : //www.dsprelated.com/dspbooks/sasp/Practical_Zero_Padding.html
これらは以前の良い応答で言及されていなかったので、ゼロパディングの以下の追加の重要な理由を追加します。
Radix-2アルゴリズムはより効率的であるため、次の2のべき乗(またはradix-4の場合は4のべき乗)のゼロパディング、または大きな素因数の大幅な回避により、リアルタイムパフォーマンスが向上します。また、分析にFFTを使用する場合、FIRの周波数応答を決定するなど、DTFTのサンプルを計算するためにゼロパディングが行われることがよくあります。比較fft([1 1 1 1])とfft([1 1 1 1]、 512)これはfreqz([1 1 1 1])と同じです。