www.pudn.com > matlab8.zip > cftbyfft.m


function [AW,f]=cftbyfft(wt,t,flag) 
%cftbyfft.m 
%本程序采用FFT计算连续时间Fourier变换。输出幅频谱数据对(f,AW)。 
%	输入量(wt,t)为已经窗口化了的时间函数wt(t),它们分别是长度为N的向量。 
%	对于"非平凡"取值时段有限的情况,应使该时段与窗口长度相比足够小。以 
%	提高频率分辨率。 
%	对于"非平凡"取值时段无限的情况,窗口长度的选取应使窗口外的函数值小 
%	到可忽略,以提高近似精度。 
%	输入宗量flag控制输出CFT的频率范围。 
%		flag取非0时(缺省使用),频率范围在[0,fs); 
%		flag取0时,频率范围在[-fs/2,fs/2)。 
if nargin==2;flag=1;end 
N=length(t); 
T=t(length(t))-t(1); 
dt=T/N; 
W0=fft(wt);																	%<16> 
W=dt*W0; 
df=1/T; 
n=0:1:(N-1); 
% 
if flag==0 
   n=-N/2:(N/2-1); 
   W=fftshift(W);	 
end 
f=n*df; 
AW=abs(W);	 
if nargout==0 
	plot(f,AW);grid,xlabel('频率f');ylabel('|w(f)|') 
end