武汉工程大学
信号分析与处理实验一
专业: 通信02班
学生姓名: 李瑶华
学号: 1304200113
完成时间:2022年4月27日
实验二: 离散时间系统的时域分析
一、实验目的
1.在时域中仿真离散时间系统,进而理解离散时间系统对输入信号或延迟信号进行简单运算处理,生成具有所需特性的输出信号的方法。
2.仿真并理解线性与非线性、时变与时不变等离散时间系统。
3.掌握线性时不变系统的冲激响应的计算,并用计算机仿真实现。
4.仿真并理解线性时不变系统的级联、验证线性时不变系统的稳定特性。
二、实验设备
计算机,MATLAB语言环境。
三、实验基础理论
1.系统的线性性质
线性性质表现为系统满足线性叠加原理:若某一输入是由N个信号的加权和组成的,则输出就是系统对这N个信号中每一个的响应的相应加权和组成的。设 和分别作为系统的输入序列,其输出分别用和表示,即
若满足
则该系统服从线性叠加原理,或者称该系统为线性系统。
2.系统的时不变特性
若系统的变换关系不随时间变化而变化,或者说系统的输出随输入的移位而相应移位但形状不变,则称该系统为时不变系统(或称为移不变系统)。对时不变系统,若,则
3.系统的因果性
系统的因果性即系统的可实现性。如果系统时刻的输出取决于时刻及时刻以前的输入,而和时刻以后的输入无关,则该系统是可实现的,是因果系统。系统具有因果性的充分必要条件为
4.系统的稳定性
稳定系统是指有界输入产生有界输出(BIBO)的系统。如果对于输入序列,存在一个不变的正有限值,对于所有值满足
则称该输入序列是有界的。稳定性要求对于每个有界输入存在一个不变的正有限值,对于所有值,输出序列满足
系统稳定的充分必要条件是系统的单位取样响应绝对可和,用公式表示
5.系统的冲激响应
设系统输入 ,系统输出 的初始状态为零,这时系统输出用 表示,即,则称 为系统的单位脉冲响应。
对于任意输入信号 ,系统输出为利用系统满足叠加原理得
利用系统时不变性质得到
上式的运算关系称为卷积运算。
6.卷积的性质
1)交换律
2)结合律
3)分配律
四、实验内容与步骤
1.离散时间系统的仿真
1)M点因果滑动平滑系统的仿真,时域表达为
通过上述时域平滑系统可实现由若干个正弦信号之和所组成的信号中滤出高频分量。据此,可以理解M点因果滑动平滑系统。
n=0:100;s1=sin(2*pi*0.34*n);s2=sin(2*pi*0.02*n);x=s1+s2;
M=input('desired length of the filter =');
num=ones(1,M);y=filter(num,1,x)/M;clf;
subplot(2,2,1);stem(n,s1);axis([0,100,-2,2]);
xlabel('n');ylabel('s1(n)');title('正弦序列1');
subplot(2,2,2);stem(n,s2);axis([0,100,-2,2]);
xlabel('n');ylabel('s2(n)');title('正弦序列2');
subplot(2,2,3);stem(n,x);axis([0,100,-2,2]);
xlabel('n');ylabel('x(n)');title('输入信号');
subplot(2,2,4);stem(n,y);axis([0,100,-2,2]);
xlabel('n');ylabel('y(n)');title('输出信号');
desired length of the filter =8
2)线性与非线性离散时间系统的仿真。
简单的非线性系统实例:
n=0:100;x=cos(2*pi*0.1*n);x1=[x 0 0];x2=[0 x 0];x3=[0 0 x];
y=x2.*x2-x1.*x3;y=y(1:101);
subplot(2,1,1);stem(n,x)xlabel('n');ylabel('x(n)');title('输入信号')
subplot(2,1,2);stem(n,y)xlabel('n');ylabel('y(n)');title('输出信号')
简单的线性系统实例:
n=0:50;p=3;q=-4;
x1=cos(2*pi*0.2*n);
x2=cos(2*pi*0.5*n);x=p*x1+q*x2;
b=[2.2403 2.4908 2.2403];a=[1 -0.4 0.75];
y1=filter(b,a,x1);
y2=filter(b,a,x2);y=filter(b,a,x);
yt=p*y1+q*y2;d=y-yt;
subplot(3,1,1)stem(n,y);
ylabel('y1(n)');
title('T[a1x1(n)+a2x2(n)]');
subplot(3,1,2)stem(n,yt);ylabel('y2(n)';
title('a1T[x1(n)]+a2T[x2(n)]');
subplot(3,1,3);stem(n,d);xlabel('n');ylabel('y1(n)-y2(n)');title('d');
3)时变与时不变系统的仿真。
时不变系统实例:
n=0:60;m=8;p=2;q=-5;
x=p*cos(2*pi*0.1*n)+q*cos(2*pi*0.4*n);
xd=[zeros(1,m) x];
b=[2.2403 2.4908 2.2403];
a=[1 -0.4 0.75];
y=filter(b,a,x);
yd=filter(b,a,xd);
d=y-yd(1+m:61+m);
subplot(3,1,1)stem(n,y);
ylabel('y(n)');
title('信号x(n)的响应y(n)');grid;
subplot(3,1,2);stem(n,yd(1:61));
ylabel('y(n-m)');
title('信号x(n-m)的响应y(n-m)');grid;
subplot(3,1,3);stem(n,d);
xlabel('n');ylabel('波幅');
title('y(n-m)-y(n-m)');grid;
时变系统实例:
n=[-10:10];
x1=sin(0.1*pi*n);
subplot(2,2,1);stem(n,x1);
xlabel('n');ylabel('x1');
x2=sin(0.1*pi*(n-1));
subplot(2,2,2);stem(n,x2);
xlabel('n');ylabel('x2');
y=n.*x1+x2;
subplot(2,2,3);stem(n,y)
xlabel('n');ylabel('y')
2.线性时不变系统仿真
1)冲激响应的计算
用MATLAB语言编程实现线性时不变系统的冲激响应计算。
线性时不变系统实例:
m=50;
x=[1 zeros(1,m-1)];
b=[2 3 2];
a=[1 -0.4 0.75];
K=0:1:m-1;
y=filter(b,a,x);stem(K,y);
title('冲激响应');
xlabel('n');ylabel('h(n)');
2) 在实际应用中高阶因果线性时不变系统可以用低阶因果线性时不变系统级联得到,这可简化系统的设计与实现。例如,对于三阶线性时不变系统
可以用一个一阶和一个二阶系统级联实现。
第一级
第二级
用MATLAB语言编程验证系统的级联。
x=[1 zeros(1,20)];n=0:20;
a=[8 -10 6 -1];b=[0 16 -40 16];y=filter(b,a,x);
a1=[1 -0.25];b1=[2 -1];a2=[1 -1 0.5];b2=[0 1 -2];
y1=filter(b1,a1,x);y2=filter(b2,a2,y1);d=y-y2;
subplot(3,1,1);stem(n,y);ylabel('y(n)');
title('信号通过高阶LTI系统的响应');grid;
subplot(3,1,2)stem(n,y2);ylabel('y2(n)');
title('信号通过低阶LTI系统级联的响应');grid;
subplot(3,1,3)stem(n,d);
xlabel('n');ylabel('波幅');title('y(n)-y2(n)');grid;
3.线性时不变系统的稳定性
若一个线性时不变系统的冲激响应是绝对可和,则此系统就是BIBO的稳定系统。由此,无限冲激响应线性时不变系统稳定的必要条件是,随着输入序列点的增加,冲激响应衰减到零。用MATLAB语言编程计算一个IIR线性时不变系统冲激响应的绝对值的和,验证稳定特性。
b=[0 1 2 1];
a=[1 -0.5 -0.005 0.3];
subplot(3,1,1);zplane(b,a);%由分子分母多项式的系数画出零-极点分布图
xlabel('Re');ylabel('jIm');
axis([-2 2 -1 1]);
h=impz(b,a);
subplot(3,1,2)stem(h);
title('单位脉冲响应');
xlabel('k');
[H,w]=freqz(b,a);
subplot(3,1,3)
plot(w/pi,abs(H));
xlabel('频率\\omega');
title('频率响应');
4.滤波概念实验
通过具体的时间系统理解信号滤波概念。如:
系统1
系统2
对于输入信号
实现各系统的滤波输出结果。
b1=[0.5 0.27 0.77];a1=[1];
b2=[0.45 0.5 0.45];a2=[1 -0.53 0.46];
n=0:99;
xn=cos((20*pi*n)/256)+cos((200*pi*n)/256);
hn1=filter(b1,a1,xn);hn2=filter(b2,a2,xn);
n1=0:length(hn1)-1;n2=0:length(hn2)-1;
figure;subplot(2,1,1);stem(n1,hn1);
xlabel('n');ylabel('x(n)');title('输入信号');grid;
subplot(2,1,2);stem(n1,hn1);xlabel('n');ylabel('h1(n)');
title('系统1的冲激响应');grid;
figure;subplot(2,1,1)stem(n1,hn1);
xlabel('n');ylabel('x(n)');title('输入信号');grid;
subplot(2,1,2)stem(n2,hn2);xlabel('n');ylabel('h2(n)');
title('系统2的冲激响应');grid;
五、实验扩展与思考
1. 线性与非线性系统在信号输入/输出上有何不同?时变与时不变系统又有何不同呢?
答:由线性系统与非线性系统的仿真图可知,线性系统的输入信号与输出信号满足齐次性和可加性,而非线性系统的的输入与输出不满足齐次性和可加性。
2. 冲激响应的计算实验中,就此系统计算它的阶跃响应,并与冲激响应比较,理解他们之间的关系。
Matlab产生阶跃响应的程序
m=50;x=[1 ones(1,m-1)];
b=[2 3 2];a=[1 -0.4 0.75];
K=0:1:m-1;y=filter(b,a,x);
stem(K,y);title('阶跃响应');xlabel('n');ylabel('y(n)');
冲激响应求和就是阶跃响应
3. 系统级联实验中,三阶线性时不变系统若改用并联实现,又该如何进行?
Matlab实现系统并联的程序
x=[1 zeros(1,20)];n=0:20;
a=[8 -10 6 -1];b=[0 16 -40 16];y=filter(b,a,x);
a1=[1 -0.25];b1=[11.2];a2=[1 -1 0.5];b2=[4.8 -5.6];y1=filter(b1,a1,x);
y2=filter(b2,a2,x);yt=-16*x+y1+y2;d=y-yt;
subplot(3,1,1);stem(n,y);ylabel('y(n)');
title('信号通过高阶LTI系统的响应');grid;
subplot(3,1,2)stem(n,yt);ylabel('yt(n)');
title('信号通过低阶LTI系统并联的响应');grid;
subplot(3,1,3)stem(n,d);xlabel('n');ylabel('波幅');
title('y(n)-yt(n)');grid;
4. 滤波概念实验中,两个系统的输出有何不同,为什么?若改用最低频率为0、最高频率为0.5,长度为301的扫频正弦序列,则结果又将如何?
答:系统1的冲激响应与输入信号仿真图一致,没有起到滤波的作用,序列值显得杂乱无章;系统2的冲激响应与输入信号相比,系统2滤掉了部分序列值,使序列值变得平滑有序。结果不变,系统输出特性与系统本身有关,与输入无关。
六、总结实验心得体会。
答:心得体会:这次实验给我体会最深的就是系统级联与并联的转化,一开始对系统级联的概念不是特别理解,虽然通过老师给的分级系统完成了matlab程序的仿真,但是在进行系统并联的转化时,自己却无法直接得出并联的分级系统。后来通过对课本的复习与深刻理解,完成了并联系统的转化,使自己受益匪浅。