2017-03-31 148 views
2

我的軟件定義無線電的中心頻率爲162.550 MHz &採樣率爲1,000,000的信號輸出值。現在分析頻域中的數據我計算了FFT的簡單性。計算快速傅立葉變換中出現的頻率

#Calculating FFT of signal 
fourier=np.fft.fft(RadioData) 

由於振幅與頻率的關係,我需要計算信號中的頻率。我爲此使用了Numpy fftfreq。

freq=np.fft.fftfreq(fourier.shape[0]) 

輸出在[-0.5 0.4999995]的範圍內。我很困惑如何解釋這個結果,或者如何計算數據中出現的頻率?

+0

['fftfreq'](https://docs.scipy.org/doc/numpy/reference/ generated/numpy.fft.fftfreq.html)接受採樣間隔。只要調用'freq = np.fft.fftfreq(fourier.shape [0],d = 1/1e6)'(我假設你每秒採樣一次,所以你的採樣間隔一微秒) 。 'freq'應該從0到500 KHz,然後跳到-500 KHz到0。現在只需'plot(freq,np.abs(fourier))'。 –

+0

如果您的數據是真實的(不是複數值),請考慮['rfftfreq'](https://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.rfftfreq.html)和['rfft '](https://docs.scipy.org/doc/numpy/reference/generated/numpy.fft.rfft.html)。 –

+0

呃,只是爲了仔細檢查 - 你說的載波是162 MHz,而你是以1 MHz的頻率採樣的。我假設硬件已經將信號解調到基帶,並將其低通濾波到<500 KHz?如果沒有,那麼你會看到一些非常奇怪的結果:) –

回答

1

當SDR採樣是基帶IQ(或複數,或餘弦/正弦)時,則帶寬等於IQ採樣率。這是因爲基帶IQ採樣(不同於單通道嚴格實數採樣)可以包含正頻譜和負頻譜兩種頻帶,獨立地,帶寬的一半以上和帶寬低於RTL-SDR(et.al.)調諧RF頻率設置的一半(除非頻率偏移被選擇)。因此,IQ數據的FFT的頻率範圍將從Fcenter - (measured_bandwidth/2)到幾乎Fcenter +(measured_bandwidth/2)。或者舉個例子:162.050到(低於)163.050 MHz。 (「低於位」的值取決於FFT的大小。)步長dF是IQ採樣率除以FFT長度。因爲每個IQ採樣包含兩個採樣(實部和虛部,或者餘弦和正弦混頻器輸出),所以由於每個IQ採樣包含更多信息,因此標量採樣中的數據率是IQ採樣率的兩倍,信息帶寬可能更大,但SDR應用程序通常表示IQ採樣率,而不是更高的原始數據率。)

+0

我明白了頻率軸所包含的點(2 *採樣率)。但如你所寫,範圍將是165.050到(稍低於)163.050 MHz,而我的中心頻率是162.550這是一個錯字? –

+0

是的,有一個錯字。現在修復我想。 – hotpaw2