系统响应及系统稳定性-MATLAB学习

一、离散时间系统的响应
离散时间LTI系统可用线性常系数差分方程来描述,即:
其中,$a_i(i=0,1,2,…,N)$和$b_i(i=0,1,2,…,M)$为实常数。
MATLAB中函数filter可对差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的语句格式为:y=filter(b,a,x),其中,x为输入的离散序列:y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程左端与右端的系数向量。下面的示例,使用MATLAB命令绘制出当激励信号为$x(n)=(1/2)^nu(n)$时,系统$3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1)$的零状态响应。
1 | % 离散系统系统零状态响应 |
二、离散时间系统的单位取样响应
系统的单位取样响应定义为系统在$\delta{n}$激励下系统的零状态响应,用$h(n)$表示。MATLAB求解单位取样响应可利用函数filter,并将激励设置为单位抽样序列。下面的示例演示了如何求解上述系统的单位取样响应:
1 | % 离散系统的单位取样响应 |
MATLAB另一种求单位取样响应的方法是利用控制系统工具箱提供的函数impz
来实现。impz函数的常用语句格式为:impz(b,a,N),其中,参数N通常为正整数,代表计算单位采样响应的样值个数。下面的示例演示了如何使用impz函数绘制出系统$3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1)$的单位取样响应。
1 | % impz函数求解离散系统单位采样响应 |
三、离散时间信号的卷积和运算
由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此卷积运算在离散时间信号处理领域被广泛应用。离散时间信号的卷积定义为 :
可见,离散时间信号的卷积运算是求和运算,因而常被成为卷积和
。
MATLAB求离散时间信号卷积和的命令为conv
,其语句格式为:$y=conv(x,h)$,其中,x和h表示离散时间信号值的向量,y为卷积结果。用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时有限信号的卷积。下面的示例演示了如何利用MATLAB的conv
命令求两个长为4的矩形序列的卷积和,即$g(n)=[u(n)-u(n-4)]^{*}[u(n)-u(n-4)]$,其结果应该是长为7(4+4-1=7)的三角序列。用向量$[1 1 1 1]$表示矩形序列:
1 | % 离散时间信号的卷积 |
对于给定函数的卷积和,我们应计算卷积结果的起始点及其长度。两个时限序列的卷积和长度等于两个序列长度的和减 1。
例如:已知某系统的单位取样响应为$h(t)=0.8^{n}[u(n)-u(n-8)]$,试用MATLAB求当激励信号为$x(n)=u(n)-u(n-4)$时,系统的零状态响应。
解:MATLAB 中可通过卷积求解零状态响应,即$x(n)*h(n)$。由题意可知,描述$h(n)$向量的长度至少为8,描述x(n)向量的长度至少为4,因此为了美观,将$h(n)$向量和$x(n)$向量加上一些附加的零值。
1 | nx = -1:5; % x(n)向量显示范围(添加了附加的零值) |