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

MATLAB中能否用fft函数求解e^(-10*t)*u(t)的傅里叶变换?

如何用FFT近似求解指数衰减阶跃信号的傅里叶变换?

FFT可以近似得到你要的傅里叶变换结果,但需要注意采样参数设置和正确的归一化处理,不能直接随意定义时间范围就计算,否则结果会偏离理论值。以下是具体的实现思路和修正方案:

核心原理

连续信号的傅里叶变换可以通过FFT近似,但需要将连续信号离散化采样,再通过采样周期关联离散傅里叶变换(DFT)与连续傅里叶变换的结果。

具体步骤与代码修正

  1. 正确构造离散时域信号
    原信号$h(t)=e^{-10t}u(t)$是因果连续信号,离散化时只需生成$t\geq0$的采样点即可,无需额外乘单位阶跃函数(因为采样范围已经限定在$t\geq0$):

    Ts = 0.01; % 采样周期,需远小于信号的时间常数(这里时间常数是0.1s,Ts取0.01足够)
    N = 1024;  % 采样点数,越大频率分辨率越高
    t = 0:Ts:(N-1)*Ts; % 时间轴从0开始,对应因果信号
    h = exp(-10*t);    % 直接生成离散采样序列
    
  2. 正确计算FFT并映射到实际频率
    FFT的结果需要结合采样周期做归一化,才能对应连续傅里叶变换的幅值:

    Fs = 1/Ts;          % 采样频率
    H_fft = fft(h);     % 计算FFT
    f = Fs*(0:N-1)/N;   % 生成实际频率轴(范围0到Fs)
    H_approx = Ts * H_fft; % 归一化得到连续傅里叶变换的近似值
    

    这里乘Ts是因为连续傅里叶变换的积分可以近似为离散求和乘以采样间隔Ts,这是你原代码缺失的关键步骤。

  3. 与理论解对比验证
    可以计算理论解并绘制幅频特性对比,验证近似效果:

    H_theory = 1./(10 + 1j*2*pi*f); % 理论傅里叶变换
    % 绘制幅频曲线
    figure;
    plot(f, abs(H_approx), f, abs(H_theory), '--');
    legend('FFT近似值', '理论值');
    xlabel('频率(Hz)');
    ylabel('幅度');
    

    只要采样周期足够小、采样点数足够多,FFT近似值会和理论值高度重合(高频段因混叠效应会有微小误差,可通过提高采样频率改善)。

  4. 原代码的问题

    • 变量名错误:fft(x)/N中的x应为h;
    • 归一化错误:仅除以N不够,必须乘以采样周期Ts才能对应连续傅里叶变换;
    • 阶跃函数冗余:离散化时直接限定时间范围在$t\geq0$即可,无需用heaviside(t)引入额外的不连续点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:05:55