数字信号处理实验三窗函数的特性
实验
课程名称:数字信号处理
实 验 三:窗函数的特性分析
班 级:通信1403
学生姓名:强亚倩
学 号:1141210319
指导教师:范杰清
华北电力大学(北京)
一、实验目的
分析常用窗函数的时域和频域特性,灵活运用窗函数分析信号频谱和设计FIR数字滤波器。
二、 实验原理
在确定信号谱分析、随机信号功率谱估计以及FIR数字滤波器设计中,窗函数的选择起着重要的作用。在信号的频谱分析中,截短无穷长的序列会造成频率泄漏,影响频谱分析的精度和质量。合理选取窗函数的类型,可以改善泄漏现象。在FIR数字滤波器设计中,截短无穷长的系统单位脉冲序列会造成FIR滤波器幅度特性的波动,且出现过渡带。
三、实验内容
1(分析并绘出常用窗函数的时域特性波形
(1)矩形窗函数时域波形及频谱
?编程 ?结果:
N=51;
w=boxcar(N)
Y=fft(w,256);
subplot(2,1,1);
stem([0:N-1],w);
xlabel('w');
ylabel('y');
title('时域波形');
subplot(2,1,2);
Y0=abs(fftshift(Y));
plot([-128:127],Y0)
xlabel('W');
ylabel('Y0');
title('频谱图形');
(2)hanning窗函数时域波形及频谱 ?编程 ?结果
clear all;
clc;
n=51;
w=hanning(n);
y0=fft(w,256); subplot(2,1,1); stem([0:n-1],w) xlabel('n'); ylabel('w'); title('hanning窗时域
波形')
subplot(2,1,2); Y=abs(fftshift(y0));
plot([-128:127],Y);
xlabel('w')
ylabel('Y')
title('hanning频域波形')
(3)哈明窗函数时域波形及频谱 ?编程 clear all;
clc;
n=51;
w=hamming(n); y0=fft(w,256); subplot(2,1,1); stem([0:n-1],w) xlabel('n');
ylabel('w');
title('hamming窗时域波形')
subplot(2,1,2); Y=abs(fftshift(y0)); plot([-128:127],Y); xlabel('w')
ylabel('Y')
title('hamming频域波形')
?结果
(4)blackman窗函数时域波形及频谱 ?编程
clear all;
clc;
n=51;
w=blackman(n);
y0=fft(w,256);
subplot(2,1,1); stem([0:n-1],w) xlabel('n');
ylabel('w');
title('blackman窗时域波形')
subplot(2,1,2); Y=abs(fftshift(y0)); plot([-128:127],Y); xlabel('w')
ylabel('Y')
title('blackman频域波形')
?结果
(5)battlett窗函数时域波形及频域特性 ?编程 ?结果
clear all;
clc;
n=51;
w=bartlett(n); y0=fft(w,256); subplot(2,1,1); stem([0:n-1],w) xlabel('n'); ylabel('w'); title('bartlett窗时
域波形')
subplot(2,1,2); Y=abs(fftshift(y0));
plot([-128:127],Y);
xlabel('w')
ylabel('Y')
title('bartlett频域波形')
(6)Kaiser窗函数时域及频域波形
?编程
clear all;
clc;
n=51;
w=kaiser(n); y0=fft(w,256); subplot(2,1,1); stem([0:n-1],w)
xlabel('n');
ylabel('w');
title('Kaiser时域波形')
subplot(2,1,2);
Y=abs(fftshift(y0));
plot([-128:127],Y);
xlabel('w')
ylabel('Y')
title('Kaiser频域波形')
?结果
3. 研究凯塞窗(Kaiser)的参数选择对其时域和频域的影响。
(1) 固定beta=4,分别取N=20, 60, 110;
(2) 固定N=60,分别取beta=1,5,11。 (1)?编程:
N=20;
beta=4;
w=Kaiser(N,beta); Y=fft(w,256);
subplot(3,2,1);
stem([0:N-1],w); xlabel('w');
ylabel('y');
title('时域波形beta=4,N=20'); subplot(3,2,2);
Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形beta=4,N=20'); N=60;
beta=4;
w=Kaiser(N,beta); Y=fft(w,256);
subplot(3,2,3);
stem([0:N-1],w); xlabel('w');
ylabel('y');
title('时域波形beta=4,N=60'); subplot(3,2,4);
Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形beta=4,N=60'); N=110;
beta=4;
w=Kaiser(N,beta); Y=fft(w,256);
subplot(3,2,5);
stem([0:N-1],w);
xlabel('w');
ylabel('y');
title('时域波形beta=4,N=110'); subplot(3,2,6);
Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形beta=4,N=110'); ?结果
(2)?编程
N=60;
beta=1;
w=Kaiser(N,beta); Y=fft(w,256);
subplot(3,2,1); stem([0:N-1],w); xlabel('w');
ylabel('y');
title('时域波形N=60,beta=1'); subplot(3,2,2); Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形N=60,beta=1'); N=60;
beta=5;
w=Kaiser(N,beta); Y=fft(w,256);
subplot(3,2,3); stem([0:N-1],w); xlabel('w');
ylabel('y');
title('时域波形N=60,beta=5'); subplot(3,2,4); Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形N=60,beta=5'); N=60;
beta=11;
w=kaiser(N,beta); Y=fft(w,256);
subplot(3,2,5);
stem([0:N-1],w); xlabel('w');
ylabel('y');
title('时域波形N=60,beta=11'); subplot(3,2,6);
Y0= abs(fftshift(Y)); plot([-128:127], Y0) xlabel('W');
ylabel('Y0');
title('频谱图形N=60,beta=11'); ?结果
11π9π,,,,x[k],0.5cosk,cosk,,,,4. 序列 ,分析其频谱。 2020,,,,
(1) 利用不同宽度N的矩形窗截短该序列, N分别为 20,40,160,观察不同长
度N的窗对谱分析结果的影响;
(2) 利用哈明窗重做 (1);
(3) 利用凯塞窗重做 (1);
(4) 比较和分析三种窗的结果;
(5) 总结不同长度或类型的窗函数对谱分析结果的影响。 (1)编程
N=20;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=ones(1,N);
y=x.*w;
Y=fft(y,512);
subplot(3,2,1);
stem([0:N-1],y);
title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,2);
Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
N=40;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=ones(1,N);
y=x.*w;
Y=fft(y,512);
subplot(3,2,3); stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,4); Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
N=160;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=ones(1,N);
y=x.*w;
Y=fft(y,512);
subplot(3,2,5); stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,6); Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
?结果
(2)?编程
N=20;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=1/2*(1-cos(2*pi*k/(N-1)));
y=x.*w;
Y=fft(y,512); subplot(3,2,1); stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,2);
Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
N=40;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=1/2*(1-cos(2*pi*k/(N-1)));
y=x.*w;
Y=fft(y,512);
subplot(3,2,3);
stem([0:N-1],y);
title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,4);
Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
N=160;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=1/2*(1-cos(2*pi*k/(N-1)));
y=x.*w;
Y=fft(y,512);
subplot(3,2,5);
stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,6); Y0=abs(fftshift(Y));
plot([-256:255], Y0);
title('时域波形');
xlabel('频率');
ylabel('幅值');
?结果
(3)?编程
beta=4;
N=20;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=(Kaiser(N,beta))'; y=x.*w;
Y=fft(y,512);
subplot(3,2,1);
stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,2);
Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
beta=4;
N=40;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=(Kaiser(N,beta))'; y=x.*w;
Y=fft(y,512);
subplot(3,2,3);
stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,4);
Y0=abs(fftshift(Y));
plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
beta=4;
N=160;
k=0:N-1;
x=0.5*cos(11*pi*k/20)+cos(9*pi*k/20);
w=(Kaiser(N,beta))'; y=x.*w;
Y=fft(y,512);
subplot(3,2,5);
stem([0:N-1],y); title('抽样信号');
xlabel('频率');
ylabel('幅值');
subplot(3,2,6); Y0=abs(fftshift(Y)); plot([-256:255], Y0); title('时域波形');
xlabel('频率');
ylabel('幅值');
?结果
四:思考题
1. 什么是信号截短,什么是吉布斯(Gibbs)现象,
增加长度N能消除吉布斯现象吗,应该如何解决, 2. 非矩形窗有哪些,相比矩形窗,其优缺点有哪些, 3. 怎样选择凯塞窗(Kaiser)的参数,
4. 在信号谱分析中,如何合理地选择窗函数, 5. 在数字滤波器设计中,如何合理地选择窗函数,