实验目的
线性时不变离散时间系统在时域中可以通过常系数线性差分方程来表示,冲激响应序列可以可以刻画他的时域特征。本实验通过使用Matlab函数来研究离散时间系统的差分方程,冲激响应和系统的线性时不变的理解。
实验问题与做法
第一问步骤:
Step1:将n每个一个单位取一次,范围为0-299。同时给出x(n)的离散表达式的值。
Step2:运用filter函数求得y(n)输出表达式,由于Matlab求得的为数值解,所以采用subplot和stem画图得到输入和输出的波形。
第二问步骤:
Step1:采用impz函数获得两个系统的冲激响应序列,同样为数值解。
Step2:采用subplot和stem画图得到冲击响应序列的波形。
第三问步骤:
线性判断:
Step1:随机生成两个输入x1(n)和x2(n)。
Stpe2:随机取常数a,b为x1(n)和x2(n)前的系数。
Stpe3:取输入信号x3(n)=a*x1(n)+b*x2(n)。
Stpe4:依照第一问的方法求得y1(n),y2(n)和y3(n)。
Stpe5:判断y3(n)是否等于a*y1(n)+b*y2(n),如相等,验证了线性关系。反之,为非线性。
时不变性判断:
Step1:随机生成两个输入x1(n)和x2(n),设置时延值D=10。
Step2:取输入信号x3(n)=a*x1(n)+b*x2(n)。
Step3:将x3(n)延迟时延D个单位,记为xd(n)。
Step4:依据问题一的filter函数生成y3(n),yd(n)。
Step5:判断y3(n+D)-yd(n)是否全部为0,如果全部为0,说明为时不变系统。否则,为时变系统。
实现代码
第一问代码与结果
1.clear,clc
2.%第一问:
3.n=0:299;
4.x=cos(20*pi*n/256)+cos(200*pi*n/256);
5.%y1输出构建
6.num1=[0.5,0.27,0.77];
7.den1=1;
8.%y2输出构建
9.num2=[0.45,0.5,0.45];
10.den2=[1,-0.53,0.46];
11.
12.y1=filter(num1,den1,x);
13.y2=filter(num2,den2,x);
14.
15.subplot(3,1,1)
16.stem(n,y1)
17.xlabel('时间序列n')
18.ylabel('信号幅度')
19.title('y1')
20.subplot(3,1,2)
21.stem(n,y2)
22.xlabel('时间序列n')
23.ylabel('信号幅度')
24.title('y2')
25.subplot(3,1,3)
26.stem(n,x)
27.xlabel('时间序列n')
28.ylabel('信号幅度')
29.title('y3')
第二问代码与结果
1.y3=impz(num1,den1,n);
2.y4=impz(num2,den2,n);
3.subplot(2,1,1)
4.stem(n,y3)
5.xlabel('时间序列n')
6.ylabel('信号幅度')
7.title('h1')
8.subplot(2,1,2)
9.stem(n,y4)
10.xlabel('时间序列n')
11.ylabel('信号幅度')
12.title('h2')
13.grid on
第三问代码与结果
1.%验证线性关系
2.%假设x1,x2
3.a=3;
4.b=2;
5.x1=cos(2*pi*0.1*n);
6.x2=cos(2*pi*0.4*n);
7.x3=a*x1+b*x2;
8.y11=filter(num2,den2,x1);
9.y12=filter(num2,den2,x2);
10.y13=filter(num2,den2,x3);
11.y13_compare=a*y11+b*y12;
12.
13.% subplot(2,1,1)
14.% stem(n,y13)
15.% subplot(2,1,2)
16.% stem(n,y13_compare)
17.% grid on
18.
19.%验证时不变关系是否成立
20.D=10; %右移十个单位
21.xd=[zeros(1,D) x3];
22.ic=[0 0];
23.yy1=filter(num2,den2,x3);
24.yy2=filter(num2,den2,xd);
25.d=yy1-yy2(1+D:length(yy1)+D);
26.stem(n,d)
27.xlabel('时间序列n')
28.ylabel('信号幅度')
29.title('d(时不变系统判断)')
30.if(all(d)==0)
31. disp('为时不变系统')
32.end