实验三——精选推荐

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三
实验报告
课程名称:信号与系统(⼄)实验指导⽼师:严惠民成绩:______ 实验名称:线性时不变系统的时域分=================================================================================⼀、实验⽬的
1. 学会使⽤ MATLAB 对线性时不变系统的时域特性进⾏仿真分析;
2. 熟悉 LTI 系统在典型激励下的响应及特征;
3. 掌握⽤ MATLAB 函数数值求解系统零输⼊响应和零状态响应的⽅法;
4. 学习使⽤ Simulink 进⾏系统建模和仿真。

⼆、实验原理和内容
实验原理
1. LTI 系统的时域分析
系统响应的时域解析解法的过程是先求出微分⽅程(或差分⽅程)的齐次解,再根据输⼊信号的形式确定⽅程的特解,然后根据初始条件确定解的系数,最后得到系统的响应。

2. 数值求解的基本原理
对于所描述的连续时间系统,数值求解的原理是先将微分⽅程离散化,近似为相应的差分⽅程(将 dt 近似为 ?t),再求解差分⽅程,因此其数值求解⽅法⽅法与上述的离散系统的求解⽅法是类似的。

3.相关 MATLAB 函数
(1) impulse 函数:给定系统函数,计算连续时间 LTI 系统的单位冲激响应;(2)step 函数:给定系统函数,计算连续时间 LTI 系统的单位阶跃响应;
(3)lsim 函数:给定系统函数、初始状态和输⼊信号,计算连续时间和离散时间;LTI 系统的响应;
(4)impz 函数:给定系统函数,计算离散时间 LTI 系统的单位脉冲响应;(5)stepz 函数:给定系统函数,计算连续时间 LTI 系统的单位阶跃响应;


线
(6)filter函数:给定系统函数、初始状态和输⼊信号,计算离散时间LTI 系统的
响应。

以下的函数可⽤于构造系统模型,或者不同系统模型之间的转换:
(1)tf函数:给定ak 和bk,构造⼀个系统函数(或称为传递函数)为
的模型。

(2)ss函数,给定A、B、C 和D,构造⼀个由
描述的状态空间(state-space)系统模型;
(3)ss2tf和tf2ss函数:提供两种系统模型之间的转换。

4. Simulink 建模和仿真
在“Simulink Library Brower”窗⼝中,选择新建模型(New model)打开⼀个
空⽩模型窗⼝。

⽤⿏标将所需要的模块拖动到模型窗⼝中,⽤连接线将各模块连接
起来,再给定系统的初始状态和输⼊信号,即可仿真系统执⾏的过程,得到输出结
果。

实验内容
1.选择⼀个离散时间因果LTI 系统进⾏实验。

建议采⽤实验原理中例4 给出的系统,y [n] ?0.7y [n ?1] + 0.1y [n ?2] = 7x [n] ?2x [n ?1],输⼊信号为x [n] = 0.8nu [n],初始条件为y [?1] = 10, y [?2] = ?10。

(a) 试编写脚本程序⽤递推的⽅式求出系统的单位脉冲响应和单位阶跃响应。

检查所得的结果是否与⽤impz和stepz函数得到的结果相同;
(b) 试仍⽤递推的⽅式求出系统的零输⼊响应、零状态响应和全响应,画出
输出信号的波形;
(c) 例4 使⽤了lsim函数,实际上离散系统的响应更多的是⽤filter函数来
计算。

试使⽤该函数计算系统系统的零输⼊响应、零状态响应和全响应,
与前⾯的结果⽐较。

(d)(可选做)试⽤Simulink 仿真和求解系统的响应。

2.选择⼀个连续时间LTI 系统进⾏实验。

可考虑以下的问题:系统的微分⽅程为y’’ (t) + 5y’(t) + 6y (t) = 2x’(t) + 8x (t),输⼊信号为x (t) = e?tu (t),输出的初始值为y (0?) = 5, y’(0?) = ?4。

(a) 画出系统的单位冲激响应和单位阶跃响应;
(b) 给定或求出相应的系统状态变量的初值;
(c) 计算并画出系统的零输⼊响应、零状态响应和全响应;
(d) ⽤Simulink 求解系统的响应。

