用差分方程描述系统时,在没有任何其他初始状态或边界条件的情况下,同一个差分方程对同一个输入信号的响应不同。当初始状态或边界条件的改变时,系统的一些特性也会随之改变。例如,系统差分方程为 y ( n )- ay ( n -1)= x ( n ),当边界条件为 n <0, y ( n )=0时,该差分方程表示的是一个因果系统;当边界条件为 n >0, y ( n )=0时,该差分方程表示的是一个非因果系统;当边界条件为 y (-1)=0时,该差分方程表示的是一个线性时不变系统;当边界条件为 y (0)=0时,该差分方程表示的是一个线性时变系统;当边界条件为 y (0)=1时,该差分方程表示的是一个非线性时变系统。
例1—33 一系统用常系数线性差分方程 y ( n )= ay ( n -1)+ x ( n )描述,初始条件 y (-1)=0,试分析该系统是否是线性时不变系统。
解: 设给定两个输入信号 x 1 ( n )= δ ( n ), x 2 ( n )= δ ( n -1),令 x 3 ( n )= δ ( n )+ δ ( n -1),是 x 1 ( n )和 x 2 ( n )简单的线性组合,在初始条件 y (-1)=0的条件下,通过迭代法分别求出在三个输入 x 1 ( n )、 x 2 ( n )和 x 3 ( n )作用下系统的三个输出 y 1 ( n )、 y 2 ( n )和 y 3 ( n ),来检验系统是否是线性时不变系统。
(1) x 1 ( n )= δ ( n ), y 1 (-1)=0
y 1 ( n )= ay 1 ( n -1)+ δ ( n )
y 1 (0)= ay 1 (-1)+ δ (0)=1
y 1 (1)= ay 1 (0)+ δ (1)= a
y 1 (2)= ay 1 (1)+ δ (2)= a 2
…
y 1 ( n )= a n u ( n )
(2) x 2 ( n )= δ ( n -1), y 2 (-1)=0
y 2 ( n )= ay 2 ( n -1)+ δ ( n -1)
y 2 (0)= ay 2 (-1)+ δ (-1)=0
y 2 (1)= ay 2 (0)+ δ (0)=1
y 2 (2)= ay 2 (1)+ δ (1)= a
…
y 2 ( n )= a n -1 u ( n -1)
因为 x 1 ( n -1)= x 2 ( n ),是移一位的关系, y 1 ( n -1)= y 2 ( n ),输出也是移一位的关系,因此系统是时不变系统。
(3) x 3 ( n )= δ ( n )+ δ ( n -1), y 3 (-1)=0
y 3 ( n )= ay 3 ( n -1)+ δ ( n )+ δ ( n -1)
y 3 (0)= ay 3 (-1)+ δ (0)+ δ (-1)=1
y 3 (1)= ay 3 (0)+ δ (1)+ δ (0)=1+ a
y 3 (2)= ay 3 (1)+ δ (2)+ δ (1)= a + a 2
…
y 3 ( n )= a n u ( n )+ a n -1 u ( n -1)
因为 x 3 ( n )= x 1 ( n )+ x 2 ( n ),而 y 3 ( n )= y 1 ( n )+ y 2 ( n ),因此系统是线性系统。
由此可见,在初始条件 y (-1)=0的情况下,差分方程 y ( n )= ay ( n -1)+ x ( n )所表示的系统是一个线性时不变系统。在初始条件为 y (0)=0和 y (0)=1时,该差分方程所表示的就不是线性时不变系统,利用上述方法可以自行证明。
在MATLAB中,可以利用信号处理工具箱提供的filter函数求解在给定输入和差分方程系数时系统输出的数值解,其调用格式为
y=filter(b,a,x,zi) zi=filtic(b,a,yi,xi)
其中,b表示输入项的系数,即b=[ b 0 , b 1 ,…, b M ];a表示输出项的系数,即a=[ a 0 , a 1 ,…, a N ],其中 a 0 =1,若 a 0 ≠1,则需对系数向量b和a进行归一化处理。x为输入序列;zi为等效初始条件的输入向量,是与初始条件有关的向量,可以利用filtic函数获取,其中yi, xi表示实际初始条件,即yi=[ y (-1), y (-2), y (-3),…, y (- N )],xi=[ x (-1), x (-2), x (-3),…, x (- M )]。若xi为因果序列,则xi=0。
例1—34 描述一个离散系统的差分方程为
y ( n )-0.6 y ( n -1)-0.5 y ( n -2)+ y ( n -3)= x ( n )
试利用MATLAB程序实现系统单位冲激响应 h ( n )的求解。
解: MATLAB实现程序如下:
a=[1,-0.6,-0.5,1]; b=1; n=[-20:100]; x=[(n)==0]; h=filter(b,a,x); stem(n,h,'.k');
运行结果如图1—45所示。
例1—35 一个离散系统的差分方程为 y ( n +1)-0.6 y ( n )= x ( n ),系统输入信号 x ( n )=2 nu ( n ),初始条件 y (-1)=4,试利用MATLAB求解输出信号 y ( n ),0≤ n ≤50。
图1—45 例1—34的单位冲激响应
解: MATLAB实现程序如下:
n=[0:50]; x=2 * n. * (n > =1); a=[1,-0.6]; b=[0,1]; zi=filtic(b,a,4); y=filter(b,a,x,zi); stem(n,y,'.k');
运行结果如图1—46所示。
图1—46 例1—35的输出信号
例1—36 已知滑动平均系统的差分方程为 )。当 M 1 =0, M 2 =4时,系统为五项滑动平均系统,试求当输入信号 x ( n )=2 u ( n )+3 δ ( n -15)- δ ( n -19)+2 δ ( n -26)时五项滑动平均系统的输出。
解: 滑动平均系统是通过计算算术平均值实现对输入信号的平滑处理,相当于一个低通滤波器,用来保留低频分量,滤除高频分量。
五项滑动平均系统的差分方程可以写成
因此该系统的单位冲激响应为
如图1—47所示。则系统输出为
具体MATLAB实现程序如下:
n=[0:49]; x=2 * ones(1,50)+3 * [(n)==15]-[(n)==19]+2 * [(n)==26]; h=0.2 * ones(1,5);b=[0,1]; y=conv(x,h); subplot(1,2,1) stem(x); subplot(1,2,2) stem(y);
图1—47 五项滑动平均系统的单位冲激响应
运行结果如图1—48所示。
图1—48 例1—36的输入信号和输出信号