资源描述:
《哈工大试验方法和数字信号分析处理作业一》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、专业技术资料分享题目:(1)给定数字信号:x(t)=sin(20*pi*t)+sin(100*pi*t)+sin(400*pi*t);即该信号由10HZ,50HZ,200HZ。三个正弦信号合成。要求:绘出上述给定数字信号的曲线x(t)。低通滤波练习:分别用FIR、IIR滤波器滤去50Hz、200Hz信号,保留10Hz信号;绘出滤波前和滤波后的信号曲线,并做对比;滤波过程中的问题讨论。带通滤波练习:用FIR滤波器滤去10Hz、200Hz信号,保留50Hz信号;绘出滤波前和滤波后的信号曲线,并做对比;滤
2、波过程中的问题讨论。(2)给定数字信号:X(t)=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t)+0.6*randn(1,N)即在原信号上叠加上一个白噪声信号。要求:绘出上述给定数字信号的曲线x(t)。分别用低通滤波器和带通滤波器(FIR、IIR任选)滤波、绘曲线对比、讨论。注:本次作业要求使用我们课上(§3-3、§3-4)所推导的滤波器(公式)滤波;不许使用MATLAB中的滤波函数。1.数字信号为:x(t)=sin(20*pi*t)+sin(100*pi
3、*t)+sin(400*pi*t);时因为,最大频率为200HZ,故由采样定理dt<=1/2*fmax,可得dt<=0.0025s,取dt=0.0003s,满足采样定理。(1)绘出x(t)图像:Matlab代码:clearallt=0:0.0005:0.6;t1=0.0005;F=15;N=1201;x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);x1=sin(2*pi*10*t);plot(t,x,'b');图形如下:图1原始信号图像WORD文档下载
4、可编辑专业技术资料分享(2)低通滤波练习:1.FIR滤波器:Matlab代码:clearallt=0:0.0005:0.6;t1=0.0005;F=15;x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);x1=sin(2*pi*10*t);y(1201)=0;fork=50:1100fori=-20:20ifi==0fi=2*F*t1;elsefi=sin(2*pi*F*i*t1)/pi/i;endy(k)=y(k)+fi*x(k-i);endendpl
5、ot(t,x1,'k',t,x,'b',t,y,'r');图像如下:图2FIR低通滤波信号图像图3FIR低通滤波信号图像i=-30:30,k=70:1100时分析讨论:WORD文档下载可编辑专业技术资料分享由图可以看出,原始图像有正弦信号叠加后十分混乱,滤波后基本滤出了10HZ的信号,设计滤波器时,通过改变N1和N2以及采样的数量来生成不同的滤波后图像,最终选择了如上代码中的数值。2.IIR滤波器:Matlab代码:clearallt=0:0.0005:0.6;x=sin(2*pi*10*t)+si
6、n(2*pi*50*t)+sin(2*pi*200*t);x1=sin(2*pi*10*t);w=tan(pi*30*0.0005);%求二阶滤波器系数f0=(w*w)/(1+(2^0.5)*w+w*w);f1=2*f0;f2=(w*w)/(1+(2^0.5)*w+w*w);g1=(-2*(1-w*w))/(1+(2^0.5)*w+w*w);g2=(1-(2^0.5)*w+w*w)/(1+(2^0.5)*w+w*w);y(1201)=0;fori=1:3%用二阶滤波器滤波三次fork=3:1200y
7、(k)=f0*x(k)+f1*x(k-1)+f2*x(k-2)-g1*y(k-1)-g2*y(k-2);endx=y;endy=x;x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);plot(t,x1,'k',t,x,'b',t,y,'r');图像如下:图4IIR低通滤波信号图像,阶数=8时WORD文档下载可编辑专业技术资料分享图5IIR低通滤波信号图像,阶数=4时图6IIR低通滤波信号图像,阶数=2时分析讨论:阶数在2阶时严重失真,阶数在4阶时稍有好转
8、,而阶数等于8时,滤波效果较好,但有些滞后,所以考虑滤波阶数不能太高或太低。(2)带通滤波练习:使用FIR滤波器滤波:Matlab代码:clearallt=0:0.0005:0.6;t1=0.0005;dF=(50-10)/2;F0=(10+50)/2;x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);x1=sin(2*pi*10*t);y(1201)=0;fork=50:1100fori=-20:20ifi==0fi=4