E71 Take Home Exam

E71 Take Home Exam
1 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
E71 Take Home Exam
Contents
Initialization
Part a
Part b
Part c
Part d
Part f
Hamming window (for comparison)
Initialization
clear all
N=31;
k=-N:2*N;
f=linspace(-0.5,0.5,10000);
%Normalized frequency
Part a
Rectangular window. (Assignment 3, problem 3).
subplot(211);
x= (k>=0 & k<N);
stem(k, x); axis([-N 2*N -1.1 1.1]);
subplot(212)
X=exp(-j*pi*f*(N-1)).*sin(pi*f*N)./sin(pi*f);
plot(f,abs(X)); axis([-0.5 0.5 0 N]);
Zoom in
flim=min(f(f>0.1));
axis([-flim flim 0 N]);
3/15/2010 10:11 AM
E71 Take Home Exam
2 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Double check
subplot(221);
plot(f,20*log10(abs(X))); title('Theory');
subplot(223);
plot(f,angle(X));
subplot(222);
[m]=freqz(x,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Main lobe width and first lobe height.
3/15/2010 10:11 AM
E71 Take Home Exam
3 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Main lobe width 2*pi/N
sdlb=max(abs(X(f>(1/N))))/max(abs(X));
%Side lobe height
disp(sprintf('a) Main lobe width %g, Side lobe height %g, %gdB',...
2*pi/N,sdlb,20*log10(sdlb)));
a) Main lobe width 0.202683, Side lobe height 0.217997, -13.231dB
Part b
Same as part a, but only half as big.
Rectangular window.
subplot(211);
y1= 0.5*(k>=0 & k<N);
stem(k, y1); axis([-N 2*N -1.1 1.1]);
subplot(212)
Y1=0.5*exp(-j*pi*f*(N-1)).*sin(pi*f*N)./sin(pi*f);
plot(f,abs(Y1)); axis([-0.5 0.5 0 N]);
Zoom in
flim=min(f(f>0.1));
axis([-flim flim 0 N]);
3/15/2010 10:11 AM
E71 Take Home Exam
4 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Double check
subplot(221);
plot(f,20*log10(abs(Y1))); title('Theory');
subplot(223);
plot(f,angle(Y1));
subplot(222);
[m]=freqz(y1,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Part c
3/15/2010 10:11 AM
E71 Take Home Exam
5 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
cosine term - use class handout for spectral leakage of windowed cosine,
but replace f0/fs by 1/N, and i by f*N/fs (or see attached).
subplot(211);
y2=0.5*cos(2*pi*k/N).*(k>=0 & k<N);
stem(k, y2); axis([-N 2*N -1.1 1.1]);
subplot(212)
Y2=0.5*0.5*(...
exp(-j*pi*(f-1/N)*(N-1)).*...
sin(pi*N*(f-1/N))./sin(pi*(f-1/N))+...
exp(-j*pi*(f+1/N)*(N-1)).*...
sin(pi*N*(f+1/N))./sin(pi*(f+1/N)));
plot(f,abs(Y2)); axis([-0.5 0.5 0 N]);
%
Zoom in
flim=min(f(f>0.1));
axis([-flim flim 0 N]);
3/15/2010 10:11 AM
E71 Take Home Exam
6 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Double check
subplot(221);
plot(f,20*log10(abs(Y2))); title('Theory');
subplot(223);
plot(f,angle(Y2));
subplot(222);
[m]=freqz(y2,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Part d
3/15/2010 10:11 AM
E71 Take Home Exam
7 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
subplot(211);
y=y1-y2;
stem(k, y); axis([-N 2*N -1.1 1.1]);
subplot(212)
Y=Y1-Y2;
plot(f,abs(Y)); axis([-0.5 0.5 0 N]);
Zoom in
flim=min(f(f>0.1));
axis([-flim flim 0 N]);
3/15/2010 10:11 AM
E71 Take Home Exam
8 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Main lobe width and first lobe height.
Main lobe width 4*pi/N
sdlb=max(abs(Y(f>(2/N))))/max(abs(Y));
%Side lobe height
disp(sprintf('c) Main lobe width %g, Side lobe height %g, %g dB',...
4*pi/N,sdlb,10*log10(sdlb)));
c) Main lobe width 0.405367, Side lobe height 0.0267026, -15.7345 dB
Double check
subplot(221);
plot(f,20*log10(abs(Y))); title('Theory');
subplot(223);
plot(f,angle(Y));
subplot(222);
[m]=freqz(y,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Part f
Find best value of gamma
Double size of y1 and y2 from previous (we'll then multiply by gamma);
y1=2*y1;
y2=2*y2;
gamma=0:0.01:1;
min_sdlb=1E10;
Y1=2*Y1;
Y2=2*Y2;
%Big number to start
for i=1:length(gamma),
Y=gamma(i)*Y1-(1-gamma(i))*Y2;
sdlb=max(abs(Y(f>(2/N))))/max(abs(Y));
if sdlb<min_sdlb,
min_sdlb=sdlb;
min_gam=gamma(i);
%Side lobe height
3/15/2010 10:11 AM
E71 Take Home Exam
9 of 12
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
end
end
Plot it
subplot(211);
y= min_gam*y1-(1-min_gam)*y2;
stem(k, y); axis([-N 2*N -1.1 1.1]);
subplot(212)
Y=min_gam*Y1-(1-min_gam)*Y2;
plot(f,abs(Y)); axis([-0.5 0.5 0 N]);
Zoom in
flim=min(f(f>0.1)); axis([-flim flim 0 N]);
disp(sprintf('f) gamma %g, Side lobe height %g, %g dB',...
min_gam,min_sdlb,20*log10(min_sdlb)));
f) gamma 0.54, Side lobe height 0.0081665, -41.7593 dB
3/15/2010 10:11 AM
E71 Take Home Exam
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Double check
subplot(221);
plot(f,20*log10(abs(Y))); title('Theory');
subplot(223);
plot(f,angle(Y));
subplot(222);
[m]=freqz(y,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Hamming window (for comparison)
10 of 12
3/15/2010 10:11 AM
E71 Take Home Exam
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Plot it
subplot(211);
yh= 0.54*y1-(1-0.54)*y2;
stem(k, yh); axis([-N 2*N -1.1 1.1]);
subplot(212)
Yh=0.54*Y1-(1-0.54)*Y2;
plot(f,abs(Yh)); axis([-0.5 0.5 0 N]);
Zoom in
11 of 12
flim=min(f(f>0.1)); axis([-flim flim 0 N]);
sdlb=max(abs(Yh(f>(2/N))))/max(abs(Yh));
%Side lobe height
disp(sprintf('Hamming) gamma 0.54, Side lobe height %g, %g dB',...
sdlb,20*log10(sdlb)));
Hamming) gamma 0.54, Side lobe height 0.0081665, -41.7593 dB
3/15/2010 10:11 AM
E71 Take Home Exam
file:///K:/My%20Documents/Classes/ENGR071/E71%20...
Double check
12 of 12
subplot(221);
plot(f,20*log10(abs(Yh))); title('Theory');
subplot(223);
plot(f,angle(Yh));
subplot(222);
[m]=freqz(yh,1,2*pi*f);
plot(f,20*log10(abs(m))); title('Calc');
subplot(224);
plot(f,angle(m));
Published with MATLAB® 7.8
3/15/2010 10:11 AM
DTFT of cosine for window
(E71 Take home)
Consider x(k)=cos(2πk/N). What is DTFT?
f
⎛ k ⎞ − j2 πfTk N−1
⎛ k ⎞ − j2 π fs k
= ∑ cos ⎜ 2π ⎟ e
= ∑ cos ⎜ 2π ⎟ e
X(f) = ∑ x(k)e
N
⎝
⎠
⎝ N⎠
k =−∞
k =0
k =0
⎛ f 1⎞
⎛ f 1⎞
f
N −1
k
k
N −1 ⎛ − j2 π ⎜ − ⎟k
− j2 π ⎜ + ⎟k ⎞
1 − aN
k
− jj2 π ⎞ − j2 π f k
1 N−1 ⎛ jj2 π N
1
f N
f N
a =
s
∑
X(f) = ∑ ⎜ e
+ e N ⎟e
= ∑ ⎜e ⎝ s ⎠ + e ⎝ s ⎠ ⎟
1−a
k =0
2 k =0 ⎝
2
⎜
⎟
k =0
⎠
⎝
⎠
θ
θ
θ
⎛ f 1⎞
⎛ f 1⎞
−j N ⎛ j N
−j N ⎞
⎛
⎛θ ⎞
− j2 π ⎜ − ⎟N
− j2 π ⎜ + ⎟N ⎞
e 2 ⎜e 2 − e 2 ⎟
sin
fs N ⎠
fs N ⎠
⎝
⎝
θ
j
N
−
θ
⎜ 2 N⎟
⎟ 1−e
− j (N −1)
1 ⎜1 − e
1−e
⎝
⎠ =e 2
⎝
⎠
=
X(f) = ⎜
+
− jθ
θ
θ
θ
⎛ f 1⎞
⎛ f 1⎞ ⎟
−j ⎛ j
−j ⎞
1−e
⎛θ⎞
2⎜
− j2 π ⎜ − ⎟
− j2 π ⎜ + ⎟
2
2
2
sin
⎟
−
e
e
e
f
N
f
N
⎜2⎟
⎜
⎟
⎝ s
⎠
1−e ⎝ s ⎠ ⎠
⎝ ⎠
⎝ 1−e
⎝
⎠
∞
− j2 πfTk
N −1
⎛
⎛
⎛
⎛ f 1 ⎞⎞
⎛ f 1 ⎞⎞ ⎞
sin ⎜ πN ⎜ − ⎟ ⎟
sin ⎜ πN ⎜ + ⎟ ⎟ ⎟
⎜
⎛ f 1⎞
⎛ f 1⎞
⎜
⎟
⎜
⎟
j
N
1
− jπ ⎜ − ⎟ (N −1)
−
π
+
−
(
)
⎜
⎟
1⎜
⎝ fs N ⎠ ⎠
⎝ fs N ⎠ ⎠ ⎟
⎝
⎝
⎝ fs N ⎠
⎝ fs N ⎠
+e
X(f) = ⎜ e
2
⎛ ⎛ f 1 ⎞⎞
⎛ ⎛ f 1 ⎞⎞ ⎟
⎜
sin ⎜ π ⎜ − ⎟ ⎟
sin ⎜ π ⎜ + ⎟ ⎟ ⎟
⎜ f
⎟
⎜ f
⎟ ⎟
⎜
⎝ ⎝ s N⎠⎠
⎝ ⎝ s N⎠⎠ ⎠
⎝