西工大信号系统上机实验一实验二.docx

上传人:b****5 文档编号:8027249 上传时间:2023-01-28 格式:DOCX 页数:16 大小:218.07KB
下载 相关 举报
西工大信号系统上机实验一实验二.docx_第1页
第1页 / 共16页
西工大信号系统上机实验一实验二.docx_第2页
第2页 / 共16页
西工大信号系统上机实验一实验二.docx_第3页
第3页 / 共16页
西工大信号系统上机实验一实验二.docx_第4页
第4页 / 共16页
西工大信号系统上机实验一实验二.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

西工大信号系统上机实验一实验二.docx

《西工大信号系统上机实验一实验二.docx》由会员分享,可在线阅读,更多相关《西工大信号系统上机实验一实验二.docx(16页珍藏版)》请在冰豆网上搜索。

西工大信号系统上机实验一实验二.docx

西工大信号系统上机实验一实验二

上机实验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('零输入响应');

运行截图如下:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1