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

分段斜坡组合信号傅里叶变换幅值校正疑问

分段斜坡组合信号傅里叶变换幅值校正疑问

首先得帮你理清:你定义的x(t) = r(t+1) - 2r(t) + r(t-1)其实是一个三角脉冲信号——在t∈[-1,1]区间内是1-|t|,其余区间为0,峰值是1。这个信号的连续傅里叶变换理论值是Sa²(ω/2)(也就是(sin(ω/2)/(ω/2))²),直流分量(ω=0)的幅值是1(信号的积分,也就是三角的面积)。

接下来解答你最疑惑的点:为什么要除以length(t)/100才能得到正确幅值?这本质是FFT与连续傅里叶变换的尺度匹配问题:

FFT计算的是离散信号的离散傅里叶变换(DFT),它的结果是对离散采样点的求和;而我们要的连续傅里叶变换是积分,积分可以近似为「采样点值 × 采样间隔Δt」的求和。所以DFT的结果和连续傅里叶变换X(ω)的关系是:
X(ω_k) ≈ DFT结果 × Δt

看你的代码参数:

  • 时间轴t是linspace(-50,50,FS),总时间跨度是50 - (-50)=100秒,采样点数length(t)=FS=50000,所以采样间隔Δt ≈ 100/50000 = 1/500(因为linspace的间隔是(max(t)-min(t))/(length(t)-1),当采样点数很大时,length(t)-1≈length(t),所以Δt≈100/length(t))。

你写的X1 = fft(x1)/(length(t)/100),等价于X1 = fft(x1) × 100/length(t),这正好就是fft(x1) × Δt的近似!这就是为什么这么做能得到正确幅值——你相当于把DFT的求和结果乘以了采样间隔,把离散求和转换成了近似连续积分,匹配了连续傅里叶变换的幅值尺度。

举个直观的例子:直流分量(ω=0)的理论幅值是1,而DFT的直流分量是所有采样点的和sum(x1),sum(x1)≈∫x(t)/Δt(因为sum(x1)×Δt≈∫x(t)dt=1),所以sum(x1)≈1/Δt=500,除以length(t)/100=50000/100=500后,结果就是1,正好和理论值一致。

优化建议

不要硬编码100,而是动态计算采样间隔,这样不管时间轴怎么设置都能通用:

Δt = t(2) - t(1); % 因为linspace是均匀采样,直接取相邻两点的差
X1 = fft(x1) * Δt;
R1 = fftshift(X1);

这样就不用依赖时间轴的总跨度硬编码数值,鲁棒性更强。

备注:内容来源于stack exchange,提问作者Farah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:48:00