You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SciPy快速傅里叶变换(FFT)识别信号失败,峰值出现在f=0位置求助

FFT仅0频出现峰值问题修复方案

核心问题是信号直流分量远大于波动分量,导致0频峰值压制了特征频率的显示,具体修复方法如下:

  • 方法1:做FFT前去除信号直流分量
    信号的0频幅值等于信号的均值,从原始信号中减去均值即可消除直流分量的干扰,修正后的FFT计算代码如下:
    # 对Y[0,:]去直流后再做FFT
    sig_p = Y[0,:] - np.mean(Y[0,:])
    PF = fft.fft(sig_p)/Npoints 
    ZF = fft.fft(Y[1,:] - np.mean(Y[1,:]))/Npoints
    freq = fft.fftfreq(Npoints,deltaT)
    PF = fft.fftshift(PF)
    ZF = fft.fftshift(ZF)
    freq = fft.fftshift(freq)
    
  • 方法2:调整频谱图显示参数
    如果你需要保留0频分量查看,可以调整Y轴为对数尺度,或者限制Y轴的显示范围,即可看到被压制的特征频率峰值:
    # 用对数Y轴绘图
    plt.plot(freq, np.abs(PF))
    plt.yscale('log')
    plt.show()
    
  • 可选优化:仅绘制正半轴频谱
    实信号的FFT结果满足共轭对称性,正负频率的幅值完全一致,仅绘制正频率部分即可查看完整的特征频率信息:
    pos_idx = freq >= 0
    plt.plot(freq[pos_idx], np.abs(PF)[pos_idx])
    plt.show()
    

按照上述方法修改后,即可正常看到信号的特征频率峰值。

内容的提问来源于stack exchange,提问作者Pancio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:54:07