信号系统实验终结版.docx
《信号系统实验终结版.docx》由会员分享,可在线阅读,更多相关《信号系统实验终结版.docx(17页珍藏版)》请在冰豆网上搜索。
信号系统实验终结版
上机实验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)
1)、|a|>1时尺度缩小
2)、|a|<1时尺度放大
3)、a<0时,还必须包含翻转
(6)标量乘法:
f(t)→af(t)
(7)倒相:
f(t)→-f(t)
(8)微分:
f(t)→df(t)/dt
(9)积分:
f(t)→∫t-∞f(τ)/τ
(10)卷积:
f(t)=f1(t)*f2(t)
三、实验内容
1.验证性实验(直接利用符号法进行编程)
(1)相加
实现两个连续信号的相加,即f(t)=f1(t)+f2(t)
Matlab程序:
clearall;
t=0:
0.0001:
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('连续信号的相加');
两个连续信号的相加结果如图所示。
(2)相乘
实现两个连续信号的相乘,即f(t)=f1(t)*f2(t)
Matlab程序:
clearall;
t=0:
0.0001:
5;
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)中的自变量t替换为at。
Matlab程序:
clearall;
t=0:
0.001:
1;
a=2;
y=sin(2*pi*t);
y1=sin(2*a*pi*t);
subplot(2,2,1)
plot(t,y);
ylabel('y(t)');xlabel('t');
title('尺度变化');
subplot(2,1,2)
plot(t,y1);
ylabel('y1(t)');xlabel('t');
信号及其尺度变换结果如图所示。
(4)卷积
利用离散conv函数实现连续运算,并寻找其他方法。
1)函数卷积计算
若
δ(t),
=u(t),计算f(t)=f1(t)*f2(t),f(t)=f1(t)*
(t),f(t)=f2(t)*f2(t)。
(利用conv函数)。
Matlab程序:
%连续函数卷积计算
clearall;
a=1000;
t1=-5:
1/a:
5;
f1=stepfun(t1,0);
f2=stepfun(t1,-1/a)-stepfun(t1,1/a);
subplot(2,3,1);
plot(t1,f1);axis([-5,5,0,1.2]);
xlabel('时间(t)');ylabel('f1(t)');title('单位阶跃函数');
subplot(2,3,2);plot(t1,f2);ylabel('f2(t)');
title('单位冲激函数');
y=conv(f1,f2);r=2*length(t1)-1;t=-10:
1/a:
10;
subplot(2,3,3);plot(t,y);axis([-5,5,0,1.2]);
title('f1与f2的卷积');ylabel('y(t)');
f11=conv(f1,f1);f22=conv(f2,f2);
subplot(2,3,4);plot(t,f11);title('f1与f1的卷积');
ylabel('f11(t)');axis([-5,5,0,5000]);
subplot(2,3,5);plot(t,f22);title('f2与f2卷积');ylabel('f22(t)');
连续函数卷积计算结果如图所示。
2.程序设计实验
(1)已知信号f1(t)=(-t+4)[U(t)-U(t-4)],f2(t)=sin(2πt),用matlab绘出下列信号的时域波形。
要求写出全部程序,并绘制出信号时域波形。
(a)f3(t)=f1(-t)+f1(t)
(b)f4(t)=-[f1(t)+f1(t)]
(c)f5(t)=f1(t)×f3(t)
(d)f6(t)=f1(t)×f2(t)
Matlab程序:
symst
f1=sym('(4-t)*(heaviside(t)-heaviside(t-4))');
subplot(2,3,1);ezplot(f1,[-5,5]);title('f1');
f2=sin(2*pi*t);subplot(2,3,2);ezplot(f2,[-5,2,5]);title('f2');
f3=subs(f1,t,-t)+f1;subplot(2,3,3);ezplot(f3,[-5,5]);title('f3');
f4=-f3;subplot(2,3,4);
ezplot(f4,[-5,5]);title('f4');f5=f2*f3;subplot(2,3,5);
ezplot(f5,[-5,5]);title('f5');
f6=f1*f2;
subplot(2,3,6);ezplot(f6,[-5,5]);title('f6');axis([-5,5,-4,4]);
各个信号波形如图所示。
(2)若
δ(t),
=u(t),f3(t)=u(t)-u(t-4)试证明卷积满足如下结论:
(a)f1(t)*f2(t)=f2(t)*
*[f2(t)+f3(t)]=
(t)*f2(t)+
(t)*
Matlab程序:
clearall;
a=1000;
t1=-5:
1/a:
5;
f1=stepfun(t1,0);
f2=stepfun(t1,-1/a)-stepfun(t1,1/a);
f3=stepfun(t1,0)-stepfun(t1,4);
subplot(2,4,1);plot(t1,f1);axis([-5,5,0,1.2]);xlabel('时间(t)');
ylabel('f1(t)');title('单位阶跃函数');
subplot(2,4,2);plot(t1,f2);ylabel('f2(t)');
title('单位冲激函数');
subplot(2,4,3);plot(t1,f3);ylabel('f3(t)');xlabel('时间(t)');
title('门函数');axis([-5,5,0,2]);
y1=conv(f1,f2);r=2*length(t1)-1;t=-10:
1/a:
10;
subplot(2,4,4);plot(t,y1);axis([-5,5,0,1.2]);
title('f1与f2的卷积');ylabel('y1(t)');xlabel('时间(t)');
y2=conv(f2,f1);r=2*length(t1)-1;t=-10:
1/a:
10;
subplot(2,4,5);plot(t,y2);axis([-5,5,0,1.2]);
title('f2与f1的卷积');ylabel('y2(t)');xlabel('时间(t)');
y3=conv(f1,f2+f3);y4=conv(f1,f2)+conv(f1,f3);
subplot(2,4,6);plot(t,y3);title('f与f2+f3的卷积');xlabel('时间(t)');
ylabel('y3(t)');axis([-5,10,0,6000]);
subplot(2,4,7);plot(t,y4);
title('f1与f2卷积,f1与f3卷积之和');ylabel('y4(t)');
xlabel('时间(t)');axis([-5,10,0,6000]);
各个波形如图所示:
上机实验2连续LTI系统的时域分析
一、实验目的
(1)熟悉LTI系统在典型激励信号的响应及其特性;
(2)熟悉连续LTI系统单位冲激响应的求解方法;
(3)重点掌握用卷积计算连续时间系统的零状态响应;
(4)熟悉MATLAB相关函数的调用格式及作用;
(5)会用MATLAB对系统进行时域分析。
二、实验原理
连续时间系统可用如下的线性常系数微分方程来描述:
其中,
,系统的初始条件为
,...,
系统的响应一般包括两部分:
零状态响应和零输入响应。
对于低阶系统,一般可以通过解析的方法得到响应,但是对与高阶的系统,手工计算比较困难,需要靠MSTLAB来确定系统的各种响应。
1、直接求解法
涉及到的MATLAB函数有:
impulse(冲激响应)、step(阶跃)、roots(零输入响应)、lsim(零状态响应)等。
在MATLAB中,要求以系统向量的形式输入系统的微分方程,因此,在使用前必须对系统的微分方程进行变换,得到其传递函数。
其分别用向量a和b表示分母多项式和分子多项式的系数(按照s的降幂排列)。
2、卷积计算法
根据系统的单位冲激响应,利用卷积计算的方法,也可以计算任意输入状态下系统的零状态响应。
设一个线性零状态系统,已知系统的单位冲激响应为h(t),当系统的激励信号为f(t)时,系统的零状态响应为:
也可简单记为
由于计算机采用的是数值计算,因此系统的零状态响应也可以用离散序列卷积和近似为
式中
、f(k)、h(k)分别对应以T为时间间隔对连续时间信号
、f(t)和h(t)进行采样得到的离散序列。
三、实验内容:
1验证性实验
(1)求系统y
(2)(t)+6y
(1)(t)+8y(t)=3x
(1)(t)+9x(t)的冲击响应和阶跃响应。
Matlab程序:
%求系统的冲击响应
b=[39];a=[168];
sys=tf(b,a);
t=0:
0.1:
10;
y=impulse(sys,t);
plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('单位冲激响应');
%求系统的阶跃响应
B=[39];a=[168];
sys=tf(b,a);
t=0:
0.1:
10;
y=step(sys,t);
plot(t,y)
xlabel('时间(t)');
ylabel('y(t)');
title('单位阶跃响应');
(2)求系统y
(2)(t)+y(t)=costU(t),y(0+)=y
(1)(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('系统的零状态响应');
plot(t,y);
xlabel('时间(t)');
ylabel('y(t)');
title('零状态响应');
%求系统的全响应
a=[101];
b=[1];
[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=sintU(t),单位冲激响应为h(t)=te-2tU(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);%f(t)的波形
plot(t,f);title('f(t)');
subplot(3,1,2);%h(t)的波形
plot(t,h);title('h(t)');
subplot(3,1,3);%零状态响应近似结果的波形
xlabel('时间');
plot(t,yzsappr(1:
length(t)));
title('零状态响应近似结果');
plot(t,y_f(1:
length(t)));
xlabel('时间(t)');
title('零状态响应近似结果');
2程序设计实验
(1)计算下述系统在指数函数激励下的零状态响应
解答:
a=[0,0,1.65,-0.331,-576,90.6,19080];
b=[1,0.996,463,97.8,12131,8.11,0];
sys=tf(a,b);
t=0:
0.0001:
1;
x=exp(t);
y=lsim(sys,x,t);
plot(t,y);
xlabel('时间(t)');ylabel('y(t)');
title('零状态响应');
(2)计算下述系统在冲激、阶跃、斜坡和正弦激励下的零状态响应。
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程序:
a=[0,-0.475,-0.248,-0.1189,-0.0564];
b=[1,0.6363,0.9396,0.5123,0.0037];
sys=tf(a,b,0);
subplot(2,2,1);
dt=0.001;t=0:
dt:
40;
x1=zeros(1,length(t));
x1
(1)=1/dt;
y1=lsim(sys,x1,t);
plot(t,y1);
xlabel('时间(t)');ylabel('y(t)');
title('在单位冲激激励下的零状态响应');
subplot(2,2,2);
f=sign(t);
x2=0.5+0.5*f;
y2=lsim(sys,x2,t);
plot(t,y2);
xlabel('时间(t)');ylabel('y(t)');
title('在单位阶跃激励下的零状态响应');
subplot(2,2,3);
x3=t;
y3=lsim(sys,x3,t);
plot(t,y3);
xlabel('时间(t)');ylabel('y(t)');
title('在斜坡激励下的零状态响应');
subplot(2,2,4);
x4=cos(t);
y4=lsim(sys,x4,t);
plot(t,y4);
xlabel('时间(t)');ylabel('y(t)');
title('在正弦激励下的零状态响应');