离散系统的MATLAB实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计题目:离散系统的MATLAB实现
一、设计目的
通过该设计,加强学生的实际操作能力,培养学生的创新能力,加深对MATLAB在信号与系统方面的应用的理解,并达到熟练掌握各相关函数的使用方法的目的,更好地理解系统的单位抽样响应,频率响应及零极点增益的概念及意义。并且,进一步了解MATLAB广泛的应用。
二、设计内容及主要MATLAB函数
如图所示的一个离散系统
Z-10.2
x(n)y(n)
Z-10.1
0.4
0.5
该离散系统对应的输入输出差分方程为:
y(n)-0.4y(n-1)-0.5y(n-2)=0.2x(n)+0.1x(n-1)
求该系统的单位抽样响应,频率响应及零极点增益。
1.单位抽样响应
系统的单位抽样响应是当输入信号为单位抽样信号时系统的输出响应。
MATLAB中有两个函数可以计算系统的单位抽样响应:filter函数和impz函数。
1)filter函数
filter函数是利用递归滤波器或非递归滤波器对数据进行滤波。因为一个离散系统可以看做一个滤波器。系统的输出就是输入经过滤波器滤波的结果。filter函数的格式为:
y=filter(b,a,x)
此函数是对由a和b组成的系统对输入进行滤波,如果输入为单位抽样信号δ(n),那么输出就是系统的单位抽样响应。2)impz函数
impz函数的格式为:
impz(b,a)可直接给出系统的单位抽样响应。
2.频率响应H(e jw))
由向量a和b组成的系统的频率响应为:
M
∑b(r)e-jwr
r=0
H(e jw)=———————
N
1+∑a(k)e-jkw
k=1
MATLAB中的freqz函数使用基于FFT的算法来计算由向量a
和b组成的系统的频率响应。其一般用法为:
[h,f]=freqz(b,a,n,Fs)
其中向量a和b由离散系统决定,Fs为采样频率,在[0,Fs]频率范围内选取n个频率点,并记录在f中。由于freqz函数是采用基2的FFT算法,n常取2的幂次方,这样可以提高运算速度。
3.零极点增益
利用MATLAB中roots的函数可求得系统的零、极点,从而得到系统的零极点增益表示。其一般用法为:
zr=roots(b)
zp=roots(a)
三、源程序
b=[0.20.1];
a=[-0.4-0.5];
x=[1,zeros(1,60)];
y=filter(b,a,x)
stem(y)
fs=1000;
[h,f]=freqz(b,a,64,fs)
abs(h)
plot(f,abs(h))
p=angle(h)
ph=p*180/p
plot(f) roots(b) roots(a) zplane(b,a)四、仿真结果
单位抽样响应图:
系统的频率响应图:
零点图:
极点图:
五、设计总结
通过这次课程设计,我感觉受益匪浅。首先,通过自己亲自动手查阅资料、编程、调试,培养了我的实践能力和独立分析问题、解决问题的能力,进一步巩固和加深了对课程内容的理解和综合运用,为后续的专业课的课程设计、生产实践、毕业设计等环节奠定了良好的基础。
同时,也培养了我严谨的科学态度和创新精神。我感觉到了科研人员的不容易。他们必须有一丝不苟的严谨态度和坚持不懈的精神,才能做出成果。因为一个小小的错误就可能导致整个程序错误,一点的疏忽也可能导致失败。所以,在编程调试时一定要小心谨慎。
在编程调试的过程中,我也不可避免地遇到了很多的困难。比如,函数使用方法不正确,数据输入方式不正确等等。但在不断的修改与调试和老师的耐心辅导与帮助下,我成功的编好了程序,并且调试成功,做出了仿真结果。我感到了成功的喜悦与自豪,小小的成就感在心中油然而生。
在具体的上机实践中,我学到了很多基本的MATLAB应用知识,也了解了MATLAB在信号与系统中的一些应用,更好地理解了系统的单位抽样响应,频率响应及零极点增益的概念及意义。同时,我也更加熟练地掌握了各相关函数的使用方法,增强了MATLAB的实际应用知识。
总之,在这次课程设计中,我发现自己的实践能力得到了锻炼,理论与实际相联系的能力得到了提高,知识得到了很大增长,收获颇多。