% - Fast Fourier Transform [64FFT]
clear;clc;clf;
N=64;
n=0:63;
x=0.5*cos(15/200*pi*n)+cos(6/200*pi*n);
x1 = zeros(64,1);
x2 = zeros(64,1);
x3 = zeros(64,1);
y = zeros(64,1);
% stage 1
for mm = 0:1:15
%radix-4
twiddle1=exp(-2*pi*j*mm*1/64);
twiddle2=exp(-2*pi*j*mm*2/64);
twiddle3=exp(-2*pi*j*mm*3/64);
x1(mm+1) =x(mm+1) +x(mm+17)+x(mm+33) +x(mm+49);
x1(mm+17)=(x(mm+1)-j*x(mm+17)-x(mm+33)+j*x(mm+49))*twiddle1;
x1(mm+33)=(x(mm+1) -x(mm+17)+x(mm+33) -x(mm+49))*twiddle2;
x1(mm+49)=(x(mm+1)+j*x(mm+17)-x(mm+33)-j*x(mm+49))*twiddle3;
end;
% stage 2
for nn = 0:16:48
for mm = 0:1:3
%radix-4
twiddle1=exp(-2*pi*j*mm*4*1/64);
twiddle2=exp(-2*pi*j*mm*4*2/64);
twiddle3=exp(-2*pi*j*mm*4*3/64);
x2(mm+nn+1) =x1(mm+nn+1) +x1(mm+nn+5)+x1(mm+nn+9) +x1(mm+nn+13);
x2(mm+nn+5) =(x1(mm+nn+1)-j*x1(mm+nn+5)-x1(mm+nn+9)+j*x1(mm+nn+13))*twiddle1;
x2(mm+nn+9) =(x1(mm+nn+1) -x1(mm+nn+5)+x1(mm+nn+9) -x1(mm+nn+13))*twiddle2;
x2(mm+nn+13)=(x1(mm+nn+1)+j*x1(mm+nn+5)-x1(mm+nn+9)-j*x1(mm+nn+13))*twiddle3;
end;
end;
% stage 3
for nn = 0:4:60
x3(nn+1) = x2(nn+1) +x2(nn+2)+x2(nn+3) +x2(nn+4);
x3(nn+2) = x2(nn+1)-j*x2(nn+2)-x2(nn+3)+j*x2(nn+4);
x3(nn+3) = x2(nn+1) -x2(nn+2)+x2(nn+3) -x2(nn+4);
x3(nn+4) = x2(nn+1)+j*x2(nn+2)-x2(nn+3)-j*x2(nn+4);
end;
% reorder
for n2 = 0:3
for n1 = 0:3
for n0 = 0:3
y(16*n0+4*n1+n2+1)=x3(16*n2+4*n1+n0+1);
end;
end;
end;
X=fft(x);
real1=abs(y);
imag1=angle(y);
k=0:length(real1)-1;
subplot(221);
stem(k,real1,'.');
title('64点-基4');
xlabel('k');ylabel('|X(k)|');
k=0:length(imag1)-1;
subplot(222);
stem(k,imag1,'.');
xlabel('k');ylabel('θ(k)');
real2=abs(X);
imag2=angle(X);
k=0:length(real2)-1;
subplot(223);
stem(k,real2,'.');
title('64点FFT');
xlabel('k');ylabel('|X(k)|');
k=0:length(imag2)-1;
subplot(224);
stem(k,imag2,'.');
xlabel('k');ylabel('θ(k)');
- 1
- 2
前往页