0
RTL-SDRを使用して特定の周波数で電力を取得しようとしています。私は、私がオンラインで見つけたFFTの例を適用しています。省略コード(不要なものを削除):特定の周波数、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 ])))
これは単純に機能しません。信号を注入しても、周波数のパワーはほぼ同じ(ノイズフロアレベル)のままです。
私はなぜこれがうまくいかないかについて2つの理論を持っています。 1)RTL-SDRはI/Qデータを返しますが、この方法はそれを考慮していません。(?)2)FFTの理解は、それを正しく実行するのに十分な音ではありません。
どちらですか?どうすれば修正できますか?