我使用泰克示波器来执行一些信号采集。我获得 10,000 个测量点(几个信号周期),并且必须对这组数据进行频率分析。我的信号是8MHz正弦波。当我使用 SciPy 或 NumPy 时,我得到相同的结果 - 频率分布太宽。两个值之间的距离是500kHz,最高频率是2.5GHz(荒谬)。当我想要测量 8MHz 左右的频率带宽时,我只能获得 7.5、8.0 和 8.5 MHz 的精确值。我尝试改变由 确定的样本间距,(x[1]-x[0])但没有得到更好的结果。
def CalculateFFT(t_val,p_val):
x = t_val #Two parameters: [x,y] values
y = lambda x: p_val
com_signal = y(x) # Combined signal
FFT_val = abs(scipy.fft(com_signal))
freq_val = scipy.fftpack.fftfreq(len(com_signal), x[1]-x[0])
spec_val = 20*scipy.log10(FFT_val)
return freq_val, spec_val
Run Code Online (Sandbox Code Playgroud)