离散时间傅立叶变换(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)); 
  
 
 
  
 
 |