% Nick Kohout % Steve Neuendorffer % Here we consider a signal s containing several frequencies. % We begin by truncating the sequence at different lengths, % periodically extending the function to a large length(512) and % taking the DFT (or FFT) as an approximation to the DTFT. (Notice % that since we have chosen Discrete frequencies of the form 2Pi*k/N, % the DFT of the sequence trucated to length N will simply be Discrete % Delta functions at the input frequencies. This is done for % illustrative purposes only.) % Given a signal x[n] and a truncation window h[n], we are finding the % DTFT of x[n]h[n] which is proportional to X(ejw)*H(ejw) (periodic % convolution). This shows that it makes sense to look at H(ejw) as a % "spreading" or "distortion" of the exact frequencies of X(ejw) when % the DFT is used to approximate X(ejw). (i.e. we wish to choose a % window h[n] whose DTFT H(ejw) is either narrow (high resolution) % or low ripple (low sidelobe level)). Unfortunately, there is a % trade off between the two. % Later on we take the DFT (approximating the DTFT) of both windows. % In order to get a quantitive analysis of the resolution and sidelobe % level in each, we also plot the Power as a function of frequency for % each window. % ANALYSIS: % it is seen in the first sequence of graphs that at short truncation % lengths, both the rectangular window(R) and the Hamming window(H) % are 'poor'. At medium lengths (N=32, say) We can see how the % Hamming window, with lower resolution does not distinguish between % frequencies that are close together, but has practically no % sidelobes. The Rectangular window, however resolves the large % peaks very nicely, but does not contain much useful information about % lower energy frequencies. % Looking at the plots of the DFT of both windows, we can see that the % Hamming window has approximately half the resolution of the % Rectangular window (twice the main lobe width). However, the % largest sidelobe of the Hamming window is down >40 dB, whereas the % largest sidelobe of the Rectangular window is down a mere 10-15 dB. N=512; n=1:N; s=3*cos(2*pi/N*10*n)+3*cos(2*pi/N*20*n)+cos(2*pi/N*100*n)+cos(2*pi/N*30*n)+2*cos(2*pi/N*60*n); fs=abs(fft(s)); k=[8 16 32 64 128 256 384 512]; for M=k r=[ones(1,M) zeros(1,N-M)]; xr=r.*s; fr=fft(xr); m=1:M; ham=.54-.46*cos(2*pi*m/(M-1)); ham=[ham zeros(1,N-M)]; xh=ham.*s; fh=fft(xh); clf; subplot(2,1,1) hold on; plot(n,fs*M/N,'r') plot(n,abs(fr)); title(sprintf('square window M=%i',M)) axis([0 N 0 2*M]) subplot(2,1,2) hold on; plot(n,fs*M/N,'r') plot(n,abs(fh)/0.54); title(sprintf('hamming window M=%i',M)) axis([0 N 0 2*M]) disp('Hit a key for the next plot') pause end % for loop clf M=48; r=[ones(1,M) zeros(1,N-M)]; xr=r.*s; fr=fft(xr); m=1:M; ham=.54-.46*cos(2*pi*m/(M-1)); ham=[ham zeros(1,N-M)]; xh=ham.*s; fh=fft(xh); fftr=fft(r); fftham=fft(ham); subplot(2,1,1); hold on; plot(n,abs(fftr)); title('DFT of Rectangular window N=48'); subplot(2,1,2); plot(n,abs(fftham)); title('DFT of Hamming window N=48'); disp('hit a key'); pause; clf; subplot(2,1,1); hold on; plot(n,20*log10((abs(fftr)+.001)./max(abs(fftr)))); title('Power(dB) of DFT of Rectangular window N=48'); axis([0 N -75 0]); subplot(2,1,2); plot(n,20*log10((abs(fftham)+.001)./max(abs(fftham)))); title('Power(dB) of DFT of Hamming window N=48'); axis([0 N -75 0]); % END!