首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FFT在非平稳信号分析中的局限性

FFT在非平稳信号分析中的局限性

FFT在非平稳信号分析中的局限性
          很多论著上,几乎都提到了,FFT是一种线性的全局的处理方法,也就是说要么是时间域上观察信号,没有任何频率分辨率,要么在频率域上观察信号,没有任何的时间分辨率。从而论证FFT不适合处理非平稳信号。这个论断显然是正确的,而我的观点可能要在这个基础上再加上一点,如果信号本身是非平稳的,那么利用FFT得到的频谱处理结果会显然是错误的。
         FFT的过程可以理解它是在整个时间域上的一个积分,对于有限时间信号,类似做延拓后求取积分结果。对于频率是固定的,那么延拓后该频率成分是分布在整个时间轴上的,积分结果没有问题,如果某个频率成分随时间变化,那么延拓后,特定的频率成分显然是只占据了时间轴的一部分而已,那么积分的结果自然不会正确。举个最简单的例子,两个幅度为1的不同中心频率正弦信号组成,两信号在某个时刻以跳频信号的方式出现。给出程序代码以及图例如下,从图例中可以看出,本来幅度为1的信号,频谱变成了0.5,再推广一下,这是因为两个信号各占据了信号有限持续时间的一半,因此幅度各降为真实的一半,即在整个时域中延拓只占据了一半的时间轴而导致的结果,那么如果某个信号持续时间很短,可想象一个结果就是即使这个持续时间很短的信号有很大的幅度,在频谱上也可能反映不出来,甚至被淹没。

    %% 产生信号(跳频信号)
    f1 = 100;
    f2 = 200;
    fs = 1000;
    t1 = 0:1/fs:0.5;
    x1 = sin(2*pi*f1*t1);
    t2 = 0.5+1/fs:1/fs:1;
    x2 = sin(2*pi*f2*t2);
    x = [x1 x2];
    t = [t1 t2];
    L=length(x);
    NFFT = 2^nextpow2(L); % Next power of 2 from length of y
    Y = fft(x,NFFT)/L;
    f = fs/2*linspace(0,1,NFFT/2);
    % Plot single-sided amplitude spectrum.
    plot(f,2*abs(Y(1:NFFT/2)))
    title('Single-Sided Amplitude Spectrum of y(t)')
    xlabel('Frequency (Hz)')
    ylabel('|Y(f)|')
继承事业,薪火相传
返回列表