课 程 设 计 说 明 书
题 目: 基于MATLAB的信号分析与处理 课 程: 数字信号处理课程设计 院 (部): 专 业: 班 级: 学生姓名: 学 号: 指导教师: 完成日期: 信息与电气工程学院 通信工程 通信111班
2014年1月
目 录
摘 要 .................................................................... Ⅰ 1 设计目的和要求 ......................................................... 1 2 设计原理 ............................................................... 2 3 设计内容 ............................................................... 3
3.1 程序源代码 ........................................................ 4 3.2 调试分析与过程描述 ................................................ 7 3.3 结果分析 ......................................................... 12 总 结 ................................................................... 13 致 谢 ................................................................... 14 参考文献 ................................................................ 15
摘 要
这次是基于MATLAB的信号分析与处理。所谓数字滤波器,就是输入、输出都是数字信号的,通过数值计算处理改变输入信号所含频率成分的相对比例,或者滤除某些频率成分的数字器件或程序。常用的经典滤波器有低通、高通、带通、带阻。
首先产生一个连续信号,包含低频、中频、高频分量;对其进行采样,得到数字信号;对数字信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通、低通、带通滤波器,绘制滤波器的幅频及相频特性;用所设计的滤波器对信号滤波,并绘制出滤波后的频谱图。
关键词:MATLAB; FFT;滤波器;信号产生;频谱分析
1设计目的和要求
产生一个连续信号,包含低频,中频,高频分量,对其进行采样,进行频谱分析,分别设计三种高通,低通,带通滤波器对信号进行滤波处理,观察滤波后信号的频谱。
2设计原理
信号的采样要符合奈奎斯特采样定律,一般为被采信号最高频率的2倍,只有这样,才能保证频域不混叠,也就是采样出来数字信号中包含了被采信号的所有信息,而且没有引入干扰。这就是信号的时域采样。
频谱分析是指对信号进行频域谱的分析,观察其频域的各个分量的功率大小,其理论基础是傅立叶变换,现在一般采用数字的方法,也就是将时域信号数字化后做FFT,可以得到频域的波形。
数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。可以设计系统的频率响应,让它满足一定的要求,从而对通过该系统的信号的某些特定的频率成分进行过滤,这就是滤波器的基本原理。 IIR滤波器的设计原理:
IIR数字滤波器的设计一般是利用目前已经很成熟的模拟滤波器的设计方法来进行设计,通常采用模拟滤波器原型有butterworth函数、chebyshev函数、bessel函数、椭圆滤波器函数等。 IIR数字滤波器的设计步骤:
(1)按照一定规则把给定的滤波器技术指标转换为模拟低通滤波器的技术指标; (2)根据模拟滤波器技术指标设计为响应的模拟低通滤波器;
(3)很据脉冲响应不变法和双线性不变法把模拟滤波器转换为数字滤波器; (4)如果要设计的滤波器是高通、带通或带阻滤波器,则首先把它们的技术指标转化为模拟低通滤波器的技术指标,设计为数字低通滤波器,最后通过频率转换的方法来得到所要的滤波器。
本课程设计设计思想:首先利用MATLAB分别产生低频、中频、高频信号,然后进行叠加得到连续时间信号;对所产生的连续时间信号进行采样,得到数字信号;对信号进行FFT频谱分析,绘制其频谱图;根据信号频谱分析的结果,分别设计高通,低通,带通滤波器,得到滤波器的幅频及相频特性。
3 设计内容
3.1程序源代码
f1=40; f2=300; f3=2000;
t=(1:500)/8000;%每个周期采8000个点,Fs1=8000 x1=sin(2*pi*t*f1); figure(1); subplot(2,1,1); plot(x1); xlabel('t'); ylabel('x1(t)'); title('连续信号'); grid;
x2=sin(2*pi*t*f2); subplot(2,1,2); plot(x2); xlabel('t'); ylabel('x2(t)'); title('连续信号'); grid;
x3=sin(2*pi*t*f3); figure(2); subplot(2,1,1); plot(x3); xlabel('t'); ylabel('x3(t)'); title('连续信号'); grid;
subplot(2,1,2); %只放大显示x3(t)的0~50的部分 plot(x3);
axis([0 50 -1 1.2]); xlabel('t'); ylabel('x3(t)'); title('连续信号'); grid;
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); figure(3); subplot(2,1,1); plot(x); xlabel('t'); ylabel('x(t)'); title('连续信号');
grid; n=[1:500];
t=n/6000;%Fs2=6000,t=nT,T=1/Fs X=fft(x,512);
w=(0:255)/256*3000;%Fs/2=3000
x=sin(2*pi*t*f1)+sin(2*pi*t*f2)+sin(2*pi*t*f3); subplot(2,1,2); stem(x); xlabel('n'); ylabel('x(n)'); title('数字信号'); grid; figure(4);
subplot(2,1,1); %只放大显示x(n)的0~50的部分 stem(x); axis([0 50 -4 4]); xlabel('n'); ylabel('x(n)'); title('数字信号'); grid;
subplot(2,1,2); plot(w,abs([X(1:256)])); xlabel('Hz');
ylabel('频率响应幅度'); title('频谱图'); grid;
wp=0.0167;ws=0.033;Rp=2;As=30; [N,wc]=buttord(wp,ws,Rp,As); [B,A]=butter(N,wc); [H,w]=freqz(B,A,512); figure(5); subplot(2,1,1);
plot(w*6000/(2*pi),abs(H));
axis([0 100 0 1.2]);%横坐标显示为0~100,纵坐标为0~1.2 xlabel('Hz');
ylabel('频率响应幅度'); title('低通滤波器'); grid;
subplot(2,1,2); plot(w/(2*pi),angle(H)); xlabel('Hz'); ylabel('angle'); title('相位特性'); grid;
y=filter(B,A,x); figure(6);
subplot(2,1,1); plot(y);
axis([0 500 -1 1]); xlabel('t'); ylabel('x(t)'); title('连续信号'); grid; Y=fft(y,512); w=(0:255)/256*3000; subplot(2,1,2); plot(w,abs([Y(1:256)])); xlabel('Hz');
ylabel('频率响应幅度'); title('频谱图'); grid;
wp=[0.03,0.11];ws=[0.017,0.150];Rp=3;As=20; [N,wpo]=ellipord(wp,ws,Rp,As); [B,A]=ellip(N,Rp,As,wpo); [H,w]=freqz(B,A,512); figure(7); subplot(2,1,1);
plot(w*6000/(2*pi),abs(H)); xlabel('Hz');
ylabel('频率响应幅度'); title('带通滤波器'); grid;
subplot(2,1,2); plot(w/pi,angle(H)); xlabel('Hz'); ylabel('angle'); title('相位特性'); grid;
y=filter(B,A,x); figure(8); subplot(2,1,1); plot(y); xlabel('t'); ylabel('x(t)'); title('连续信号'); grid; Y=fft(y,512); w=(0:255)/256*3000; subplot(2,1,2); plot(w,abs([Y(1:256)])); xlabel('Hz');
ylabel('频率响应幅度');
title('频谱图'); grid;
wp=0.5;ws=0.43;Rp=3;As=30; [N,wc]=buttord(wp,ws,Rp,As); [B,A]=butter(N,wc,'high'); [H,w]=freqz(B,A,512); figure(9); subplot(2,1,1);
plot(w*6000/(2*pi),abs(H)); axis([0 3000 0 1.2]); xlabel('Hz');
ylabel('频率响应幅度'); title('高通滤波器'); grid;
subplot(2,1,2); plot(w/pi,angle(H)); xlabel('Hz'); ylabel('angle'); title('相位特性'); grid;
y=filter(B,A,x); figure(10); subplot(2,1,1); plot(y);
axis([0 200 -1 1]); xlabel('t'); ylabel('x(t)'); title('连续信号'); grid; Y=fft(y,512); w=(0:255)/256*3000; subplot(2,1,2); plot(w,abs([Y(1:256)])); xlabel('Hz');
ylabel('频率响应幅度'); title('频谱图'); grid;
3.2调试分析过程描述
f1=20Hz,x1(t)的时域图;f2=200,x2(t) 的时域图如下:
f3=2000,x3(t) 的时域图;放大显示x3(t)的0~50的部分时域图如下:
x(t)= x1(t)+x2(t)+ x3(t)(实际也为数字信号,采样频率为8000Hz) 的时域图;对x(t)进行Fs=6000Hz的采样得数字信号x(n) 的时域图如下:
放大显示x(n)的0~50的部分时域图;x(n)的幅频特性曲线如下:
wp=50/3000=0.0167,ws=200/3000=0.033,Rp=2,As=30,巴特沃斯低通滤波器的
幅频特性曲线和相频特性曲线如下:
x(n)经过低通滤波器后的时域和频谱图如下:
Wp1=100/3000=0.03,Wp2=330/3000=0.11,Ws1=50/3000=0.017,Ws2=450/3000=0.150,Rp=3,As=20,椭圆带通滤波器的幅频特性曲线和相频特性曲线如下:
x(n)经过带通滤波器后的时域和频谱图如下:
wp=1600/3000=0.533,ws=1200/3000=0.4,Rp=3,As=30,巴特沃斯高通滤波器的幅频特性曲线和相频特性曲线如下:
x(n)经过高通滤波器后的时域和频谱图如下:
3.3结果分析
由上图可见,经过低通滤波器后信号的低频成分被保留,中频和高频成分被有效滤除,同理高通滤波器低频,中频成分被有效滤除。经过滤波器之后的相应频率的波形与原波形基本上未出现大的失真,因此滤波器的滤除效果还是不错的;其中带通滤波器用的椭圆滤波器,通过比较效果比巴特沃斯好。
IIR滤波器 一定是递归结构、对频率分量的选择性好(零极点可同时起作用)、相同性能下阶次较低、运算误差大,有可能出现极限环振荡、设计有封闭形式的公式,一次完成、对计算手段的要求较低、相位。但一般是非线性的、系统不一定稳定、不能用FFT作快速卷积、有噪声反馈,噪声大。脉冲响应不变法具有较好的线性特性,但会产生频率混叠。
双线性变换法频率的非线性关系得到s平面与z平面的单值,固不会产生频率混叠,但其线性关系较差。
总 结
经过本次课程设计,我对MATLAB的使用能力有了很大的提高,了解了关于MATLAB
软件在数字信号处理方面的应用,又一次学习了MATLAB软件的使用和程序的设计,加深了对MATLAB的仿真的了解。MATLAB
语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,
MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是MATLAB还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理和设计。这使得我在以后的学习工作做了很好的铺垫,在这过程中我遇到了所多的难题,通过与老师的交流和学习,让我学会了很多在课堂上没有理解的难点。同时也进一步加深了对MATLAB的理解和认识。MATLAB软件使得困难、枯燥的数字处理过程变得非常简单,不仅能够非常迅速的计算出幅频相频、卷积、DFT、FFT等,而且还能自动画出连续、离散的波形曲线。使我们能非常直观的了解数字信号的处理结果
通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
致 谢
本次的课程设计是在魏莉老师的带领与指导下完成的,最后我很好的完成了任务,我学到了许多。同时还要感谢同学的帮助,我们一起查资料、调程序,一起收获成功的喜悦。
最后感谢老师这么长时间对我们数字信号处理的悉心教导,同时非常感谢老师在matlab方面对我的帮助与指导。
参考文献
[1]高西全、丁玉美编着.数字信号处理.西安:西安电子科技大学出版社,2008.
[2]丁玉美、高西全编着.数字信号处理学习指导.西安:西安电子科技大学出版社,2001. [3]郑君里等编.信号与系统.北京:高等教育出版社,2000.
[4]刘树棠译.数字信号处理——使用MATLAB.西安:西安交通大学出版社,2002. [5]罗军辉等编着.MATLAB7.0在数字信号处理中的应用.北京:机械工业出版社,2005. [6]陈怀琛等编着.MATLAB及在电子信息课中的应用.北京:电子工业出版社,2002. [7]胡广书编着.数字信号处理――理论、算法与实现.北京:清华大学出版社,2002. [8]刘卫国主编.MATLAB程序设计与应用(第二版).北京:高等教育出版社,2006.
因篇幅问题不能全部显示,请点此查看更多更全内容