安徽大学
本科生课程结业考试
课程名称:信号与系统
开课单位:电子信息工程学院
学生姓名:***
学生学号:P********
学生专业:物联网工程
开课时间:二○一六至二○一七学年第二学期
MATLAB实现连续系统的时域分析
摘要:信号与系统课程分析的基本任务是在给定系统的输入的条件下,求解系统的输入响应。
连续信号与系统的时域分析都在连续时间内进行,即所涉及的给类函数,均以连续时间t作为自变量的一种分析方法。
生学习时也会觉得该课程抽象、复杂。
MATLAB软件可以将抽象复杂的问题进行编程计算和仿真,并可以进行信号处理、图像处理、信号检测等功能。
因此在学习的过程中利用MATLAB 处理《信号与系统》中的问题可以使复杂、抽象的问题形象化,在提高解题速度的同时还可以使学生将不同学科知识融合在一起,从而提高学生学习兴趣。
本文通过利用matlab强大的计算与绘图能力实现信号与系统在时域分析中的一些实例:连续系统冲激响应的求解,连续系统零状态响应的求解和离散卷积和的计算来帮助自己更好的理解频域分析这一章节的内容。
关键字:时域分析,冲激响应和零状态响应,离散卷积和,matlab
一、MALTAB简介
MATLAB软件是由MathWorks公司于1982年推出的一套高性能的数值计算和可视化数学软件。
今天,MATLAB己经成为相关专业大学生必须掌握的基本工具,在自动控制、数字信号处理、数字通信等领域发挥着强大的作用。
MATLAB的编程运算与人类进行科学计算的思路和表达方式完全一致,非常方便。
MATLAB进行数值计算的基本单位是复数数组,这使得MATLAB高度“向量化”,数组维数是自动按照规则确定的,使用时不需定义数组的维数。
还有矩阵函数和专门的库函数可供调用,在信号处理、系统建模与识别以及系统控制与优化等领域,其简捷高效性是其它语言不能比拟的。
二、连续系统冲激响应的求解
在时域中,可以用微分方程来表示连续时间LTI系统。
通过求微分方程求解系统响应过程中,对零状态响应的求解很困难,容易出现错误。
本文将《信号与系统》中的冲激响应利用MATLAB求解。
LTI连续系统可用线性常系数微分方程来描述:
∑a i n
i=1y(i)(t)=∑b j
m
j=1
f(j)(t)
impulse(b,a)用于绘制a 和b 定义的LTI 系统的冲激响应,step (b,a )用于绘制向量a 和b 定义的LTI 系统的阶跃响应。
其中,a 和b 表示系统方程中a i 、b i 组成的向量。
例1 求以下系统的冲激系统和阶跃响应:
7y ′′(t )+4y ′(t )+6y (t )=f ′(t)+f(t)
解 程序如下:
a=[7 4 6];b=[1 1];
subplot(2,1,1);impulse(b,a)
subplot(2,1,2)
step(b,a)
结果如图所示:
三、 连续系统零状态响应的求解
LTI 连续系统以常系数微分方程描述,系统的零状态响应可通过求解初始状态为零的微分方程得到。
在MATLAB 中,控制系统工具箱提供了一个用于求解初始条件微分方程数值解的函数lsim ,其调用格式为 y=lsim (sys ,f ,t )式中,t 表示系统响应的抽0510152025
-0.10
0.10.2
0.3
Impulse Response
Time (seconds)
A m p l i t u d e
00.1
0.20.30.4
Step Response
Time (seconds)A m p l i t u d e
样点向量;f是系统输入信号向量;sys是LTI系统模型,用来表示微分方程、差分方程。
状态方程。
在求解微分方程时,微分方程的LTI系统模型sys要借助tf函数获得,其调用方式为 sys=tf(b,a)式中,b和a分别为微分方程右端和左端各项的系数向量。
可用a=[a3,a2,a1,a0];b=[b3,b2,b1,b0];sys=tf(b,a)获得LTI 模型。
微分方程中系数为零也要写入向量a和b中。
例 2 系统的微分方程为d2y(t)
dt2
+2dy(t)
dt
+77y(t)=f(t)
求系统在输入为f(t)=10sin2πt时的零状态响应。
解 MATLAB程序如下:
ts=0;te=5;dt=0.01;
sys=tf([1],[1 2 77]);
t=ts:dt:te;f=10*sin(2*pi*t);
y=lism(sys,f,t);y=lsim(sys,f,t);
polt(t,y);plot(t,y);
xlabel(‘time(sec)‘)
ylabel(‘y(t)‘)
运行结果如图所示。
四、 离散系统单位脉冲的求解
在MATLAB 中,求解离散系统单位脉冲,可用信号处理工具箱提供的函数 Impz ,其调用方式为h=impz(b,a,k)其中,b=[b0,b1,b2,···,bn], a=[a0,a1,a2,···,an]的分别是差分方程左右系数向量,k 表示输出序列的取值范围,h 就是系统的单位脉冲响应。
例3 求离散系统y[k]+3y[k-1]+2y[k-2]=f[k]
的单位脉冲响应h[k],并与理论值h[k]=-(−1)k +2(−2)k ,k ≥0比较。
解 MATLAB 程序如下:
k=0:10;
a=[1 3 2];b=[1];
h=impz(b,a,k);subplot(2,1,1)
stem(k,h,'.')
hk=-(-1).^k+2*(-2).^k;
subplot(2,1,2)stem(k,hk,'.')
00.51 1.52 2.53 3.54 4.55
-0.3-0.2
-0.1
0.1
0.2
0.3
0.4
程序运行结果如图所示:
012345678910
012345678910
五、离散卷积和的计算
卷积和是用来计算离散系统零状态响应的有力工具。
MATLAB信号处理工具箱提供了一个计算两个离散序列卷积和的函数conv,其调用方式为
C=conv(a,b)
式中,a、b为待卷积和运算的两序列的向量表示,c为卷积结果。
向量c的长度为向量a、b长度之和减1,即length(a)+length(b)-1。
例4 已知序列
x[k]={1,2,3,4;k=0,1,2,3},
y[k]={1,1,1,1,1;k=0,1,2,3,4}
计算x[k] *y[k],并画出卷积和结果。
解 MALTAB 程序如下:
x=[1,2,3,4];y=[1,1,1,1,1];
z=conv(x,y);N=length(z);
stem(0:N-1,z,'.');
程序运行结果为
Z=1 3 6 10 10 9 7 4
波形图如图所示:
01234567
六、在卷积和方面的总结
卷积运算过程的繁琐与难解,而且作卷积积分运算时,需要正确确定不同情况下的积分限,这是关键,也是难点。
卷积积分的计算对初学者来说是一项比较困难的工作。
借助MATLAB的内部函数conv()可以很方便地完成两个信号的卷积积分运算。
卷积积分的语法为:y = conv ( x,h),其中x和h分别是两个参与卷积运算的信号,y为卷积的结果。
下面给出两个连续时间信号x(t)= u(t)- u(t-1)和h(t) =t[u(t)-u(t-1)]的卷积运算程序,计算机绘制的波形图。
由图形可清楚地看到参与卷积运算的两个信号与卷积结果的关系,特别是时限信号的起止时刻。
MATLAB软件的绘图功能在此显示了极大的优越性,能够将这一复杂问题的解决过程形象化地展示给学生,也激发了学生的兴趣。
通过修改程序,可实现不同函数形式的信号的卷积运算,传统教学方法无法做到这样快捷与清晰。
七、结语
Matlab软件的诞生,在信号与系统的应用当中是至关重要的。
作为现代比较流行的一种高科技应用软件,特别是在数据的计算、信息的处理、图像的绘制尤为的优点突出在其深入浅出地分析各种信号特性和各种参数特性的同时,利用相对应的公式进行精确的求解,并在最后通过绘制图形表现出来,将信号与系统中系统分析、信号处理等多种概念性的理沦可视化,直观化通过这样的层面,舍得计算和分析信号与系统更加高效、便捷。
参考文献:
[1] 陈生潭.信号与系统.西安:西安电子科技出版社.2013.
[2] 乔建良.MATLAB在《信号与系统》课程教学中的应用.。