www.pudn.com > NearFieldMeasurement.rar > compareFFT.m, change:2016-01-18,size:1635b

clc
clear all
W=100;       %定义频率
dx=1/(2*W);  %定义步长
N=2048;      %定义点数
n=0:N-1;

%%%%%%%%%%%%%%%%%%%%%%%%% 理论计算值  %%%%%%%%%%%%%%%%%%%%%%%%%%%%

w = 0:.0001:W;
FP=2./(1+(2*pi*w).^2);

%% %%%%%%%%%%%%%%%%%%%%%    直接求和      %%%%%%%%%%%%%%%%%%%%%%%%%
tic   %系统计时
for n1=0:N-1
FS1=0;
for k=0:N-1;
FS2=dx.*exp(-abs((k-N/2).*dx)).*exp(1i*2*pi*k*n1/N);
FS1=FS2+FS1;
end
FS(1,n1+1)=(-1).^n1.*FS1;
end
FS=abs(FS);
toc

%% %%%%%%%%%%%%%%%%%%%%%    FFT算法      %%%%%%%%%%%%%%%%%%%%%%%%%
k=0:N-1;
w1=n./(N*dx);  %采样以后的频率
Fk=dx.*exp(-abs((k-N/2).*dx));
tic
FF=fft(Fk,N);
FF=abs(FF);
toc

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(1)
title('直接求和计算结果与理论结果','FontName','华文隶书',...
'FontWeight','Bold','FontSize',16)
hold on
grid on;
plot(w,FP,'--r','LineWidth',1.5);
stem(w1,FS);

legend('理论法结果','直接求和结果')
axis([0 2 0 2]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(2)
title('FFT计算结果与理论结果','FontName','华文隶书',...
'FontWeight','Bold','FontSize',16)
hold on;
grid on;

plot(w,FP,'--r','LineWidth',1.5);
stem(w1,FF);

legend('理论结果','FFT计算结果')
axis([0 2 0 2])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

figure(3)
title('三种方法比较','FontName','华文隶书',...
'FontWeight','Bold','FontSize',16)
hold on
grid on;

plot(w,FP,'--r','LineWidth',1.5);
stem(w1,FS);
plot(w1,FF,'*k');

legend('理论结果','直接求和结果','FFT计算结果')
axis([0 2 0 2]);