三、实验数据记录、处理和分析
1.试编写脚本程序⽤递推的⽅式求出系统的单位脉冲响应和单位阶跃响应。

检查所得的结果是否与⽤impz和stepz函数得到的结果相同;
源程序:
a=[1 -0.7 0.1];
b=[7 -2 0];
N=15;
subplot(2,1,1); impz(b,a,N);
subplot(2,1,2); stepz(b,a,N);
结果:
2.试仍⽤递推的⽅式求出系统的零输⼊响应、零状态响应和全响应,画出输出信号的波形;源程序:
a=[1 -0.7 0.1];
b=[7 -2 0];
y0=[-10 10];
x0=[10 30];
n=0:2;
x=(0.8).^n;
N = length(a);
M = length(b)-1;
y = [y0 zeros(1,length(n))];
a1 = a(length(a):-1:1) % reverses the elements in a
b1 = b(length(b):-1:1)
for i=N+1:N+length(n),
y(i) = -a1*y(i-N:i-1)' + b1*x(i-N:i-N+M)';
end
y = y(N+1:N+length(n));
stem(n,y);
结果:
3.例4 使⽤了lsim函数,实际上离散系统的响应更多的是⽤filter函数来
计算。

试使⽤该函数计算系统系统的零输⼊响应、零状态响应和全响应,与前⾯的结果⽐较。

源程序:
num=[7 -2 0];
den=[1 -0.7 -0.1];
n=0:50;
nl=length(n);
y01=[-10 10];
x01=[10 30];
x1=zeros(1,nl);
zi1=filtic(num,den,y01,x01); y1=filter(num,den,x1,zi1); subplot(3,1,1);
stem(n,y1,'r.');
title('零输⼊响应');
y02=[0 0];
x02=[0 0];
x2=0.8.^n;
zi2=filtic(num,den,y02,x02); y2=filter(num,den,x2,zi2); subplot(3,1,2);
stem(n,y2,'r.');
title('零状态响应');
y03=[10 30];
x03=[0 0];
x3=0.8.^n;
zi3=filtic(num,den,y03,x03); y3=filter(num,den,x1,zi3); subplot(3,1,3);
stem(n,y3,'r.');
title('全响应');
结果:
与⽤lism函数求出的结果相同。

4.选择⼀个连续时间LTI 系统进⾏实验。

可考虑以下的问题:系统的微分⽅程为y’’ (t) + 5y’(t) + 6y (t) = 2x’(t) + 8x (t),输⼊信号为x (t) = e?tu (t),输出的初始值为y (0?) = 5, y’(0?) = ?4。

(a) 画出系统的单位冲激响应和单位阶跃响应;
源代码:
a=[1 5 6];
b=[2 8];
sys=tf(b,a);
t=0:0.01:10;
subplot(2,1,1); impulse(sys,t);
subplot(2,1,2); step(sys,t);
结果:
5.(b) 给定或求出相应的系统状态变量的初值;结果:
6.计算并画出系统的零输⼊响应、零状态响应和全响应;
源代码:
clear;
a=[1 5 6];
b=[2 8];
[A,B,C,D]=tf2ss(b,a);
sys=ss(A,B,C,D);
X0=[7/18 0.25];
t=0:0.01:10;
f=exp(-t);
yzi=lsim(sys,zeros(1,length(t)),t,X0);
yzs=lsim(sys,f,t);
y=lsim(sys,f,t,X0);
plot(t,yzi,'r:',t,yzs,'g--',t,y);
xlabel('Time?(seconds)'); ylabel('Amplitude');
legend('Zero?Input?Response','Zero?State?Response','Total?Response'); 结果:
7.⽤Simulink 求解系统的响应。

四、讨论
⼼得体会:
本次实验我主要学会了⽤MATLAB 函数对线性时不变系统的时域特性进⾏仿真分析;
在实验过程中,我们要⼀步步按照PDF上的步骤来,并且需要我们有⾜够耐⼼和细⼼,这个实验帮助我们更好为之后信号与系统学习起到很⼤的帮助。

思考题:
1.Simulink 的模块库中提供了Transfer Fcn 和State-Space 模块,是否可以利⽤这两个模块简化本实验中的Simulink 的求解过程?
答:可以。

相关文档
最新文档