E71 Lab 6 (Brian Park, Mark Piper, David Luong, Aron Dobos) 23 March 2006
Contents
Part 1: Computing the DFT of two signals using one FFT call
clc;clear all;close all;
n = 0:255;
x0 = sin(2*pi*n/6);
x1 = cos(2*pi*n/8);
x0FFT = fft(x0);
x1FFT = fft(x1);
v = x0 + j*x1;
vFFT = fft(v);
x0FFT2 = (vFFT+conj(circshift(fliplr(vFFT),[0 1])))/2;
x1FFT2 = (vFFT-conj(circshift(fliplr(vFFT),[0 1])))/(2*j);
figure;plot(n,abs(x0FFT),'o',n,abs(x0FFT2));
title('sin(2*pi*n/6)');legend('direct FFT','indirect FFT');
figure;plot(n,abs(x1FFT),'o',n,abs(x1FFT2));
title('cos(2*pi*n/8)');legend('direct FFT','indirect FFT');
Part 2: Computing a 2N point real DFT as a N point complex DFT
clc;clear all;close all;
nx = 0:511;
x = exp(-0.01.*nx).*sin(2*pi*0.2*nx);
ny = 0:255;
y = x(2*ny+1) + j*x(2*ny+2);
yfft = fft(y);
y1fft = (yfft + conj(circshift(fliplr(yfft),[0 1])))/2;
y2fft = (yfft - conj(circshift(fliplr(yfft),[0 1])))/(2*j);
for i=1:256,
g(i)=y1fft(i) + exp(-j*pi*i/256)*y2fft(i);
end
for i=1:256,
gN(i)=y1fft(i) - exp(-j*pi*i/256)*y2fft(i);
end
xfft = fft(x);
figure;plot(nx,abs(xfft),'o',nx,abs(cat(2,g,gN)),'x');
title('exp(-0.01*n)*sin(2*pi*0.2*n)');legend('direct FFT','indirect FFT');