小编aks*_*128的帖子

在 numpy 中使用 FFT 的频率分辨率问题

我使用泰克示波器来执行一些信号采集。我获得 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)

python numpy scipy frequency-analysis

3
推荐指数
1
解决办法
5877
查看次数

标签 统计

frequency-analysis ×1

numpy ×1

python ×1

scipy ×1