- UID
- 1029342
- 性别
- 男
|
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)|') |
|