信号を受信するときfft(signal, nfft)
、nfftは結果をどのように変更しますか?その理由は何ですか?たとえば、 nfftの値を固定することはできますか2^18
、それとも移動する必要があり2^nextpow2(2*length(signal)-1)
ますか?
自己相関のFFTをとって、2つの信号のパワースペクトル密度(PSD)を計算していますが、結果を比較したいと思います。信号の長さが違うので、nfftを直さないと比較が大変になるのではないかと心配です!
信号を受信するときfft(signal, nfft)
、nfftは結果をどのように変更しますか?その理由は何ですか?たとえば、 nfftの値を固定することはできますか2^18
、それとも移動する必要があり2^nextpow2(2*length(signal)-1)
ますか?
自己相関のFFTをとって、2つの信号のパワースペクトル密度(PSD)を計算していますが、結果を比較したいと思います。信号の長さが違うので、nfftを直さないと比較が大変になるのではないかと心配です!
最近のほとんどのFFT実装(FFTWに基づくMATLABを含む)では、信号の時系列を2の累乗に等しい長さにパディングする必要はほとんどありません。ただし、ほぼすべての実装は、2の長さの累乗のデータベクトルのFFTに対して、より優れた、場合によってははるかに優れたパフォーマンスを提供します。特にMATLABの場合、2の累乗または多くの低い素因数を含む長さにパディングすると、最高のパフォーマンスが得られます(N = 1000 = 2 ^ 3 * 5 ^ 3が優れている、N = 997はひどい選択です) 。
ゼロパディングはPSDの周波数分解能を向上させませんが、周波数領域のビンサイズを縮小します。したがって、長さNの信号ベクトルにNZerosを追加すると、FFTは長さ(N + NZeros)/ 2 + 1のベクトルを出力します。これは、周波数の各ビンの幅が次のようになることを意味します。
ビン幅(Hz)= F_s /(N + NZeros)
ここで、F_sは信号サンプル周波数です。
周波数領域で2つの近接したピークを分離または特定する必要がある場合は、サンプル時間を増やす必要があります。ゼロパディングはその目的のために何も買わないことにすぐに気付くでしょう-そして直感的にそれは私たちが期待することです。入力に情報(より長い時系列)を追加せずに、パワースペクトルでより多くの情報をどのように期待できますか?
一番、
ポール
2 の累乗を使用する固有の理由はありません (状況によっては、処理がより効率的になる可能性があります)。
ただし、2 つの異なる信号の FFT を「相応」にするには、FFT を取得する前に、一方または他方 (または両方) の信号を同じ長さにゼロ パディングする必要があります。
しかし、私は次のように言わざるを得ません: もしあなたがこれを尋ねる必要があるなら、あなたはおそらく DSP の学習曲線上で、結果に対して何か有用なことを行うことができる時点に達していないでしょう. DSP 理論に関するまともな本を手に入れる必要があります。