发布时间 : 星期一 文章DSP数字信号处理实验报告 - 图文更新完毕开始阅读
信号同上,加矩形窗。时域采样点数分别取L?10,L?20,L?40,L?100。 画出以上各种时长情况下,频域采样点数分别为N?32,N?64时的DFT(在同一个图上用虚线画出相应的DTFT频谱,用于比较)。
离散频谱DFT和连续频谱DTFT有什么关系?L一定的情况下,能否通过增加N改善频率的物理分辨率?N的作用是什么?
实验过程与结果: 实验程序:
%================ % Problem 1
%================
% ------- Plot waveform and spectrum of the windows figure,L=10; windows_spectrum(L,[2 2 1 2 2 2]) L=20; windows_spectrum(L,[2 2 3 2 2 4])
figure,L=40; windows_spectrum(L,[2 2 1 2 2 2]) L=100; windows_spectrum(L,[2 2 3 2 2 4])
% ------ plot the signal's spectrum ------------- L=100;
x=cos(0.4*pi*(0:(L-1)))+cos(0.5*pi*(0:(L-1)))+cos(0.6*pi*(0:(L-1))); L=10; figure,windowed_spectrum(x(1:L),[2 2 1 2 2 2]) L=20; windowed_spectrum(x(1:L),[2 2 3 2 2 4])
L=40; figure,windowed_spectrum(x(1:L),[2 2 1 2 2 2]) L=100; windowed_spectrum(x(1:L),[2 2 3 2 2 4])
%================ % Problem 2
%================
L=10; figure,windowed_dft_spectrum(x(1:L),[2 2 1 2 2 2]) L=20; windowed_dft_spectrum(x(1:L),[2 2 3 2 2 4])
L=40; figure,windowed_dft_spectrum(x(1:L),[2 2 1 2 2 2]) L=100; windowed_dft_spectrum(x(1:L),[2 2 3 2 2 4])
子程序1:
function []=windowed_dft_spectrum(x,a); L=length(x);
W1=abs(fft(x,1024)); omega=(0:1023)*2/1024; N=32;
kk=2/N*(0:N-1);
if N>=L, dft=abs(fft(x,N)); else dft=zeros(N,1);
for k=1:N, dft(k)=sum(x(:)'*exp(-j*2*pi/N*(k-1)*(0:L-1)')); end
end
subplot(a(1),a(2),a(3)),plot(omega,W1,':'),hold on,stem(kk,abs(dft),'r.'),
xlabel('\\omega(\\pi)'),axis([0 2 0 50]),title(['L=',num2str(L),', N=',num2str(N)])
N=64;
kk=2/N*(0:N-1);
if N>=L, dft=abs(fft(x,N)); else dft=zeros(N,1);
for k=1:N, dft(k)=sum(x(:)'*exp(-j*2*pi/N*(k-1)*(0:L-1)')); end end
subplot(a(4),a(5),a(6)),plot(omega,W1,':'),hold on,stem(kk,abs(dft),'r.')
xlabel('\\omega(\\pi)'),axis([0 2 0 50]),title(['L=',num2str(L),', N=',num2str(N)])
子程序2:
function windowed_spectrum(x,a) L=length(x); w=hamming(L);
W1=abs(fft(x,1024)); W2=abs(fft(x.*w',1024)); omega=(0:1023)*2/1024;
subplot(a(1),a(2),a(3)),plot(omega,W1),xlabel('\\omega(\\pi)'),axis([0 2 0 50]) title(['X(w) with rectangular window, L=',num2str(L)]),grid on
subplot(a(4),a(5),a(6)),plot(omega,W2),xlabel('\\omega(\\pi)'),axis([0 2 0 50]) title(['X(w) with Hamming window, L=',num2str(L)]),grid on
子程序3:
function windows_spectrum(L,a)
rect=rectwin(L); % rectangular window hamm=hamming(L); % Hamming window
w=2*pi/1024*(-511:512); % discreted frequency W1=fft(rect,1024); W1=abs(fftshift(W1)); W2=fft(hamm,1024); W2=abs(fftshift(W2));
subplot(a(1),a(2),a(3)),hold on,plot(1:L,rect,'bo',1:L,hamm,'r*'),stem(1:L,rect),axis([1 L -0.5 2]), xlabel('n'),title(['L=',num2str(L),' (waveform)']),legend('rectangular','Hamming')
subplot(a(4),a(5),a(6)),plot(w/pi,abs(W1),w/pi,abs(W2),'r'),xlabel('\\omega(\\pi)'),title(['L=',num2str(L), ' (Magnitude spectrum)']) legend('rectangular','Hamming')
实验结果:
一、观察窗函数的影响。
(1) 写出x(n)(???n???)的频谱X(?)
X(?)?2?[?(??0.4?)??(??0.5?)??(??0.6?)]
250020001500|X(?)|1000500000.10.20.30.40.50.60.70.80.91?(?)
(2) 分别画出窗长度 L?10,L?20,L?40,L?100的矩形窗频谱和Hamming窗频谱。
(3) 时域采样点数分别取L?10,L?20,L?40,L?100, 分别画出x(n)加矩形窗及加Hamming窗时DTFT频谱X(?)