【问题标题】:Calculating frequency present in Fast Fourier Transform计算快速傅里叶变换中存在的频率
【发布时间】:2017-08-26 00:39:33
【问题描述】:

我的信号输出值由中心频率为 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] 范围内。我很困惑如何解释这个结果,或者如何计算数据中存在的频率?

【问题讨论】:

  • fftfreq 接受采样间隔。只需致电freq=np.fft.fftfreq(fourier.shape[0], d=1/1e6)(我假设您以每秒 1 兆样本的速度进行采样,因此您的样本间隔为 1 微秒)。 freq 应该从 0 运行到 500 KHz,然后跳到 -500 KHz 到 0。现在只需 plot(freq, np.abs(fourier))
  • 如果您的数据是真实的(不是复数值),请考虑 rfftfreqrfft
  • 呃,再次确认一下——您说载波是 162 MHz,而您以 1 MHz 采样。我假设硬件已经将信号解调到基带,并将其低通滤波到
  • 没有复杂的数据
  • @hotpaw2 你能解释一下吗?为什么下面的答案是错误的(可能是在下面添加你的答案)?

标签: python scipy signal-processing fft software-defined-radio


【解决方案1】:

当 SDR 样本是基带 IQ(或复数,或余弦/正弦)时,带宽等于 IQ 采样率。这是因为基带 IQ 样本(与 single_channel 严格的真实样本不同)可以独立地包含正频谱和负频谱,高于 RTL-SDR(等)调谐 RF 频率设置的一半带宽和低于一半带宽(除非频偏)。

因此,IQ 数据的 FFT 频率范围将从 Fcenter - (indicated_bandwidth/2) 到几乎 Fcenter + (indicated_bandwidth/2)。或者以您的示例为例:162.050 到(略低于)163.050 MHz。 (“下面的位”值取决于 FFT 大小。)步长 dF 是 IQ 采样率除以 FFT 长度。

(请注意,标量样本中的数据速率是 IQ 采样率的两倍,因为每个 IQ 样本包含两个样本(实部和虚部,或余弦和正弦混频器输出)。因此,因为每个 IQ 样本包含更多信息,所以信息带宽可以更大。但 SDR 应用程序通常指示 IQ 采样率,而不是更高的原始数据率。)

【讨论】:

  • 我明白你的意思是频率轴将包含(2*采样率)。但正如你所写,范围将是 165.050 到(略低于)163.050 MHz,而我的中心频率是 162.550,这是一个错字吗?
  • 是的,有一个错字。我想现在已经修好了。
猜你喜欢
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2012-12-10
  • 2013-03-31
  • 2020-03-29
  • 2019-11-09
相关资源
最近更新 更多