青岛科技大学信号系统实验讲义全部+加答案.docx
- 文档编号:16338561
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:44
- 大小:374.64KB
青岛科技大学信号系统实验讲义全部+加答案.docx
《青岛科技大学信号系统实验讲义全部+加答案.docx》由会员分享,可在线阅读,更多相关《青岛科技大学信号系统实验讲义全部+加答案.docx(44页珍藏版)》请在冰点文库上搜索。
青岛科技大学信号系统实验讲义全部+加答案
实验一MATLAB简介及连续信号的基本运算
一.实验目的
1.熟悉MATLAB软件平台;
2.掌握MATLAB编程方法、常用语句和可视化绘图技术;
3.学习MATLAB编程实现常用信号的表示方法及基本运算;
二.实验原理
连续信号是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干个不连续点之外,信号都有确定的值与之对应。
严格来说,MATLAB并不能处理连续信号,而是用等时间间隔点的样值来近似表示连续信号。
当取样时间间隔足够小时,这些离散的样值就能较好地近似连续信号。
矩阵是MATLAB进行数据处理的基本单元,矩阵运算是MATLAB最重要的运算。
通常意义上的数量(也称为标量)在MATLAB系统中是作为1×1的矩阵来处理的,而向量实际上是仅有一行或者一列的矩阵。
通常用向量表示信号的时间取值范围,如n=-5:
5,但信号x(n)、向量n本身的下标都是从1开始的,因此必须用一个与向量x等长的定位时间变量n,以及向量x,才能完整地表示序列x(n)。
在MATLAB可视化绘图中,对于以t为自变量的连续信号,在绘图时统一用plot函数;而对n为自变量的离散序列,在绘图时统一用stem函数。
1.单位阶跃信号ε(t)和单位冲激信号δ(t)的m文件
在自己的工作目录中创建如下两个m文件。
(1)单位阶跃信号ε(t)
functionf=heaviside(t)%阶跃信号
f=(t>0);
(2)单位冲激信号δ(t)
functionchongji(t1,t2,t0)%冲激信号δ(t-t0),t1和t2分为起始时间和终止时间
dt=0.01;
t=t1:
dt:
t2;
n=length(t);
x=zeros(1,n);
x(1,(t0-t1)/dt+1)=1/dt;
stairs(t,x);%以阶梯方式绘画
axis([t1,t2,0,1.1/dt])
2.连续信号的相加、相乘、时移、反转和尺度变换等基本运算
(1)两个连续信号的相加
在MATLAB中要实现两个连续信号f1(t)、f2(t)的相加,可用如下语句:
x=symadd(f1,f2)或x=f1+f2%x(t)=f1(t)+f2(t)
(2)两个连续信号的相乘
在MATLAB中要实现两个连续信号f1(t)、f2(t)的相乘,可用如下语句:
x=symmul(f1,f2)或x=f1*f2%x(t)=f1(t)f2(t)
(3)连续信号的平移
要实现连续信号f(t)向右平移t0,MATLAB语句格式为:
x=subs(f,t,t-t0)%x(t)=f(t-t0)
(4)连续信号的反转
要实现连续信号f(t)的反转,MATLAB语句格式为:
x=subs(f,t,-t)%x(t)=f(-t)
(5)连续信号的尺度变换
要实现连续信号f(t)的尺度变换,MATLAB语句格式为:
x=subs(f,t,a*t)%x(t)=f(at)
要实现连续信号f(t)的平移、尺度变换的综合运算,MATLAB语句格式为:
x=subs(f,t,a*t-b)%x(t)=f(at-b)
例1:
信号f1(t)、f2(t)如图1(a)、(b)所示,编制一个m文件,绘出f1(t)=e-0.5t[ε(t)-ε(t-2)]、f2(t)=sin(5πt)[ε(t)-ε(t-2)]、f1(-2t+1)、f1(t)f2(t-1)的波形。
解:
实现所要求运算的m文件如下,
symst
f1=sym('exp(-0.5*t)*(heaviside(t)-heaviside(t-2))');
f2=sym('sin(5*pi*t)*(heaviside(t)-heaviside(t-2))');
图1
subplot(2,2,1),ezplot(f1);title('f1');
subplot(2,2,2),ezplot(f2);title('f2');
f3=subs(f1,t,-2*t+1);
subplot(2,2,3);ezplot(f3);title('f3');
f4=f1*subs(f2,t,t-1);
subplot(2,2,4);ezplot(f4);title('f4');
运算结果如图9-1所示。
其中,图9-1(a)、(b)、(c)、(d)分别为f1(t)、f2(t)、f1(-t+1)、f1(t)f2(t-1)的波形。
3.连续信号的卷积运算
由于MATLAB运算的特点,两个连续信号f1(t)、f2(t)的卷积f(t)=f1(t)*f2(t),用MATLAB实现的过程应为:
(1)将连续信号f1(t)、f2(t)以时间间隔Δ进行取样,得离散序列f1(k∆)、f2(k∆);
(2)构造f1(k∆)、f2(k∆)与相对应的时间向量k1和k2;
(3)调用conv()函数计算卷积积分f(t)的近似向量f(k∆);
(4)构造f(k∆)对应的时间向量k。
下面是利用MATLAB实现连续信号卷积运算的通用函数sconv(),它在计算出卷积积分近似值的同时,还绘出f(t)的波形图。
function[f,k]=sconv(f1,f2,k1,k2,p)
%计算连续信号卷积积分f(t)=f1(t)*f2(t)
%f:
卷积积分f(t)对应的非零值向量
%k:
f(t)的对应时间向量
%f1,f2:
f1(t),f2(t)的非零样值向量
%k1,k2:
f1(t),f2(t)的对应时间向量
%p:
取样时间间隔
f=conv(f1,f2);%计算序列f1,f2的卷积和f
f=f*p;
k0=k1
(1)+k2
(1);%计算序列f非零样值的起点位置
k3=length(f1)+length(f2)-2;%计算卷积和f的非零样值的宽度
k=k0:
p:
k3*p;%确定卷积和f非零样值的时间向量
subplot(2,2,1);
plot(k1,f1);title('f1(t)');xlabel('t');ylabel('f1(t)');
subplot(2,2,2);
plot(k2,f2);title('f2(t)');xlabel('t');ylabel('f2(t)');
subplot(2,2,3);
plot(k,f);%画出卷积f(t)的波形
title('f(t)=f1(t)*f2(t))');xlabel('t');ylabel('f(t)');
h=get(gca,'position');
h(3)=2.5*h(3);
set(gca,'position',h)%将第三个子图的横坐标扩展为原来的2.5倍
图2
例2:
已知f1(t)=e-t[ε(t)-ε(t-2)]、f2(t)=[ε(t)-ε(t-3)],编制一个m文件,绘出f1(t)、f2(t)和f(t)=f1(t)*f2(t)的波形。
解:
实现所要求运算的m文件如下,运算结果如图2所示。
p=0.01;
k1=0:
p:
2
f1=exp(-k1);
k2=0:
p:
3;
f2=ones(1,length(k2));
[f,k]=sconv(f1,f2,k1,k2,p)
三.实验内容
1.建立一个文件夹,以自己名字的拼音命名,用以存放自己所编制的M文件和产生的结果,并设置成当前工作目录。
2.编写M文件,绘出信号
、
的波形及其卷积结果的波形,取样时间间隔为0.05s。
M文件:
symst
f1=sym('exp(-0.5*t)*sin(2*pi*t)*(heaviside(t)-heaviside(t-6))');
f2=sym('(heaviside(t)-heaviside(t-10))');
frgure1;
subplot(2,2,1),ezplot(f1);title('f1');
subplot(2,2,2),ezplot(f2);title('f2');
frgure2;
f1=sym('exp(-0.5*t)*sin(2*pi*t)*(heaviside(t)-heaviside(t-6))');
f2=sym('(heaviside(t)-heaviside(t-10))');
p=0.05;
k1=0:
p:
6;
f1=exp(-k1);
k2=0:
p:
10;
f2=ones(1,length(k2));
[f,k]=sconv(f1,f2,k1,k2,p);
3.编写M文件,绘出f1(t)=Sa(2πt),f2(t)=f1(2t-2)的波形,t的范围在-2~2s。
M文件:
symst
f1=('(sin(2*pi*t)/(2*pi*t))*(heaviside(t+2)-heaviside(t-2))');
f2=subs(f1,t,2*t-2);
subplot(2,2,1),ezplot(f1);title('f1');
subplot(2,2,2),ezplot(f2);title('f2');
四.实验报告
1.报告组成部分:
实验目的、实验原理、实验内容、实验结果及分析。
2.在实验结果中列出全部m文件。
思考题:
在调用某一函数文件时,该文件中除了输入、输出变量外的其它变量在调用函数结束后是否还存在?
这些变量是全局还是局部变量?
实验二连续LTI系统的时域分析
一.实验目的
1.加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;
2.掌握求解给定连续系统的冲激响应和阶跃响应的方法。
二.实验原理
1.连续系统零状态响应的数值解
线性时不变(LTI)连续时间系统用常系数线性微分方程进行描述,系统的零状态响应就是在系统初始状态为零条件下微分方程的解。
MATLAB控制系统工具箱提供了一个lism函数来求解连续时间系统的零状态响应,其调用格式为
y=lism(sys,f,t)
其中t表示计算系统响应的时间抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程、状态方程。
在求解微分方程时,微分方程的LTI系统模型sys要借助MATLAB中的tf函数来获得,其调用格式为
sys=tf(b,a)
其中a、b分别为微分方程左端和右端各项的系统向量。
例如系统方程
该方程左边、右边的系数向量分别为
,
。
例1:
描述某线性时不变系统的方程为
试求:
当
时,系统的零状态响应
。
解:
实现所要求运算的m文件如下,
a=[144];%将y(t)各阶导数的系数放在向量a中
b=[13];%将f(t)各阶导数的系数放在向量b中
sys=tf(b,a);%求系统模型sys
td=0.01;%定义时间间隔
t=0:
td:
10;%定义时间向量
f=exp(-t);%将f(t)表示出来
y=lsim(sys,f,t);%求系统的零状态响应
plot(t,y);%绘出零状态响应的波形
xlabel('t(sec)');%给出x坐标的标签
ylabel('y(t)');%给出y坐标的标签
gridon%在图上显示方格
程序运行结果见图1。
图1.零状态响应波形
2.连续系统的冲激响应和阶跃响应
连续系统的冲激响应、阶跃响应分别是输入信号为
和
所对应的零状态响应。
MATLAB控制系统工具箱专门提供了两个函数求解连续系统的冲激响应和阶跃响应。
冲激响应:
y=impulse(sys,t);
阶跃响应:
y=step(sys,t);
其中t表示计算系统响应的时间抽样点向量,sys是LTI系统模型。
例2:
描述某线性时不变系统的方程为
试求系统的冲激响应h(t)和阶跃响应g(t)。
解:
实现所要求运算的m文件如下,
b=[20100]; %输入微分方程右边的系数行向量;
a=[12100];%输入微分方程左边的系统行向量;
sys=tf(b,a);
t=0:
0.02:
4;%定义时间向量
figure
(1)
impulse(sys,t);%计算冲激响应并绘制波形
figure
(2)
step(sys,t);%计算阶跃响应并绘制波形
运算结果如图2(a)、(b)所示。
图2(a)冲激响应波形
图2(b)阶跃响应波形
三.实验内容
1.已知系统的微分方程为
若
,计算系统的零状态响应
、冲激响应
和阶跃响应
,并画出波形图。
M文件:
a=[122];%将y(t)各阶导数的系数放在向量a中
b=[10];%将f(t)各阶导数的系数放在向量b中
sys=tf(b,a);%求系统模型sys
td=0.01;%定义时间间隔
t=0:
td:
10;%定义时间向量
f=exp(-t);%将f(t)表示出来
y=lsim(sys,f,t);%求系统的零状态响应
plot(t,y);%绘出零状态响应的波形
xlabel('t(sec)');%给出x坐标的标签
ylabel('y(t)');%给出y坐标的标签
gridon%在图上显示方格
零状态响应
M文件:
a=[122];%将y(t)各阶导数的系数放在向量a中
b=[10];%将f(t)各阶导数的系数放在向量b中
sys=tf(b,a);%求系统模型sys
td=0.01;%定义时间间隔
t=0:
td:
10;%定义时间向量
f=exp(-t);%将f(t)表示出来
figure
(1)
impulse(sys,t);%计算冲激响应并绘制波形
figure
(2)
step(sys,t);%计算阶跃响应并绘制波形
冲激响应
阶跃响应
2.已知系统的微分方程为
分别求系统的零状态响应和阶跃响应,并在一个窗口中画出两个图形,观察结果。
如果输入信号改为
,那么结果又将如何?
M文件:
a=[132];%将y(t)各阶导数的系数放在向量a中
b=[26];%将f(t)各阶导数的系数放在向量b中
sys=tf(b,a);%求系统模型sys
td=0.01;%定义时间间隔
t=0:
td:
10;%定义时间向量
f=ones(1,length(t));%将f(t)表示出来
y=lsim(sys,f,t);%求系统的零状态响应
subplot(2,1,1);plot(t,y);title('零状态响应');xlabel('t(sec)');ylabel('yzs(t)');%绘出零状态响应的波形
gridon%在图上显示方格
subplot(2,1,2);
step(sys,t);%计算阶跃响应并绘制波形
xlabel('t');%给出x坐标的标签
ylabel('g(t)');%给出y坐标的标签
gridon%在图上显示方格
四.实验报告
1.报告组成部分:
实验目的、实验原理、实验内容、实验结果及分析。
2.在实验结果中列出全部m文件。
3.简述心得体会。
实验三连续LTI系统的复频域分析
一.实验目的
1.掌握基于MATLAB的拉普拉斯变换和反变换分析应用。
进一步了解用MATLAB计算复杂系统的方法。
2.掌握用MATLAB分析并绘制连续系统零极点图以判断因果系统稳定的方法。
3.掌握用MATLAB实现连续系统的频率特性及其幅度特性、相位特性。
二.实验原理
1.拉普拉斯变换和反变换的符号运算
在MATLAB符号运算工具箱中,提供了拉普拉斯正变换和反变换的函数。
正变换的调用格式为
F=laplace(f)
其中f为时间函数的符号表达式,F为拉普拉斯变换式,也是符号表达式。
反变换的调用格式为
f=ilaplace(F)
其中F为拉普拉斯变换式的符号表达式,f为时间函数,是符号形式。
例1:
求解拉普拉斯变换及反变换。
(1)求
的象函数F(s)。
(2)求
的原函数f(t)。
解:
实现
(1)所求运算的m文件如下,
symst;
e=sym('Heaviside(t)');
F=laplace(t*exp(-2*t)*e)
运行结果:
实现
(2)所求运算的m文件如下,
symss
f=ilaplace((s+2)/(((s+1)^2)*(s+3)*s))
运行结果:
2.连续系统的零极点分析
系统函数H(s)通常是一个有理分式,其分子和分母均为多项式。
计算H(s)的零极点可以应用MATLAB提供的roots函数,求出分子和分母多项式的根即可。
绘制系统的零极点分布图可以根据已求出的零极点,利用plot语句画图,还可以由H(s)直接应用pzmap函数画图。
pzmap函数的调用形式
pzmap(sys)
表示绘制出sys所描述系统的零极点图。
LTI系统模型要借助tf函数获得,其调用方式为
sys=tf(b,a)
式中b和a分别表示系统函数H(s)分子多项式和分母多项式的系数向量。
例2:
已知系统函数为
试用MATLAB画出系统的零极点分布图、冲激响应波形和阶跃响应波形。
解:
实现所求运算的m文件如下,
b=[1-20.8];
a=[1221];
subplot(1,3,1);
pzmap(b,a);
t=0:
0.02:
15;
subplot(1,3,2);
impulse(b,a,t);
subplot(1,3,3);
step(b,a,t);
运行结果如图1所示。
图1零极点分布图、冲激响应和阶跃响应的波形
3.系统的频率特性分析
(1)频率响应的定义
所谓频率特性,也称为频率响应特性,简称频率响应(Frequencyresponse),是指系统在正弦信号激励下的稳态响应随频率变化的情况,包括响应的幅度随频率的变化情况和响应的相位随频率的变化情况两个方面。
上图中x(t)、y(t)分别为系统的时域激励信号和响应信号,h(t)是系统的单位冲激响应,它们三者之间的关系为:
,由傅里叶变换的时域卷积定理可得到:
或者:
为系统的频域数学模型,它实际上就是系统的单位冲激响应h(t)的傅里叶变换。
即
由于H(jω)实际上是系统单位冲激响应h(t)的傅里叶变换,如果h(t)是收敛的,或者说是绝对可积(Absolutlyintegrabel)的话,那么H(jω)一定存在,而且H(jω)通常是复数,因此,也可以表示成复数的不同表达形式。
在研究系统的频率响应时,更多的是把它表示成极坐标形式:
上式中,
称为幅度频率响应(Magnituderesponse),反映信号经过系统之后,信号各频率分量的幅度发生变化的情况,
称为相位特性(Phaseresponse),反映信号经过系统后,信号各频率分量在相位上发生变化的情况。
和
都是频率ω的函数。
对于一个系统,其频率响应为H(jω),其幅度响应和相位响应分别为
和
,如果作用于系统的信号为
,则其响应信号为
若输入信号为正弦信号,即x(t)=sin(ω0t),则系统响应为
可见,系统对某一频率分量的影响表现为两个方面,一是信号的幅度要被
加权,二是信号的相位要被
移相。
由于
和
都是频率ω的函数,所以,系统对不同频率的频率分量造成的幅度和相位上的影响是不同的。
如果系统的相位频率响应特性是线性的,该系统对于所有的频率分量造成的延时时间都是一样的,因而,系统不会对信号产生相位失真(Phasedistortion)。
反之,若系统的相位频率响应特性不是线性的,则该系统对于不同频率的频率分量造成的延时时间是不同的,因此,当信号经过系统后,必将产生相位失真。
(2)用MATLAB计算系统频率响应
对于因果系统来说,若系统函数H(s)的收敛域包含s平面的虚轴,则其频率响应H(jω)存在,否则不存在频率响应。
因此,在分析频率特性之前,一般需要先对系统的稳定性进行分析。
MATLAB提供了专门对连续系统频率响应H(jw)进行分析的函数freqs()。
该函数可以求出系统频率响应的数值解,并可绘制出系统的幅频及相频响应曲线。
freqs()函数有如下几种调用格式:
1)h=ferqs(b,a,w)
其中,b和a为描述系统函数的两个行向量;w为形如w1:
p:
w2冒号运算定义的系统频率响应的频率范围;例如在语句h=freqs(b,a,w)之前加上语句:
w=0:
2*pi/256:
2*pi。
向量h则返回在向量w所定义的频率点上,系统频率响应的样值。
2)[h,w]=freqs(b,a,n)
将计算默认频率范围内n个频率点的系统响应的样值,并赋值返回变量h,n个频率点记录在w中。
若n默认,则计算200个频率点。
3)freqs(b,a)
该格式并不返回系统频率响应的样值,而是以对数坐标的方式绘出系统的幅频响应和相频响应曲线。
hm=abs(h):
求模数,求得系统的幅度频率响应,返回值存于hm之中。
real(h):
求h的实部;
imag(h):
求h的虚部;
phase=atan(-imag(h)./(real(h)+eps)):
求相位频率响应特性,atan()用来计算反正切值;或
phase=angle(h):
求相位频率响应特性;
(3)举例
如何利用上述函数计算并绘制系统频率响应特性曲线的编程方法。
例3:
已知一因果系统的系统函数为
试分析其频率特性。
解:
实现所求运算的m文件如下,
a=[12321];
b=[10-4];
p=roots(a);
pxm=max(real(p));
ifpxm>=0
'系统不稳定'
else
freqs(b,a)
end
运行结果如下:
图4系统的幅频响应和相频响应
或者也可以用以下方法得到:
a=[12321];
b=[10-4];
w=logspace(-1,1);
[h,w]=freqs(b,a,w);
hm=abs(h);
phase=angle(h);
subplot(2,1,1),loglog(w,hm),gridon;%loglog:
x轴和y轴坐标都取对数
subplot(2,1,2),semilogx(w,phai),gridon;%semilogx:
x轴坐标取对数
例4:
假设给定一个连续时间LTI系统,下面的微分方程描述其输入输出之间的关系
编写的MATLAB范例程序,绘制系统的幅度响应特性、相位响应特性、频率响应的实部和频率响应的虚部。
程序如下:
b=[1];
a=[132];
[h,w]=freqs(b,a);%计算频率响应h
hm=abs(h);%计算幅频响应hm
phase=angle(h);%计算相频响应phai
hr=real(h);%计算幅频响应的实部
hi=imag(h);%计算幅频响应的虚部
subplot(221)
plot(w,hm),gridon,tit
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 青岛 科技大学 信号系统 实验 讲义 全部 答案