Python 在特定频率下获取功率,SDR和FFT

Python 在特定频率下获取功率,SDR和FFT,python,signals,fft,Python,Signals,Fft,我试图用RTL-SDR在特定频率下获得能量。我正在改编我在网上找到的FFT例子。此处的缩写代码删除了多余的内容: import matplotlib.mlab as mlab import rtlsdr NFFT=1024 dwell = 0.016 sample_rate = 2.4e6 offset = 200e3 freq = 100e6 sdr = rtlsdr.RtlSdr(0) sdr.set_sample_rate(sample_rate) sdr.set_manual_ga

我试图用RTL-SDR在特定频率下获得能量。我正在改编我在网上找到的FFT例子。此处的缩写代码删除了多余的内容:

import matplotlib.mlab as mlab
import rtlsdr

NFFT=1024

dwell = 0.016
sample_rate = 2.4e6
offset = 200e3
freq = 100e6

sdr = rtlsdr.RtlSdr(0)
sdr.set_sample_rate(sample_rate)
sdr.set_manual_gain_enabled(1)
sdr.set_gain(22.9)
sdr.freq_correction = 0

numsamples = next_2_to_pow(int(dwell * sample_rate))

freq = freq - offset  # avoid dc spike
sdr.set_center_freq(freq)
samples = sdr.read_samples(numsamples)

powers, freqs = mlab.psd(samples, NFFT=NFFT, Fs=sample_rate/1e6, window=hamming(NFFT))

bin_offset = int(offset / (sample_rate / NFFT))
freq = int(freq + offset)
pwr = float( "{:.2f}".format(10 * math.log10( powers[ int(len(powers)/2) + bin_offset ] )) )
这根本不起作用。即使我注入信号,频率处的功率也保持在相同的噪声水平

我有两种理论解释为什么这不起作用。1 RTL SDR返回I/Q数据,这种方法不能解释2我对FFT的理解不足以正确执行


是哪一个?如何修复它?

您是否尝试过使用rtl\U电源,然后在输出中选择正确的存储箱?这是相对较新的rtl_sdr套件。在C语言中,不是Python