2017-03-31 211 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