离散时间傅立叶变换(DFT)有两个重要特性:周期性和对称性。如
n=0:10; x=(0.9*exp(j*pi/3)).^n;
k=-200:200; w=(pi/100)*k;
X=x*(exp(-j*pi/100)).^(n'*k);
magx=abs(X); angx=angle(X);
subplot(2,1,1); plot(w/pi,magx); grid;
title('幅度部分')
subplot(2,1,2); plot(w/pi,angx/pi); grid;
title('相角部分')

DFT它适用于有限长时间序列,当序列长度很大时,计算量很大,其效率极低。因此提出大幅度减少DFT中的计算量的方法。所有这些有效算法统称为快速傅立叶变换fft。
MATLAB提供fft函数来计算矢量x的DFT。
y =
fft(x)
DFT的长度即为x的长度
y =
fft(x,N)
求N点的DFT,N一般是2的幂
例:对一给定的连续信号2SIN(4πT)+5COS(8πT)画出其对应的频谱图形 (N=64)
N=64;
n=0:N-1;
t=0.01*n;
q=n*2*pi/N;
x=2*sin(4*pi*t)+5*cos(8*pi*t);
y=fft(x,N);
plot(q,abs(y))
title('FFT N=64')

使用MATLAB进行功率谱的噪声分析
如:有一被噪声污染的信号很难看出他所包含的频率分量。设有一个由50Hz和120Hz正弦信号构成的信号,受随机噪声(randn(1,N))的干扰,采样频率为1000Hz(t=[0,0.6])。
t=0:0.001:0.6;
x=sin(2*pi*50*t)+sin(2*pi*120*t);
y=x+1.5*randn(1,length(t));
Y=fft(y,512);
P=Y.*conj(Y)/512;
f=1000*(0:255)/512;
subplot(2,1,1);
plot(y);
subplot(2,1,2);
plot(f,P(1:256));

|