数字信号处理实验九.docx
《数字信号处理实验九.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验九.docx(20页珍藏版)》请在冰豆网上搜索。
数字信号处理实验九
实验报告
课程名称:
数字信号处理
实验九:
信号滤波
班级:
通信1403
学生姓名:
强亚倩
学号:
1141210319
指导教师:
范杰清
华北电力大学(北京)
一、实验目的
综合应用信号频谱分析和数字滤波器设计的知识,实现信号的滤波。
加深理解信号时域和频域分析的物理概念,理解设计指标的工程概念,认识不同类型滤波器的特性和适用范围。
二、实验原理
首先对待滤波的信号进行频谱分析,观察信号频率分布的规律,从而确定数字滤波器的类型(FIR滤波器、IIR滤波器、自适应滤波器、小波滤波器等)。
在加性噪声的情况下,若信号的频谱与噪声的频谱基本不重叠,可以采用频率选择滤波器(FIR滤波器、IIR滤波器)。
若信号的频谱与噪声的频谱重叠较多,可以采用自适应滤波、小波滤波等。
若为乘性噪声,可以根据同态滤波的原理对信号进行预处理,然后再按照加性噪声的情况处理。
在确定了数字滤波器类型后,还需要根据信号时域特性、频域特性、或时频特性确定滤波器的设计参数,设计出相应的数字滤波器。
最后,利用该数字滤波器对信号进行滤波,在时域和频域观察信号滤波的主观及客观效果。
若主观及客观效果满足要求,说明分析过程和滤波方法正确有效,若不满足要求,需要重新分析和设计。
三、实验内容
1.对周期方波信号进行滤波。
(1)生成一个基频为10Hz的周期方波信号x(t)。
(2)设计一数字滤波器,滤去该周期信号中40Hz以外的频率成分,观察滤波前后信号时域波形及频谱。
(3)若该信号x(t)淹没在噪声中(随机噪声用randn((1,N)生成),试用filter函数滤去噪声。
滤波前的时域波形
Fs=1000;
T=1/10;
t=0:
1/Fs:
1;
x=square(2*pi*10*t);
figure
plot(t,x)
title('矩形波')
xlabel('时间(秒)')
ylabel('函数值(福特)')
axis([0,0.2,-1.5,1.5])
滤波前的频谱
N=T*Fs;
t1=0:
1/Fs:
1/Fs*(N-1)
x1=square(2*pi*10*t1);
f=(-N/2)*Fs/N:
Fs/N:
((N/2-1))*Fs/N;
fx=fftshift(fft(x,N))/N;
figure
plot(f,abs(fx));
title('方波信号的频谱')
xlabel('频率')
ylabel('函数值fx')
滤波后的时域波形
[n,Wn]=buttord(40/500,50/500,3,15);
[b,a]=butter(n,Wn);
y=filter(b,a,x);
figure
plot(t,y)
title('矩形波通过低通滤波器后的时域波形')
xlabel('时间(秒)')
ylabel('函数值(福特)')
axis([0,0.2,-1.5,1.5])
滤波后的频谱
N=512;
f=(-N/2)*Fs/N:
Fs/N:
(N/2-1)*Fs/N;
fy=fftshift(fft(y,N))/N;
figure
plot(f,abs(fy))
title('滤波后信号的频谱')
xlabel('频率')
ylabel('函数值fx')
figure
freqz(b,a);
title('低通滤波器的频率特性')
滤除噪声
noise=randn(1,100);
HC=x1+noise;
f=(-N/2)*Fs/N:
Fs/N:
(N/2-1)*Fs/N;
HC=fftshift(fft(HC,N))/N;
figure
plot(f,abs(HC));
title('滤除噪声之前')
xlabel('频率f')
ylabel('幅度')
HC1=filter(b,a,HC);
figure
plot(f,abs(HC1));
title('滤除噪声之后')
xlabel('频率f')
ylabel('幅度')
2.若原始落信号由5Hz、15Hz、30Hz三个幅度相等的正弦信号构成。
分别设计一个FIR和IIR数字滤波器滤除5Hz和30Hz频率成分。
(1)绘制原始信号时域波形和幅度频谱。
(2)分别设计FIR和IIR数字滤波器,滤绘制其幅频特性。
(3)利用设计的滤波器对信号进行滤波,绘制输出信号的时域波形和幅度频谱。
时域波形
(1)k=0:
255;
x=cos(2*pi*5*k*0.01)+cos(2*pi*15*k*0.01)+cos(2*pi*30*k*0.01);
figure
stem(x)
X=fft(x);
figure
plot(abs(X))
FIR滤波器
k=0:
255;
x=cos(2*pi*5*k*0.01)+cos(2*pi*15*k*0.01)+cos(2*pi*30*k*0.01);
X=fft(x);
plot(abs(X));title('原始信号频谱');
Rs=0.01;
f=[0.05,0.11,0.15,0.4];
a=[0,1,0];
dev=Rs*ones(1,length(a));
[M,Wc,beta,ftype]=kaiserord(f,a,dev);
h=fir1(M,Wc,ftype,kaiser(M+1,beta));
omega=linspace(0,pi,256)
mag=freqz(h,[1],omega);
figure
plot(omega/pi,20*log10(abs(mag)));title('fir带通滤波器');
Y=X.*mag;
figure
plot(abs(Y));title('滤波后频谱');
%IIR
k=0:
255;
t=0:
.001:
2.55;
x0=cos(2*pi*5*k*0.01)+cos(2*pi*15*k*0.01)+cos(2*pi*30*k*0.01);
x=cos(2*pi*5*t)+cos(2*pi*15*t)+cos(2*pi*30*t);
figure
plot(x);axis([0,1000,-3,3])
title('原始信号时域波形');
X=fft(x0);
figure
plot(abs(X));
title('原始信号频谱');
[N,Wn]=buttord([0.11,0.15],[0.05,0.4],1,40)
[b,a]=butter(N,Wn);
x1=filter(b,a,x);
figure
plot(x1);axis([0,200,-0.5,0.5])
title('滤波后时域波形');
figure
freqz(b,a,256,1000)
m=freqz(b,a,256,1000);
title('iir带通滤波器');
%axis([0,500,-80,0]);
gridon
y=X.*m';
figureplot(abs(y));
title('滤波后频谱');
3、用所设计的滤波器对实际心电图信号采样序列(在本实验的实验步骤中给出)进行仿真滤波处理,并分别打印出滤波前后的心电图信号波形图,观察总结滤波作用与效果。
人体心电图信号在测量过程中往往受到工业高频于扰,所以必须经过低通滤波处理后,才能作为判断心脏功能的有用信息。
下面给出一实际心电图信号采样序列样本x(n),其中存在高频干扰。
提示:
心电信号通常均分布在200Hz范围内。
在实验中,以x(n)作为输入序列,滤除其中的干扰成分。
{x(n)}={-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}
思考题
直接运行程序,结果输出滤波器幅频特性曲线图,把有噪声的心电图采集信号波形图和经过三级二阶滤波器滤波后的心电图信号波形图进行对比,总结滤波效果。
x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,...
0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,...
4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0];
figure
stem(x);
title('原心电图的时域序列')
Fs=1000;%采样频率
T=1/10;%采样长度
N=T*Fs;%采样点数
f=(-N/2)*Fs/N:
Fs/N:
((N/2-1))*Fs/N;
fx=fftshift(fft(x,N))/N;
figure
plot(f,abs(fx));
title('原心电图的频谱')
xlabel('频率')
ylabel('函数值fx')
[N,Wc]=buttord(150/500,250/500,3,60);
[b,a]=butter(N,Wc);
figure
freqz(b,a,256,1000)
fori=1:
3
y=filter(b,a,x);
end
figure
plot(f,abs(fftshift(fft(y,512))));
Wp=[4555]/500;Ws=[45-555+5]/500;
Rp=3;Rs=40;
[M,Wn]=buttord(Wp,Ws,Rp,Rs)
[p,q]=butter(M,Rp,Wn,'stop');
figure
freqz(p,q,256,1000)
z=filter(p,q,y);
figure
stem(z)
figure
plot(f,abs(fftshift(fft(z,512))));
低通滤波器频谱
通过低通滤波器的心电图频谱
带阻滤波器频谱
最终结果
4、思考题
1.利用频率选择滤波器(FIR滤波器、IIR滤波器)进行信号去噪的基本思想及主要步骤是什么?
答:
主要思想:
利用频率选择滤波器的传输选择特性,对输入信号进行加工和变换,改变输入序列的频谱或信号波形,使需要的频率分量通过,抑制无用的信号分量。
主要步骤:
(1)根据输入信号的频谱特性及设计目标要求确定需要使用的滤波器类型:
包括低通、高通、带通等;
(2)由需要的相位特性及幅度特性确定滤波器的设计方法:
包括fir(巴特沃斯、切比雪夫)、iir(巴特沃斯、切比雪夫);(3)根据目标设计要求确定滤波器参数,需要的参数根据滤波器的设计方法确定,主要参数包括:
滤波器的阶次,频率要求、幅度响应要求;(4)利用设计好的滤波器对实际信号进行处理,检验是否满足设计要求,调整并优化。
2.如何根据含有噪声信号的频谱特性选择滤波器的类型和设计指标?
答:
根据采集到的信号获得频谱图,由时域频域的对应关系,确定需要滤除噪声的特性,然后从以下角度确定所需要的滤波器:
(1)频响特性角度:
IIR滤波器设计时不考虑相位特性,且通常相位都是非线性的,而FIR滤波器在满足幅频特性要求的同时,还能获得比较严格的线性相位特性,利用窗函数或者其他算法可以逼近更加任意的频响特性,因此性能优越,使用范围更广;
(2)稳定性问题:
IIR滤波器设计时,极点必须在单位圆之内;而FIR滤波器极点在单位圆内,因此始终稳定;(3)滤波器结构的影响:
IIR滤波器一般采用递归结构,存在有输出对输入的反,而IIR滤波器阶次相对较低,运算次数少,存储单元少,FIR滤波器正好相反;(4)设计工作量:
FIR无表可查,需要用到迭代法,计算量较大;而IIR滤波器相对简单,有现成的计公式和数据表格可用。