信号与系统仿真实验报告Word下载.doc
《信号与系统仿真实验报告Word下载.doc》由会员分享,可在线阅读,更多相关《信号与系统仿真实验报告Word下载.doc(53页珍藏版)》请在冰点文库上搜索。
3、拉普拉斯变换与傅里叶变换之间的关系 27
4、系统函数的极点分布与系统的稳定性和因果性之间的关系 27
三、实验内容 27
实验六离散时间信号与系统 30
一、实验目的 30
二、实验原理 30
1、离散时间信号的产生 30
2、离散时间系统的冲激响应 31
三、实验内容 31
实验七离散时间系统的时域、Z域分析 34
一、实验目的 34
二、实验原理 34
三、实验内容 36
示例一:
36
示例二:
示例三:
38
示例四:
39
示例五:
示例六:
41
实验一信号的产生和运算
一、实验目的
1、熟悉和掌握常用的用于信号和系统时域仿真分析的MATLAB函数;
2、掌握连续时间和离散时间信号的MATLAB产生,掌握用周期延拓的方法将一个非周期信号进行周期信号延拓形成一个周期信号的MATLAB编程;
基本要求:
掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序,实现各种信号的时域变换和运算,并且以图形的方法再现各种信号的波形。
二、实验原理
MATLAB提供许多函数用于产生常用的基本信号:
如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等。
这些基本信号时信号处理的基础。
在MATLAB中,无论是连续时间信号还是离散时间信号,MATLAB都是用一个数字数字序列来表示信号,这个数字序列在MATLAB中叫向量(vector)。
通常的情况下,需要与时间变量相对应。
如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如:
sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。
三、实验内容
Q1-1:
修改程序Program1_1,并以Q1_2为文件名存盘,产生实指数信号x(t)=e-2t。
要求在图形中加上网格线,并使用函数axis()控制图形的时间范围在0~2秒之间。
然后执行该程序,保存所得程序。
%Program1_1
clear,
closeall,
dt=0.01;
t=-2:
dt:
2;
x=exp(-2*t);
plot(t,x)
title('
Sinusoidalsignalx(t)'
)
xlabel('
Timet(sec)'
axis([0,2,0,1])
Q1_2:
修改程序program1_1,并以Q1_3为文件名存盘,使之能够仿真从键盘上任意输入的一个连续时间信号,并利用该程序仿真信号x(t)=e-2t。
x=input('
Typeinsignalx(t)inclosedform:
'
axis([0,2,0,1])
当输入exp(-2*t)时,仿真图像如下:
Q1_3:
将实验原理中所给的单位冲激信号和单位阶跃信号的函数文件在MATLAB文件编辑器中编好,并分别以文件名为delta和u保存在工作文件夹中以便使用。
Delta:
functiony=delta(t)
y=(u(t)-u(t-dt))/dt;
U:
%Unitstepfunction
functiony=u(t)
y=(t>
=0);
%y=1fort>
0,elsey=0
Q1-4:
根据示例程序的编程方法,编写一个MATLAB程序,由给定信号x(t)=e-2tu(t),求信号y(t)=x(1.5t+3),并绘制x(t)和y(t)的图形。
t=0:
0.01:
10;
x=exp(-0.5*t).*u(t);
y=exp(-0.5*(1.5*t+3)).*u(1.5*t+3);
subplot(211)
gridon,
Originalsignalx(t)'
subplot(212)
plot(t,y)
y(t)'
Q1-5:
给定一个离散时间信号x[n]=u[n]-u[n-8],仿照示例程序Program1_5,编写程序Q1_8,产生x[n]的左移序列x1[n]=x[n+6]和右移序列x2[n]=x[n-6],并在同一个图形窗口的三个子图中分别绘制这三个序列的图形。
n=-10:
20;
x=u(n)-u(n-8);
x1=u(n+6)-u((n+6)-8);
x2=u(n-6)-u((n-6)-8);
subplot(311)
stem(n,x)
Originalsignalx(n)'
subplot(312)
stem(n,x1)
Leftshiftedversionofx(n)'
subplot(313)
stem(n,x2)
Rightshiftedversionofx(n)'
Timeindexn'
Q1_6:
做如下总结:
1、信号与系统分析,就是基于信号的分解,在时域中,信号主要分解成:
根据冲激信号的定义,为了方便信号与系统的时域分析,一般常采用将任意连续信号分解为无穷多连续冲激信号之和。
2、比较plot,stem,stairs,ezplot命令的区别。
plot是以折线方式绘制二维图形的命令;
stem是绘制离散序列图的命令;
stairs是绘制阶梯形曲线图(以折线方式绘图)的命令;
ezplot是绘制符号表达式的二维图形的命令。
实验二连续时间系统的时域分析
1、加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;
2、掌握给定连续系统的冲激响应和阶跃响应;
3、牢固掌握系统的单位冲激响应的概念,掌握LTI系统的卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;
4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质;
5、掌握MATLAB描述LTI系统的常用方法及有关函数,并学会利用MATLAB求解LTI系统响应,绘制相应曲线;
6、掌握线性时不变连续系统的时域数学模型用MATLAB描述的方法,掌握卷积运算、线性常系数微分方程的求解编程。
1、LTI系统的单位冲激响应和卷积模型
给定一个连续时间LTI系统,在系统的初始条件为零时,用单位冲激信号作用系统,此时系统的响应信号称为系统的单位冲激响应,一般用h(t)来表示。
需要强调的是,系统的单位冲激响应是在激励信号为时的零状态响应。
离散时间LTI系统的单位冲激响应的定义与连续时间LTI系统的单位冲激响应相同,只是离散时间单位冲激函数的定义有所不同。
系统输入信号x(t)、x[n]和输出信号y(t)、y[n]之间的关系可以用一个数学表达式来描述,这个数学表达式为
这个表达式就是LTI系统的卷积模型,它是根据系统的线性和时不变性以及信号可以分解成单位冲激函数经过推理得到的。
这个表达式告诉我们一个很重要的结论,那就是:
任意LTI系统可以完全由它的单位冲激响应h(t)/h[n]来确定。
2、用线性常系数微分方程描述LTI系统
线性常系数微分方程或差分方程是描述LTI系统的另一个时域模型。
一个连续时间LTI系统,它的输入信号x(t)输出信号y(t)关系可以用下面的微分方程来表达
在MATLAB中,一个LTI系统也可以用系统微分方程的系数来描述。
例如一个LTI连续时间系统的微分方程为
MATLAB则用两个系统向量num=[1]和den=[132]来描述该系统,其中num和den分别表示系统微分方程右边和左边的系数,按照微分方程运算的降阶排列。
MATLAB的内部函数impulse(),step(),initial(),lsim()可以用来计算并绘制连续时间LTI系统的单位冲激响应,单位阶跃响应,零输入响应和任意信号作用于系统的零状态响应。
这些函数的用法描述如下:
h=impulse(num,den,T)和impulse(num,den,T)
s=step(num,den,T)和step(num,den,T)
y=lsim(num,den,x,t)和lsim(num,den,x,t)
函数impulse()和step()用来计算由num和den表示的LTI系统的单位冲激响应和单位阶跃响应,响应的时间范围为0~T,其中den和num分别为系统微分方程左右两边的系数向量,T为指定的响应的终点时间。
h和s的点数默认值为101点,由此可以计算步长为dt=T/(101-1)。
不带返回值的函数如impulse(num,den,T)和step(num,den,T)将直接在屏幕上绘制系统的单位冲激响应和单位阶跃响应曲线。
带返回值的函数如lsim(num,den,x,t)和y=lsim(num,den,x,t),用来计算由num和den表示的LTI系统在输入信号x的作用下的零状态响应。
其中t为指定的时间变化范围,x为输入信号,他们的长度应该是相同的。
3、卷积的计算
卷积的计算通常可按下面五个步骤进行
1.该换两个信号波形图中的横坐标,由t改为T,T变成函数的自变量;
2.把其中一个信号反摺,如把h(t)变成h(-T);
3.把反摺的信号做移位,移变量是t,这样t是一个参变量。
在T坐标系中,t>
0时图形右移,t<
0时图形左移;
4.计算两个信号重叠部分的乘积x(T)h(t-T);
5.完成相乘后图形的积分。
Q2-1:
仿照范例程序Program2_1,编写程序2_1,计算并绘制由如下微分方程表示的系统在输入信号为时的零状态响应曲线。
程序如下:
num=[8,0];
den=[1,3,2,0];
0.1:
3;
y1=impulse(num,den,t);
y2=step(num,den,t);
x=(exp(-2*t)-exp(-3*t)).*u(t);
y3=lsim(num,den,x,t);
subplot(2,2,1);
plot(t,y1);
脉冲响应:
subplot(2,2,2);
plot(t,y2);
阶跃响应:
subplot(2,2,3);
plot(t,y3);
输入响应为x=(exp(-2*t)-exp(-3*t)).*u(t)的响应:
响应曲线如下:
Q2-2:
仿照program2_2,给定下面两个连续信号,求两连续信号的卷积。
程序代码如下:
clear;
closeall;
t0=-2;
t1=8;
dt=0.01;
t=t0:
t1;
f1=2.*[u(t)-u(t-4)];
f2=u(t)-u(t-2);
y=dt*conv(f1,f2);
subplot(221)
plot(t,f1),gridon,title('
Signalf1(t)'
),axis([t0,t1,-0.2,2.2])
subplot(222)
plot(t,f2),gridon,title('
Signalf2(t)'
),axis([t0,t1,-0.2,1.2])
t=2*t0:
2*t1;
plot(t,y),gridon,title('
Theconvolutionoff1(t)andf2(t)'
),
axis([t0,t1,-0.2,5]),
Timet(sce)'
卷积计算结果如下:
Q2-3:
编写程序Q2_4,使之能够接受以键盘方式输入的定义在不同时间段的两个不同连续时间信号并完成卷积运算,分别绘制两个信号及其卷积的结果的图形,图形按照2×
2分割成四个子图。
a=-2;
b=8;
c=-3;
d=5;
t1=a:
b;
t2=c:
d;
f1=input('
Typeinsignalf1(t)inclosedform:
f2=input('
Typeinsignalf2(t)inclosedform:
subplot(221)
plot(t1,f1),gridon,title('
),axis([a,b,-0.2,1.2])
plot(t2,f2),gridon,title('
),axis([c,d,-0.2,1.2])
t=(a+c):
(b+d);
axis([a+c,b+d,-0.2,9]),
其中
卷积计算结果图形如下:
Q2-4:
做如下总结:
1、写出卷积的运算步骤,并谈谈你对卷积的一些基本性质的理解。
利用MATLAB计算卷积的函数是什么?
如何使用?
(1)该换两个信号波形图中的横坐标,由t改为T,T变成函数的自变量;
(2)把其中一个信号反摺,如把h(t)变成h(-T);
(3)把反摺的信号做移位,移变量是t,这样t是一个参变量。
(4)计算两个信号重叠部分的乘积x(T)h(t-T);
(5)完成相乘后图形的积分。
利用MATLAB计算卷积的函数是conv(),其语法为:
y=conv(x,h)。
其中x和h分别是两个作卷积运算的信号,y为卷积结果。
conv(x,h)函数实际上是完成两个多项式的乘法运算。
这两个多项式在MATLAB中是用它们的系数构成行向量来表示的。
2、在时域中,描述一个连续时间LTI系统的数学模型有:
3、MATLAB是如何表示一个由微分方程描述连续时间LTI系统的?
求解连续时间LTI系统的单位冲激响应、单位阶跃响应以及在某一个输入信号作用下的零状态响应的MATLAB函数有哪些?
在MATLAB中表示一个由微分方程描述连续时间LTI系统的是:
(其中a、b、c、d是微分方程的系数)
单位冲激响应函数:
impulse(num,den,T)
单位阶跃响应函数:
step(num,den,T)
在某一个输入信号作用下的零状态响应函数:
lsim(num,den,x,t)
其中den和num分别为系统微分方程左右两边的系数向量,T为指定的响应的终点时间,t为指定的时间变化范围,x为输入信号。
实验三连续时间系统的频谱-傅里叶变换
1、掌握连续时间周期信号的傅里叶级数的物理意义和分析方法;
2、观察截短傅里叶级数而产生的“Gibbs现象”,了解其特点以及产生的原因;
3、掌握连续时间傅里叶变换的分析方法及其物理意义;
4、掌握各种典型的连续时间非周期信号的频谱特征以及傅里叶变换的主要性质;
5、学习掌握利用MATLAB语言编写计算CTFS、CTFT和DTFT仿真程序,并能利用这些程序对一些典型信号进行频谱分析,验证CTFT、DTFT的若干重要性质。
掌握并深刻理解傅里叶变换的物理意义,掌握信号的傅里叶变换的计算方法,掌握利用MATLAB编程完成相关的傅里叶变换的计算。
二、实验原理及方法
1、连续时间周期信号的傅里叶级数CTFS分析
任何一个周期为T1的正弦周期信号,只要满足狄利克利条件,就可以展开傅里叶级数。
其中三角傅里叶级数为:
或:
其中,称为信号的基本频率,,和分别是信号的直流分量、余弦分量幅度和正弦分量幅度,、为合并同频率项之后各正弦谐波分量的幅度和初相位,它们都是频率的函数,绘制出它们与之间的图像,称为信号的频谱图。
指数形式的傅里叶级数为:
其中,为指数形式的傅里叶级数的系数,按如下公式计算:
指数形式的傅里叶级数告诉我们,如果一个周期信号,满足狄里克利条件,那么它就可以被看做是由很多不同频率的互为谐波关系的周期复指数信号所组成,其中每一个不同频率的周期复指数信号称为基本频率分量,其复幅度为。
这里“复幅度”指的是通常是复数。
2、连续时间信号傅里叶变换----CTFT
傅里叶变换在信号分析中具有非常重要的意义,它主要是用来进行信号的频谱分析的。
傅里叶变换和其逆变换定义如下:
连续时间傅里叶变换主要用来描述连续时间非周期信号的频谱。
任意非周期信号,如果满足狄里克利条件,那么,它可以被看做是由无穷多个不同频率的周期复指数信号的线性组合构成的,每个频率所对应的周期复指数信号称为频率分量,其相对幅度对应频率的之值,其相位为对应频率的的相位。
3、傅里叶级数的MATLAB计算
设周期信号的基本周期为,且满足狄里克利条件,则其傅里叶级数的系数可由下式得到:
基本频率为:
对周期信号进行分析时,我们往往只需要对其在一个周期内进行分析即可,通常选择主周期。
4、用MATLAB实现CTFT的计算
MATLAB进行傅里叶变换有两种方法,一种利用符号运算的方法计算,另一种是数值就按,本实验要求采用数值计算的方法来进行傅里叶变换的计算。
严格说用数值计算的方法计算连续时间信号的傅里叶变换需要有个限定条件,即信号是时限信号,也就是当时间|t|大于某个给定时间时其值衰减为零或接近为零,这个条件与前面提到的为什么不能用无限多个谐波分量来合成周期信号的道理是一样的,计算机只能处理有限大小和有限数量的数。
采用数值计算算法的理论依据是:
若信号为时限信号,当时间间隔T取得足够小时,上式可以演变为:
上式用MATLAB表示为:
X=x*exp(j*t’*w)*T
其中X为信号的傅里叶变换,W为频率,T为时间步长。
Q3-1给程序Program3_1增加适当的语句,并以Q2_2存盘,使之能够计算例题3-1中的周期方波信号的傅里叶级数的系数,并绘制信号的幅度谱和相位谱线图。
clear,closeall;
T=2;
dt=0.00001;
t=-2:
x1=u(t)-u(t-1-dt);
x=0;
form=-1:
1;
%Periodicallyextendx1(t)toformaperiodicsignal
x=x+u(t-m*T)-u(t-1-m*T-dt);
end
w0=2*pi/T;
N=10;
L=2*N+1;
fork=-N:
N;
%EvaluatetheFourierseriescoefficientsak
ak(N+1+k)=(1/T)*x1*exp(-j*k*w0*t'
)*dt;
phi=angle(ak);
%Evaluatethephaseofak
k=-N:
stem(k,abs(ak),'
k.'
axis([-N,N,-0.1,0.8])
傅里叶级数幅度谱'
频率指数k'
stem(k,phi)
傅里叶级数相位谱'
Q3-2分别手工计算的傅里叶级数的系数。
t
1
2
-2
-1
1.写出信号在其主周期内的数学表达式;
用MATLAB手工计算的傅里叶级数的系数(系数ak从-10到10共21个系数),写出过程并保存结果。
2.仿照program3_1,编写程序,以计算的傅里叶级数的系数。
手工计算:
>
k=-10:
ak=0.5.*((sin((k+eps)*pi/2)./((k+eps)*pi/2)).^2)
ak=
Columns1through10
0.00000.00250.00000.00410.00000.00810.00000.02250.00000.2026
Columns11through20
0.50000.20260.00000.02250.00000.00810.00000.00410.00000.0025
Column21
0.0000
程序计算:
clear,closeall,
t=-1:
x1=-abs(t)+1;
x=0;
x=x+(-abs(t-m*T));
N
结果:
Columns1through6
-0.0000+0.0000i0.0025+0.0000i0.0000+0.0000