声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 振动理论 信号处理 查看内容

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

2016-4-29 09:45| 发布者: 敷衍会致命| 查看: 1288| 评论: 0|原作者: 不|来自: 新浪hahaer的博客

摘要: 很多论著上,几乎都提到了,FFT是一种线性的全局的处理方法,也就是说要么是时间域上观察信号,没有任何频率分辨率,要么在频率域上观察信号,没有任何的时间分辨率。从而论证FFT不适合处理非平稳信号。这个论断显然 ...
很多论著上,几乎都提到了,FFT是一种线性的全局的处理方法,也就是说要么是时间域上观察信号,没有任何频率分辨率,要么在频率域上观察信号,没有任何的时间分辨率。从而论证FFT不适合处理非平稳信号。这个论断显然是正确的,而我的观点可能要在这个基础上再加上一点,如果信号本身是非平稳的,那么利用FFT得到的频谱处理结果会显然是错误的。想下,FFT的过程可以理解它是在整个时间域上的一个积分,对于有限时间信号,类似做延拓后求取积分结果。对于频率是固定的,那么延拓后该频率成分是分布在整个时间轴上的,积分结果没有问题,如果某个频率成分随时间变化,那么延拓后,特定的频率成分显然是只占据了时间轴的一部分而已,那么积分的结果自然不会正确。举个最简单的例子,两个幅度为1的不同中心频率正弦信号组成,两信号在某个时刻以跳频信号的方式出现。给出程序代码以及图例如下,从图例中可以看出,本来幅度为1的信号,频谱变成了0.5,再推广一下,这是因为两个信号各占据了信号有限持续时间的一半,因此幅度各降为真实的一半,即在整个时域中延拓只占据了一半的时间轴而导致的结果,那么如果某个信号持续时间很短,可想象一个结果就是即使这个持续时间很短的信号有很大的幅度,在频谱上也可能反映不出来,甚至被淹没。
  1. %% 产生信号(跳频信号)
  2. f1 = 100;
  3. f2 = 200;
  4. fs = 1000;
  5. t1 = 0:1/fs:0.5;
  6. x1 = sin(2*pi*f1*t1);
  7. t2 = 0.5+1/fs:1/fs:1;
  8. x2 = sin(2*pi*f2*t2);
  9. x = [x1 x2];
  10. t = [t1 t2];
  11. L=length(x);
  12. NFFT = 2^nextpow2(L); % Next power of 2 from length of y
  13. Y = fft(x,NFFT)/L;
  14. f = fs/2*linspace(0,1,NFFT/2);
  15. % Plot single-sided amplitude spectrum.
  16. plot(f,2*abs(Y(1:NFFT/2)))
  17. title('Single-Sided Amplitude Spectrum of y(t)')
  18. xlabel('Frequency (Hz)')
  19. ylabel('|Y(f)|')

最新评论

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-26 09:45 , Processed in 0.043015 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部