西工大信号系统上机实验一实验二文档格式.docx
《西工大信号系统上机实验一实验二文档格式.docx》由会员分享,可在线阅读,更多相关《西工大信号系统上机实验一实验二文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
功能:
产生一个阶跃信号
调用格式:
stepfun(t,t0),其中t是时间区间,在该区间内阶跃信号一定会产生;
t0是信号发生从0到1的条约的时刻。
2.diff函数
diff(f):
求函数f对预设的独立变数的一次微分值。
diff(f,’t’):
求函数f对独立变数t的一次微分。
3.int函数
Int(f):
函数F对预设独立变数的积分值。
Int(f,’t’):
函数f对独立和变数t的积分值。
4.conv函数
实现信号的卷积运算。
w=conv(u,v):
计算两个有限长度序列的卷积。
说明:
该函数假定两个序列都从零开始。
四、试验内容与结果
(1)相加:
f(t)=f1(t)+f2(t)
MATLAB程序:
clearall;
t=0:
0.001:
3;
b=3;
t0=1;
u=stepfun(t,t0);
n=length(t);
fori=1:
n
u(i)=b*u(i)*(t(i)-t0);
end
y=sin(2*pi*t);
f=y+u;
plot(t,f);
xlable('
时间(t)'
);
ylabel('
幅值f(t)'
title('
连续信号的相加'
实验结果截屏如下:
(2)相乘:
MATLAB程序如下:
f=y.*u;
xlabel('
连续信号的相乘'
(3)倒相:
由f(t)得到-f(t)
t=-1:
0.02:
1;
g1=3.*t.*t;
g2=-3.*t.*t;
gridon;
plot(t,g1,'
r-'
t,g2,'
b--'
t'
g(t)'
倒相'
(4)综合:
f(t)=(1+t/2)*[U(t+2)-U(t-2)];
绘制f(t+2);
f(t-2);
f(-t);
f(2t);
-f(t)
symst
f=sym('
(t/2+1)*(heaviside(t+2)-heaviside(t-2))'
subplot(2,3,1);
ezplot(f,[-3,3]);
y1=subs(f,t,t+2);
subplot(2,3,2);
ezplot(y1,[-5,1])
y2=subs(f,t,t-2);
subplot(2,3,3);
ezplot(y2,[-1,5]);
y3=subs(f,t,-t);
subplot(2,3,4);
ezplot(y3,[-3,3]);
y4=subs(f,t,2*t);
subplot(2,3,5);
ezplot(y4,[-2,2]);
y5=-f;
subplot(2,3,6);
ezplot(y5,[-3,3]);
运行程序前建立一个Heaviside的M文件函数。
Heaviside的函数M文件如下:
function[x,n]=Heaviside(n0,n1,n2)
n=[n1:
n2];
x=[(n-n0)==0];
运行结果截图:
五.程序设计题
1.已知信号f1(t)=(-t+4)[U(t)-U(t-4)],f2(t)=sin(2*pi*t),用MATLAB绘制出信号的时域波形。
(1)f3(t)=f1(-t)+f1(t);
(2)f4(t)=-[f1(-t)+f1(t)]
(3)f5((t)=f2(t)*f3(t);
(4)f6(t)=f1(t)*f2(t);
symst;
f1=sym('
(-t+4)*(heaviside(t)-heaviside(t-4))'
f2=sin(2*pi*t'
ezplot(f1,[-4,3]);
ezplot(f2,[-2,5]);
F3=subs(f1,t,-t);
f3=F3+f1;
ezplot(f3,[0,7]);
f4=-f3;
ezplot(f4,[-3,4]);
f5=f2*f3;
ezplot(f5,[-1,6]);
f6=f1*f2;
ezplot(f6,[-2,5]);
2.若f1(t)=δ(t),f2=U(t),f3(t)=U(t)-U(t-4),试证明卷积满足以下结论:
(1)f1(t)*f2(t)=f2(t)*f1(t);
(2)f1(t)*(f2(t)+f3(t))=f1(t)*f2(t)+f1(t)*f3(t);
a=1000;
t1=-5:
1/a:
5;
f1=stepfun(t1,-1/a)-stepfun(t1,1/a);
f2=stepfun(t1,0);
F3=stepfun(t1,4);
f3=f2-F3;
subplot(241);
plot(t1,f1);
axis([-5,5,0,1.2]);
时间'
f1(t)'
单位冲激函数'
subplot(242);
plot(t1,f2);
f2(t)'
title('
单位阶跃函数'
subplot(243);
plot(t1,f3);
axis([-10,10,0,1.2]);
f3(t)'
门函数'
y1=conv(f1,f2);
r=2*length(t1)-1;
t=-10:
10;
y2=conv(f2,f1);
subplot(244);
plot(t,y1);
f1卷积f2'
y1(t)'
subplot(245);
plot(t,y2);
f2卷积f1'
y2(t)'
f5=f2+f3;
f11=conv(f1,f5);
f22=conv(f1,f2);
f33=conv(f1,f3);
f44=f22+f33;
subplot(246);
plot(t1,f5);
axis([-10,10,0,5]);
f5(t)'
f2+f3'
subplot(247);
plot(t,f11);
f1卷积(f2+f3)'
subplot(248);
plot(t,f44);
f1卷积f2加f1卷积f3'
f44(t)'
运行结果截屏如下:
上机实验2连续LTI系统的时域分析
(1)熟悉LTI系统在典型激励信号的响应及其特性;
(2)熟悉连续LTI系统单位冲激响应的求解方法;
(3)重点掌握用卷积计算连续时间系统的零状态响应;
(4)熟悉MATLAB相关函数的调用格式及作用;
(5)会用MATLAB对系统进行时域分析。
二、实验原理
连续时间系统可用如下的线性常系数微分方程来描述:
其中,
,系统的初始条件为
,...,
。
系统的响应一般包括两部分:
零状态响应和零输入响应。
对于低阶系统,一般可以通过解析的方法得到响应,但是对与高阶的系统,手工计算比较困难,需要靠MSTLAB来确定系统的各种响应。
1、直接求解法
涉及到的MATLAB函数有:
impulse/step/roots/lsim等。
在MATLAB中,要以系统向量的形式输入系统的微分方程,因此在使用前必须对系统的微分方程进行变换,得到其传递函数。
其分别用向量a,b表示分母多项式和分子多项式的系数(按降序排列)。
2、卷积计算法
根据系统的单位冲激响应,里用卷积计算的方法,也可以计算任意输入状态下系统的零状态响应。
设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为f(t)时,系统的零状态响应为:
也可简记为
,由于计算机采用的数值计算,因此系统的零状态响应也可以用离散序列卷积和近似为
式中
、
和
分别对应以T为时间间隔对连续时间信号
进行采样得到的离散序列。
三.涉及的MATLAB函数
1、impulse函数
计算并画出系统的冲激函数
调用格式:
impulse(sys):
其中sys可以是利用命令tf,zpk或ss建立的系统函数。
Impulse(sys,t):
计算并画出系统在向量t定义的时间内的冲激响应。
Y=impulse(sys,t):
保存系统的输出值。
2.step函数
功能:
计算并画出系统的阶跃响应曲线
Step(sys):
step(sys,t):
计算并画出系统在向量t定义的时间内的阶跃响应。
3.Isim函数
计算并画出系统在任意输入下的零状态响应
Isimlism(sys,t)其中sys可以是利用命令tf,zpk或ss建立的系统函数,x是系统的输入,t定义的是时间范围;
Lsimlism(sys,x,t,zi):
计算系统在任意输入的零状态下的全响应,sys必须是状态空间形式的系统函数,zi是系统的初始状态。
4:
roots函数
计算其次多项式的根。
r=roots(b):
计算多项式b的根,r为多项式的根.
四、实验内容:
1.验证性实验
(1)求系统y’’(t)+6*y’(t)+8*y(t)=3*x’(t)+9*x(t)的冲激响应和阶跃响应。
b=[39];
a=[168];
sys=tf(b,a);
0.1:
y=impulse(sys,t);
y2=step(sys,t);
subplot(121);
plot(t,y);
y(t)'
单位冲激响应'
subplot(122);
单位阶跃响应'
(2)求系统y’’(t)+y(t)=cosU(t),y(0+)=y’(0+)=0的全响应。
%正弦系统下零状态响应
b=[1];
a=[101];
x=cos(t);
y=lsim(sys,x,t);
零状态响应'
运行截屏如下:
%正弦系统下全响应
MATLAB程序如下:
[ABCD]=tf2ss(b,a);
sys=ss(A,B,C,D);
zi=[-10];
y=lsim(sys,x,t,zi);
系统的全响应'
(3)已知某LTI系统的激励为f1=sinU(t),单位冲激响应h(t)=t*e^(-2*t)U(t),试给出系统零状态响应yf(t)的数学表达式。
T=0.1;
T:
f=3*t.*sin(t);
h=t.*exp(-2*t);
Lf=length(f);
Lh=length(h);
fork=1:
Lf+Lh+1;
y(k)=0;
fori=max(1,k-(Lh-1)):
min(k,Lf);
y(k)=y(k)+f(i)*h(k-i+1);
yzsappr(k)=T*y(k);
end;
subplot(3,1,1);
f(t)'
subplot(3,1,2);
plot(t,h);
h(t)'
subplot(3,1,3);
plot(t,yzsappr(1:
length(t)));
零状态响应近似结果'
运行结果如下:
2.程序设计实验
(1)计算下述系统在指数函数激励下的零状态响应
H(s)=(1.65*s^4-0.331*s^3-576*s^2+90.6*s+19080)/
(s^6+0.996*s^5+463*s^4+97.8*s^3+12131*s^2+8.11*s)
b=[001.65-0.331-57690.619080];
a=[10.99646397.8121318.110];
x=exp(t);
指数函数激励下的零状态响应'
(3)计算下述系统在冲激、阶跃、斜坡和正弦激励下的零状态响应。
Y(4)(t)+0.6363y(3)(t)+0.9396y
(2)(t)+0.5123y
(1)(t)+0.0037y(t)=-0.475f(3)(t)-0.248f
(2)(t)-0.1189f
(1)(t)-0.0564f(t)
b=[0-0.475-0.248-0.1189-0.0564];
a=[10.63630.93960.51230.0037];
40;
y1=impulse(sys,t);
subplot(221);
冲激激励下的零状态响应'
subplot(222);
阶跃激励下的零状态响应'
f=t;
y3=lsim(sys,f,t);
subplot(223);
plot(t,y3);
y3(t)'
斜坡激励下的零状态响应'
x=sin(t);
y4=lsim(sys,x,t);
subplot(224);
plot(t,y4);
y4(t)'
正弦激励下的零状态响应'
(4)已知某线性时不变系统的动态方程为y’’(t)+4y’(t)+4y(t)=2f’(t)+3f(t),t>
0系统的初始状态为y(0)=0,y’(0)=1,求系统的零输入响应yx(t)。
b=[144];
0.01:
r=roots(b);
A=[1,-r(1,1);
1,-r(2,1)];
B=[0;
1];
X=B\A;
y=X
(1)*exp(t.*(-r(1,1)))+X
(2)*exp(t.*(-r(2,1)));
零输入响应'
运行截图如下: