哈尔滨工程大学数字信号处理五.docx
《哈尔滨工程大学数字信号处理五.docx》由会员分享,可在线阅读,更多相关《哈尔滨工程大学数字信号处理五.docx(24页珍藏版)》请在冰豆网上搜索。
哈尔滨工程大学数字信号处理五
一、实验原理
信号时无限长的,而在进行信号处理时只能采用有限长信号,所以需要将信号“截断”。
在信号处理中,“截断”被看成是用一个有限长的“窗口”看无限长的信号,或者从分析的角度是无限长的信号x(t)乘以有现场的窗函数我、w(t),由傅里叶变换的性质可知
X(t)w(t)→1/2Πx(jw)*W(jw).如果x(t)是频宽有限信号,而w(t)是频宽无限信号,截断后信号也必须是频宽无限信号,从而产生所谓的频谱泄漏。
频谱泄漏是不可避免的,但要尽量减小,因为加窗后,是原来的信号集中在窄频带内的能量分散到无限的频宽范围。
MATLAB信号处理工具箱提供了8种窗函数,调用格式分别为:
(N为窗长度,w为返回的窗函数)
(1)boxcar()产生矩形窗,调用格式:
w=boxcar(N)
(2)函数Hanning()用于产生汉宁窗,调用格式:
w=hanning(N)
(3)函数hamming()用于产生汉明窗,调用格式为:
w=hamming(N)
(4)函数bartlett()用于产生巴特利窗,调用格式为:
w=bartlett(N)
(5)函数blackman()用于产生布莱克曼窗,调用格式为:
w=blackman(N)
(6)函数traing()用于产生traing窗,调用格式为:
w=traing(N)
(7)函数kaiser()用于产生kaiser窗,调用格式为:
w=kaiser(N)
(8)函数chebwin()用于产生切比雪夫窗,调用格式为:
w=chebwin(N)
二、实验内容
1.用MATLAB编程绘制各种窗函数的形状
程序集图形文件如下:
(1)矩形窗
>>N=10;
>>w=boxcar(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(2)汉宁窗
>>N=10;
>>w=hanning(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(3)汉明窗
>>N=10;
>>w=hamming(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(4)巴特利窗
>>N=10;
>>w=bartlett(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(5)布莱克曼窗
>>N=10;
>>w=blackman(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(6)traing窗
>>N=10;
>>w=triang(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(7)kaiser窗
>>N=10;
>>w=kaiser(N);
>>nn=[0:
N-1];
>>plot(nn,w);
(8)切比雪夫窗
>>N=10;
>>w=chebwin(N);
>>nn=[0:
N-1];
>>plot(nn,w);
2.用MATLAB编程绘制各种窗函数的幅频相应,程序集图形文件如下:
(1)矩形窗
>>N=10;
>>w=boxcar(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(2)汉宁窗
>>N=10;
>>w=hanning(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(3)汉明窗
>>N=10;
>>w=hamming(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(4)巴特利窗
>>N=10;
>>w=bartlett(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(5)生布莱克曼窗
>>N=10;
>>w=blackman(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(6)traing窗
>>N=10;
>>w=triang(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(7)kaiser窗
>>N=10;
>>w=kaiser(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
(8)切比雪夫窗
>>N=10;
>>w=chebwin(N);
>>[X,W]=dtft(w,50);
>>subplot(211)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
>>subplot(212)
>>plot(W/2/pi,180/pi*angle(X))
>>xlabel('w'),ylabel('phase')
3.绘制矩形窗信号的幅频响应,窗长度分别为,N=10,N=20,N=50,N=100
N=10时
>>N=10;
>>w=boxcar(N);
>>[X,W]=dtft(w,50);
>>subplot(111)
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
N=20时
>>N=20;
>>w=boxcar(N);
>>[X,W]=dtft(w,100);
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
N=50时
>>N=50;
>>w=boxcar(N);
>>[X,W]=dtft(w,100);
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
N=100时
>>N=100;
>>w=boxcar(N);
>>[X,W]=dtft(w,100);
>>plot(W/2/pi,abs(X))
>>xlabel('w'),ylabel('abs')
4.已知周期信号x(t)=0.75+3.4cos2πft+2.7cos4πft+1.5sin3.5πft+2.57πft,其中f=25/16Hz,若截断时间长度分别为信号周期的0.9和1.1倍,试绘制和比较采用下面窗函数提取的x(t)的频谱。
(1)矩形窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=boxcar(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=boxcar(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(2)汉宁窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=hanning(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=hanning(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(3)汉明窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=hamming(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=hamming(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(4)巴特利窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=bartlett(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=bartlett(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(5)布莱克曼窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=blackman(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=blackman(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(6)traing窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=triang(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=triang(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(7)kaiser窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=kaiser(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=kaiser(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')
(8)切比雪夫窗
>>fs=10;%取抽样频率为10Hz
>>T0=2.56;%函数x(t)的周期为T0=2.56
>>f=25/16;
>>Ts=1/fs;
>>N1=0.9*T0/Ts;%截断时间为信号周期的0.9倍
>>N1=fix(N1);%对N1朝零方向取整
>>nn=[0:
N1-1];
>>w=chebwin(N1);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';%用窗函数提取x(t)
>>[X,W]=dtft(x,500);
>>subplot(211),plot(W/2/pi,abs(X))
>>title('t=0.9*T0'),xlabel('w'),ylabel('abs')
>>N2=1.1*T0/Ts;%截断时间为信号周期的1.1倍
>>N2=fix(N2);
>>nn=[0:
N2-1];
>>w=chebwin(N2);
>>x=0.75+3.4*cos(2*pi*f*nn/fs)+2.7*cos(4*pi*f*nn/fs)
+1.5*sin(3.5*pi*f*nn/fs)+2.5*sin(7*pi*f*nn/fs);
>>x=w.*x';
>>[X,W]=dtft(x,500);
>>subplot(212),plot(W/2/pi,abs(X))
>>title('t=1.1*T0'),xlabel('w'),ylabel('abs')