实验一 离散时间系统的时域特性分析
一、实验目的
线性时不变(Linear Time Invariant,LTI)离散时间系统在时域中可以通过常系数线性差分方程来描述,脉冲响应序列可以刻画其时域特性。本实验通过使用MATLAB函数研究离散时间系统的时域特性,以加深对离散时间系统的差分方程、脉冲响应和系统的线性和时不变特性的理解。
二、基本原理
一个离散时间系统是将输入序列变换成输出序列的一种运算。若以T{·}表示这种运算,则一个离散时间系统可由图1-1来表示,即
图1.1 离散时间系统
y[k]?T{x[k]}
离散时间系统中最重要、最常用的是“线性时不变系统”
1.线性系统
满足叠加原理的系统称线性系统。即若某一输入是由N个信号的加权和组成的。则输入就是系统对这几个信号中每一个输入的响应的加权和。
如果系统在x1[k]和x2[k]输入时的输出分别为y1[k]及y2[k],即
y1[k]=T{x1[k]},y2[k]=T{x2(k)}
那么当且仅当式(1-2)和(1-3)成立时,该系统是线性的。
T{x1[k]+ x2[k]}=T{x1[k]}+T{x2[k]}= y1[k]+y2[k] (1-2) 和
T{ax[k]}=aT{[k]}=ay[k] (1-3)
式中:a、b是任意常数。上述第一个性质称为可加性,第二个性质称为齐次性或比例性。这两个性质合在一起就成为叠加原理,写成
T{ax1[k]+b x2[k]}=aT{x1[k]}+bT{x2[k]}= ay1[k]+by2[k] (1-4)
式中(1-4)对任意常数a和b都成立 在证明一个系统是线性系统时,必须证明此系统满足可加性和比例性,而且信号以及任何比例常数都可以是复数。
2.时不变系统
系统的运算关系T{?}在整个运算过程中不随时间的变化(也即不随序列的起点)而变化,这种系统称为时不变系统(或称移不变系统)。这个性质可用以下关系表达:若输入x[k]的输出为y[k],则将输入序列移动任意位后,其输出序列除了跟着移位外,数值以内
应该保持不变,即:
T{x[k]}= y[k]
则: T{x[k-n]}= y[k-n] (m为任意整数)
满足以上关系的系统就称为时不变系统。
3.常系数线性差分方程
线性时不变离散系统的输入、输出关系可用以下常系数线性差分方程描述:
NMy[k]???aiy[k?i]??bjx[k?j] (1-5)
i?1j?0当输入x[k]为单位脉冲序列时,输出y[k]即为系统的单位脉冲响应h[k]。当
a?0,
ik=1,2……,N时,h[k]是有限长度的,称系统为有限长单位脉冲响应(Finite Impulse Response,FIR)系统;反之,则称系统为无限长单位脉冲响应(Infinte Impulse Response ,IIR)系统。
三、实验内容及要求
考虑如下差分方程描述的两个离散时间系统: 系统1:y[k]=0.5x[k]+0.27 x[k-1]+0.77 x[k-2]
系统2:y[k]=0.45 x[k] + 0.5x x[k-1]+0.45 x[k-2]+0.53 y[k-1]-0.46 y[k-2]
?k/256] 0≤k≤299 输入 x[k]?cos[20?k/256]?cos[200(1)编程求上述两个系统的输出,并分别画出系统的输入与输出波形。
(2)编程求上述两个系统的脉冲响应序列,并画出其波形。
(3)若系统的初始状态为零,判断系统2是否为时不变的?是否为线性的? (1) 解:MATLAB程序如下: n=0:299; clf;
n=0:299;
x1=cos(20/256*pi*n); x2=cos(200/256*pi*n); x=x1+x2;
num1=[0.5 0.27 0.77]; num2=[0.45 0.5 0.45]; den1=[1 0 0];
den2=[1 -0.53 0.46]; y1=filter(num1,den1,x1); y2=filter(num1,den1,x2); y=filter(num1,den1,x); yt=y1+y2;
y3=filter(num2,den2,x1); y4=filter(num2,den2,x2); yn=filter(num2,den2,x);
ytt=y3+y4; subplot(4,1,1); stem(n,x);
ylabel('信号幅度'); title('输入信号'); subplot(4,1,2); stem(n,yt);
ylabel('信号幅度'); title('输出信号'); subplot(4,1,3); stem(n,ytt);
ylabel('信号幅度'); title('输出信号');
输入信号信号幅度20-250-520-2050100150200250300
050100150输出信号200250300信号幅度050100150输出信号200250300(2)解:MATLAB程序如下:
N=300;
num1=[0.5 0.27 0.77]; num2=[0.45 0.5 0.45]; den1=[1 0 0];
den2=[1 -0.53 0.46]; y1=impz(num1,den1,N); subplot(2,1,1); stem(y1); xlabel('时间序列'); ylabel('信号幅度'); title('输入信号');
y1=impz(num1,den1,N); y2=impz(num2,den2,N);
信号幅度subplot(2,1,2); stem(y2); xlabel('时间序列'); ylabel('信号幅度'); title('输入信号');
输入信号0.80.70.6信号幅度0.50.40.30.20.10050100150时间序列200250300输入信号10.80.6信号幅度0.40.20-0.2-0.4050100150时间序列200250300
ⅰ 解:MATLAB程序如下: n=0:40; D=5;
x=cos(20*pi*n/256)+cos(200*pi*n/256);
xd=[zeros(1,D) x]; %生成新序列xd=x(n-D),延时D个单位 num=[0.45 0.5 0.45]; den=[1 -0.53 0.46]; ic=[0 0];
y=filter(num,den,x,ic); yd=filter(num,den,xd,ic); N=length(y);
d=y-yd(1+D:N+D);%求y与yd的差值 subplot(3,1,1) ; stem(n,y) ;
ylabel('信号幅度') ; title('输出y[n]') ; grid ; subplot(3,1,2) ;
stem(yd(1:length(yd))) ; ylabel('信号幅度') ; subplot(3,1,3) ; stem(n,d) ; xlabel( '时间序号n') ; ylabel('信号幅度') ; title('差值信号') ; grid;
输出y[n]21信号幅度0-1-2051015202530354021信号幅度0-1-20510152025差值信号303540455010.5信号幅度0-0.5-105101520时间序号n25303540
从上面图形中第三个图形可以知道差值信号为0,所以可以判断系统2是是不变系统。 ⅱ解:MATLAB程序如下: n=0 :40
x1=cos(20*pi*n/256); x2=cos(200*pi*n/256); x=x1+x2;
num=[0.45 0.5 0.45]; den=[1 -0.53 0.46];
y1=filter(num,den,x1); %计算出y1(n) y2=filter(num,den,x2); %计算出y2(n) y=filter(num,den,x); %计算出y(n) yt=y1+y2; %y(n)=y1(n)+y2(n) subplot(2,1,1) stem(n,y)
ylabel('信号幅度') ; subplot(2,1,2) stem(n,yt) ylabel('信号幅度')
21.51信号幅度0.50-0.5-1-1.5-2051015202530354021.51信号幅度0.50-0.5-1-1.5-20510152025303540
从上面两个图形对比得出,上面两个图形是完全相同的,可以说明系统2是线性的。