西工大信号系统上机实验一实验二.docx
- 文档编号:8027249
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:16
- 大小:218.07KB
西工大信号系统上机实验一实验二.docx
《西工大信号系统上机实验一实验二.docx》由会员分享,可在线阅读,更多相关《西工大信号系统上机实验一实验二.docx(16页珍藏版)》请在冰豆网上搜索。
西工大信号系统上机实验一实验二
上机实验1连续时间信号的时域分析
一、实验目的
(1)掌握连续时间信号的时域运算的基本方法;
(2)掌握相关函数的调用格式及作用;
(3)掌握连续信号的基本运算;
(4)掌握利用计算机进行卷积运算的原理和方法;
(5)熟悉连续信号卷积运算函数conv的应用。
二、实验原理
信号的基本运算包括信号的相加(减)和相乘(除)。
信号的时域变换包括信号的平移、翻转、倒相、尺度变换等,由以下公式所描述。
(1)加(减):
f(t)=f1(t)±f2(t)
(2)乘:
f(t)=f1(t)×f2(t)
(3)延时或平移:
f(t)→f(t-t0)t0>0时右移;t0<0时左移
(4)翻转:
f(t)→f(-t)
(5)尺度变换:
f(t)→f(at)
(6)标量相乘:
f(t)→af(t)
(7)倒相:
f(t)→-f(t)
(8)微分:
f(t)→df(t)/d(t)
(9)积分:
f(t)
(10)卷积:
f(t)=f1(t)*f2(t)
三、涉及的MATLAB函数及实现
1.stepfun函数
功能:
产生一个阶跃信号
调用格式:
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)相乘:
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);
xlabel('时间(t)');ylabel('幅值f(t)');title('连续信号的相乘');
实验结果截屏如下:
(3)倒相:
由f(t)得到-f(t)
MATLAB程序如下:
clearall;
t=-1:
0.02:
1;
g1=3.*t.*t;
g2=-3.*t.*t;
gridon;
plot(t,g1,'r-',t,g2,'b--');
xlabel('t');ylabel('g(t)');title('倒相');
实验结果截屏如下:
(4)综合:
f(t)=(1+t/2)*[U(t+2)-U(t-2)];绘制f(t+2);f(t-2);f(-t);f(2t);-f(t)
MATLAB程序:
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);
MATLAB程序如下:
symst;
f1=sym('(-t+4)*(heaviside(t)-heaviside(t-4))');
f2=sin(2*pi*t');
subplot(2,3,1);ezplot(f1,[-4,3]);
subplot(2,3,2);ezplot(f2,[-2,5]);
F3=subs(f1,t,-t);
f3=F3+f1;subplot(2,3,3);ezplot(f3,[0,7]);
f4=-f3;subplot(2,3,4);ezplot(f4,[-3,4]);
f5=f2*f3;subplot(2,3,5);ezplot(f5,[-1,6]);
f6=f1*f2;subplot(2,3,6);ezplot(f6,[-2,5]);
运行程序前建立一个Heaviside的M文件函数。
Heaviside的函数M文件如下:
function[x,n]=Heaviside(n0,n1,n2)
n=[n1:
n2];x=[(n-n0)==0];
运行结果截图:
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);
MATLAB程序如下:
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]);xlabel('时间');
ylabel('f1(t)');title('单位冲激函数');
subplot(242);
plot(t1,f2);axis([-5,5,0,1.2]);ylabel('f2(t)');title('单位阶跃函数');
subplot(243);
plot(t1,f3);axis([-10,10,0,1.2]);ylabel('f3(t)');title('门函数');
y1=conv(f1,f2);r=2*length(t1)-1;t=-10:
1/a:
10;
y2=conv(f2,f1);r=2*length(t1)-1;t=-10:
1/a:
10;
subplot(244);
plot(t,y1);axis([-5,5,0,1.2]);title('f1卷积f2');ylabel('y1(t)');
subplot(245);
plot(t,y2);axis([-5,5,0,1.2]);title('f2卷积f1');ylabel('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]);ylabel('f5(t)');title('f2+f3');
subplot(247);
plot(t,f11);axis([-10,10,0,5]);title('f1卷积(f2+f3)');
subplot(248);
plot(t,f44);axis([-10,10,0,5]);title('f1卷积f2加f1卷积f3');ylabel('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):
其中sys可以是利用命令tf,zpk或ss建立的系统函数。
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)的冲激响应和阶跃响应。
MATLAB程序如下:
b=[39];a=[168];
sys=tf(b,a);
t=0:
0.1:
10;
y=impulse(sys,t);
y2=step(sys,t);
subplot(121);
plot(t,y);
xlabel('时间(t)');ylabel('y(t)');title('单位冲激响应');
subplot(122);
plot(t,y2);
xlabel('时间(t)');ylabel('y2(t)');title('单位阶跃响应');
运行结果截屏如下:
(2)求系统y’’(t)+y(t)=cosU(t),y(0+)=y’(0+)=0的全响应。
MATLAB程序如下:
%正弦系统下零状态响应
b=[1];a=[101];
sys=tf(b,a);
t=0:
0.1:
10;
x=cos(t);
y=lsim(sys,x,t);
plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('零状态响应');
运行截屏如下:
%正弦系统下全响应
MATLAB程序如下:
b=[1];a=[101];
[ABCD]=tf2ss(b,a);
sys=ss(A,B,C,D);
t=0:
0.1:
10;
x=cos(t);zi=[-10];
y=lsim(sys,x,t,zi);
plot(t,y);xlabel('时间(t)');ylabel('y(t)');title('系统的全响应');
运行结果截屏如下:
(3)已知某LTI系统的激励为f1=sinU(t),单位冲激响应h(t)=t*e^(-2*t)U(t),试给出系统零状态响应yf(t)的数学表达式。
MATLAB程序如下:
clearall;
T=0.1;t=0:
T:
10;
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);
end
yzsappr(k)=T*y(k);
end;
subplot(3,1,1);
plot(t,f);title('f(t)');
subplot(3,1,2);
plot(t,h);title('h(t)');
subplot(3,1,3);
xlabel('时间');
plot(t,yzsappr(1:
length(t)));
title('零状态响应近似结果');
运行结果如下:
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)
MATLAB程序如下:
clearall;
b=[001.65-0.331-57690.619080];
a=[10.99646397.8121318.110];
sys=tf(b,a);
t=0:
0.1:
1;
x=exp(t);
y=lsim(sys,x,t);
plot(t,y);
xlabel('时间(t)');ylabel('y(t)');
title('指数函数激励下的零状态响应');
运行结果截屏如下:
(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)
MATLAB程序如下:
clearall;
b=[0-0.475-0.248-0.1189-0.0564];
a=[10.63630.93960.51230.0037];
sys=tf(b,a);
t=0:
0.001:
40;
y1=impulse(sys,t);
subplot(221);
plot(t,y1);
xlabel('时间(t)');ylabel('y1(t)');
title('冲激激励下的零状态响应');
y2=step(sys,t);
subplot(222);
plot(t,y2);
xlabel('时间(t)');ylabel('y2(t)');
title('阶跃激励下的零状态响应');
f=t;y3=lsim(sys,f,t);
subplot(223);
plot(t,y3);xlabel('时间(t)');ylabel('y3(t)');
title('斜坡激励下的零状态响应');
x=sin(t);y4=lsim(sys,x,t);
subplot(224);
plot(t,y4);xlabel('时间(t)');ylabel('y4(t)');
title('正弦激励下的零状态响应');
运行结果截屏如下:
(4)已知某线性时不变系统的动态方程为y’’(t)+4y’(t)+4y(t)=2f’(t)+3f(t),t>0系统的初始状态为y(0)=0,y’(0)=1,求系统的零输入响应yx(t)。
MATLAB程序如下:
b=[144];
t=0:
0.01:
5;
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)));
plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('零输入响应');
运行截图如下:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西工大 信号系统 上机 实验