基于MATLAB的信号仿真分析的设计___课设说明书资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
唐山学院
信号仿真分析实践
题目
系(部)
班级
姓名
学号
指导教师
2014年6 月16 日至 6 月20 日共 1 周2014年 6 月20 日
信号仿真分析实践任务书
课程实践成绩评定表
目录
1引言 (1)
1.1MATLAB的发展历史 (1)
1.2MATLAB的系统结构 (1)
1.3MATLAB的主要特点 (1)
1.4MATLAB的影响 (2)
2. 总体设计 (3)
2.1设计框图 (3)
2.2设计思想 (3)
3. 详细设计 (5)
3.1基础运算 (5)
3.2连续时间LTI系统时域仿真分析 (7)
3.2.1设计方法与步骤 (7)
3.2.2连续时间系统零状态响应的数值求解 (8)
3.2.3卷积的计算 (8)
3.2.4连续时间系统冲激响应和阶跃响应的求解 (9)
3.3连续时间LTI系统频域仿真分析 (13)
3.3.1实验目的 (13)
3.3.2设计框图 (14)
3.3.2系统的频率特性 (14)
3.3.3连续时间信号傅里叶变换的数值计算方法 (15)
3.3.4涉及的MATLAB函数 (15)
3.4连续时间LTI系统复频域仿真分析 (17)
3.4.1实验目的 (17)
3.4.2利用MATLAB进行部分分式展开 (18)
3.4.3连续时间信号的拉普拉斯变换 (18)
3.4.4连续系统的复频域分析 (18)
3.4.5系统频率特性分析 (19)
4. 总结 (24)
参考文献 (25)
1引言
MATLAB是一种面向科学与工程计算的高级语言,由于其集成了许多领域的工具箱,因此又被称之为“巨人肩上的工具”。
本文以该软件的MATLAB7.0为例,在简单介绍MATLAB的基础上,详细阐述了其仿真功能在信号处理中的应用。
1.1MATLAB的发展历史
MATLAB语言是由美国的Clever Moler博士于1980年开发的;设计者的初衷是为解决“线性代数”课程的矩阵运算问题;取名MATLAB即Matrix Laboratory 矩阵实验室的意思;1984年,MathWorks公司成立,MATLAB以商品形式出现,随着市场的推广,以其良好的开放性和运行的可靠性,成功地应用于各工程学科的研究领域。
1.2MATLAB的系统结构
MATLAB系统结构有三个层次、八个部分构成,每一个部分完成不同的功能,主要包括:
(1)MATLAB主包
(2)工具箱(Toolboxes)
(3)编译器(Compiler)
(4)建模仿真(Simulink)
(5)模块集(Blockset)
(6)实时仿真(Real-Time Worksho)
(7)状态流程(Stateflow)
(8)状态代码生成(Stateflow Coder)
1.3MATLAB的主要特点
(1)简单易学:与C语言几乎一致。
(2)编程简洁、效率高;语言规则不强,无需编译。
(3)强大而简单的绘图功能;二、三维绘图,直观展示结果。
(4)扩展性强——丰富的工具箱:MATLAB主工具箱、符号数学工具箱、SIMULINK仿真工具箱、控制系统工具箱、信号处理工具箱、图象处理工具箱、通信工具箱、系统辨识工具箱、神经元网络工具箱、金融工具箱等。
1.4MATLAB的影响
(1)matlab在教学中的应用
在大学里,诸如应用代数、数理统计、自动控制、数字信号处理、动态系统仿真等课程的教科书都把MATLAB作为内容。
在欧美是九十年代教科书与旧版书籍的区别性标志。
越来越多国内教科书也加入了Matlab相关内容。
MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。
(2)MATLAB行业运用相关图书:《MATLAB与选煤/选矿数据处理》、《MATLAB在工程数学上的应用》、《电磁场数值计算法与MATLAB实现》、《数学物理方程的MATLAB解法与可视化》、
《高等应用数学问题的MATLAB求解》、《MATLAB有限元分析与应用》、《MATLAB 7及工程问题解决方案》、《MATLAB 及在电子信息类课程中的应用》、《MATLAB在电气工程中的应用》等等。
(3)MATLAB在本专业中的应用
不管世界如何改变,MATLAB在通信专业的地位基本不变。
(通信专业“计算器”)
几乎所有通信与信号处理类课程:●高等数学●普通物理●线性代数●概率论与数理统计●计算方法(数值分析)●信号与系统●电路●通信原理●随机信号处理●数字信号处理●数字图像处理●光纤通信●移动通信●通信网
2.总体设计
总体设计的目标是:
(1)MATLAB程序入门和基础运用。
学习MATLAB软件的基本使用方法,了解MATLAB的数值计算、符号运算、可视化功能以及MATLAB程序入门设计。
(2)连续时间LTI系统的时域分析。
利用MATLAB求解连续系数的零状态响应、冲激响应及阶跃响应,利用MATLAB实现连续信号卷积的方法。
(3)连续时间LTI系统的频域分析。
利用MATLAB实现连续时间信号傅里叶变换,分析LTI系统的频域特性和LTI系统的输出响应。
(4)连续时间LTI系统的复频域分析。
利用MATLAB进行Laplace正、反变换。
2.1设计框图
图2—1
2.2设计思想
LTI系统各种分析方法的理论基础是信号的分解特性与系统的线性、时不变特性,其出发点是:激励信号可以分解为若干基础信号单元的线性组合;系统对激励所产生的零状态响应是系统对各基本信号单元分别激励下响应的叠加。
利用MATLAB进行MATLAB程序入门和基础运用、连续时间LTI系统的时域分析、连续时间LTI系统的频域分析和连续时间LTI系统的复频域分析。
3.详细设计
3.1基础运算
设计步骤:在MATLAB命令窗口输入运算命令进行运算。
下面一道题是用MATLAB进行“加减乘除”运算
1——1利用MATLAB计算A=-2-5i
解在MATLAB命令窗口键入如下语句:
>> A=-2-i*5
运行A =
-2.0000 - 5.0000i
>>
运行图如图3—1所示
图3—1
下面一道题是利用MATLAB表示一个复常量极坐标
1——2一个复常量极坐标表示
解在MATLAB命令窗口键入如下语句:
>> B=3*exp(i*pi/4)
运行B =
2.1213 + 2.1213i
>>
运行图如图3—2所示
图3—2
下面一道题是利用MATLAB进行向量和逗号运算1——3向量运算和逗号
解在MATLAB命令窗口键入如下语句:
>> A=[4,5,8,9]
运行A =
4 5 8 9
>>
运行图如图3—3所示
图3—3
下面一道题是利用MATLAB进行分号运算
1——4分号运算
解在MATLAB命令窗口键入如下语句:
>> B=[8;6;8;1]
B =
8
6
8
1
>>
运行图如图3—4所示
图3—4
3.2连续时间LTI系统时域仿真分析
实验目的:
(1)学会运用MATLAB符号求解连续系统的零输入响应;
(2)学会运用MATLAB数值求解连续系统的零状态响应;
(3)学会运用MATLAB求解连续系统的冲击响应和阶跃响应;
(4)学会运用MATLAB卷积积分法求解系统的零状态响应。
3.2.1设计方法与步骤
一般的连续时间系统分析有以下几个步骤:
①求解系统的零输入响应; ②求解系统的零状态响应; ③求解系统的全响应; ④分析系统的卷积; ⑤画出它们的图形。
下面以具体的微分方程为例说明利用MATLAB 软件分析系统的具体方法
3.2.2连续时间系统零状态响应的数值求解
我们知道,LTI 连续系统可用如下所示的线性常系数微分方程来描述,
例如,对于以下方程:
''''''''''''32103210()()()()()()()()
a y t a y t a y t a y t
b f t b f t b f t b f t +++=+++可用32103210[,,,],[,,,],a a a a a b b b b b ==输入函数()u f t =,得出它的冲击响
应h ,再根据LTI 系统的零状态响应y (t )是激励u (t )与冲击响应h (t )的卷积积分。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a 或b 中的对应元素应为零,不能省略不写,否则出错。
求函数的零状态响应 及初始状态
'(0)(0)0zs zs y y --==。
输入函数()sin(3*)cos(2*)f t t t =+。
建模
先求出系统的冲击响应,写出其特征方程 2540λλ++=
求出其特征根为p 和p ,及相应的留数r ,r ;则冲击响应为
1212
()p t p t
h t re r e =+ 输入y (t )可用输入u (t )与冲击响应h (t )的卷积求得。
3.2.3卷积的计算
连续时间信号1()f t 和2()f t 的卷积运算可用信号的分段求和来实现,即: 如果只求当t =n (n 为整数)时f (t )的值f (n
,则上式可得:
''''()5()4()2()4()
y t y t y t f t f t ++=-1212120
()()*()()()lim
()()k f t f t f t f t f t d f k f t k ττ∞
∞-∞
∆→=-∞
==-=∆-∆⋅∆
∑
⎰
()
()
()()
N
M
i j i j i j a y t b f t ===∑∑
式中的 实际上就是连续时间信号1()f t 和2()f t 经等时间间隔 均匀抽样的离散序列1()f k ∆和2()f k ∆的卷积和。
当足够小时,()
f n ∆就是卷积积分的结果——连续时间信号f (t )的较好数值近似。
下面是利用MATLAB 实现连续信号卷积的通用程序conv(),该程序在计算出卷积积分的数值近似的同时,还绘制出f (t )的时域波形图。
应注意,程序中是如何设定f (t )的时间长度。
MATLAB 程序: f1=input('输入函数f1='); f2=input('输入函数f2='); dt=input('dt='); y=conv(f1,f2);
plot(dt*([1:length(y)]-1),y);grid on; title('卷积');
xlabel('t'); ylabel('f1*f2')
程序运行结果: 输入以下数据:
f1=sin(3*t) f2=cos(3*t+2) dt=0.01 得出图形如图3—5所示:
12()[()]k f k f n k ∞
=-∞
∆∆-∆∑1212()()()()[()]
k k f n f k f t k f k f n k ∞
∞
=-∞=-∞∆=∆-∆⋅∆=∆∆-∆∑
∑
在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应的数值解,可分别用控制系统工具箱提供的函数impulse和step来求解。
其语句格式分别为:y = impulse(sys,t); y = step(sys,t); 其中,t表示计算机系统响应的时间抽样点向量,sys表示LTI系统模型。
下面我们用几个例子来验证以上知识点
(1)求零输入相应:求齐次微分方程在给定初始条件下的零输入相应,y''(t)+4y(t)=0,y(0_)=1,y'(0_)=1。
解在MATLAB命令窗口键入如下语句:
>> eq='D2y+4*y=0';
>> con='y(0)=1,Dy(0)=1';
>> y=dsolve(eq,con);y=simplify(y)
y =
1/2*sin(2*t)+cos(2*t)
>> ezplot(y),grid
零输入响应图如图3—6所示
图3—6
(2)求零状态响应:已知系统y''(t)+4y(t)=x(t),输入x(t)为cos(t)u(t),求系统的零状态响应。
解在MATLAB命令窗口键入如下语句
>> eq='D2y+4*y=cos(t)*heaviside(t)';
>> con='y(-0.01)=0,Dy(-0.01)=0';
>> y=dsolve(eq,con);y=simplify(y)
y =
1/3*heaviside(t)*(cos(t)-cos(2*t))
>> ezplot(y,[0,10])
零状态响应图如图3—7所示
图3—7
(3)求冲击响应和阶跃响应:已知某LTI系统的微分方程为y’’(t)+2y’(t)+32y(t)=f’(t)+16f”(t),试用MATLAB命令绘出0≦t≦4范围内系统的冲激响应h(t)和阶跃响应g(t)。
解在MATLAB命令窗口键入如下语句
>> t=0:0.001:4;
>> sys=tf([1,16],[1,2,32]);
>> h=impulse(sys,t);
>> g=step(sys,t);
>> subplot(211)
>> plot(t,h),grid on
>>xlabel('Time(sec)'),ylabel('h(t)')
>>title('冲激响应')
冲激响应图如图3—8(1)所示
图3—8(1)
>> subplot(212)
>> plot(t,g),grid on
>> xlabel('Time(sec)'),ylabel('g(t)')
>> title('阶跃响应')
阶跃响应图如图3—8(2)所示
图3—8(2)
(4)求卷积:求信号f1(t)=t和f2(t)=sin(t)的卷积的解析解。
解在MATLAB命令窗口键入如下语句
>> syms s t tao;
>> f1=t;f2=sin(t);
>> g=subs(f1,'t',tao)*subs(f2,'t',(t-tao));
>> f=int(g,tao,0,t)
f =
t-sin(t)
>>
运行图如图3—9所示
图3—9
3.3连续时间LTI系统频域仿真分析
3.3.1实验目的
(1).掌握连续时间信号傅立叶变换和傅立叶逆变换的实现方法,以及傅立叶变换的时移特性,傅立叶变换的频移特性的实现方法;
(2).了解傅立叶变换的频移特性及其应用;
(3).掌握函数fourier和函数ifourier的调用格式及作用;
(4).掌握傅立叶变换的数值计算方法,以及绘制信号频谱图的方法。
3.3.2设计框图
设计框图如图3—10所示
图3—10 3.3.2系统的频率特性
连续LTI 系统的频率特性又称频率响应特性,是指系统在正弦信号激励下的稳态响应随频率变化的情况,又称系统函数()ωH 。
对于一个零状态的线性系统,如图3—11所示。
其系统函数()ωH 定义为式
中,()ωX 为系统激励信号的傅里叶变换,()ωY 为系统在零状态条件下输出
响应的傅里叶变换。
系统函数()ωH 反映了系统内在的固有特性,它取决于系统自身的结构及组成系统元器件的参数,与外部激励无关,是描述系统特性的一个重要参数。
()ωH 是ω的复函数,可以表示为()ωH =()
ωH ()
e
j ωϕ。
其中,()ωH 随ω变化的规律称
为系统的幅频特性:()ωϕ随ω变化的规律称为系统的相频特性。
频率特性不仅可用函数表达式表示,还可以随频率f 变化的曲线来表示。
当频率特性曲线采用对数坐标时,又称为波特图。
3.3.3连续时间信号傅里叶变换的数值计算方法
算法理论依据:
当)(t f 为时限信号时,或和近似的看做时限信号时,式中的n 取值可认作是
有限的, 设为N ,则可得, ,0<=k<=N 。
编程中需要注意的是:要正确生成信号)(t f 的N 个样本)(τn f 的向量及向量
e
n j k τ
ω-。
3.3.4涉及的MATLAB 函数
1、.fourier 函数
功能:实现信号)(t f 的傅里叶变换。
调用格式:
F=fourier(f):符号函数f 的傅里叶变换,默认返回函数F 是关于ω的函数。
F=fourier(f,v ):是符号函数f 的傅里叶变换,返回函数F 是关于v 的函数。
)
(ωj X )
(ωj )
()
()(ωωωj X j Y j H =
k N k τπ
ω2=()τ
τωτ
ωω∑⎰∞
∞
---∞
+∞
-==e
e
n j t
j n f dt t f j F )(lim )(()()e n j N n k
n f k F τωττ--=∑=1
F=fourier(f,u,v ):是关于u 的函数f 的傅里叶变换,返回函数F 式关于v 的函数。
2、.ifourier 函数
功能:实现信号)(ωj F 的傅里叶变换 调用格式:
F=ifourier(F):是函数F 的傅里叶反变换,默认的独立变量ω,默认返回是关于x 的函数。
F=ifourier (F ,v):返回函数f 是u 的函数,而不是默认的x 的函数。
F=ifourier(F,v,u ):是对关于v 的函数F 进行傅里叶逆变换,返回关于u 的函数f 。
下面让我们用几个例子来验证以上知识点:
(1)利用MATLAB 求解傅里叶变换:已知连续时间信号f(t)=e t |
|2-,通过程
序完成f(t)的傅立叶变换。
解 在MATLAB 命令窗口键入如下语句: >> syms t;
>> f=fourier(exp(-2*abs(t))); >> ezplot(f); >>
傅里叶变换图如图3—12所示
图3—12
(2)利用MATLAB 绘出特性曲线:试画出f(t)=e
t
332-U(t)的波形及其频录特性曲线。
解 在MATLAB 命令窗口键入如下语句: >> syms t v w f
>> f=2/3*exp(-3*t)*sym('Heaviside(t)'); >> F=fourier(f); >> subplot(2,1,1); >> ezplot(f);
>> subplot(2,1,2); >> ezplot(abs(F)); >>
信号f(t)=e t
332 U(t)的波形及其幅频特性曲线如图3—13所示
图3—13
3.4连续时间LTI 系统复频域仿真分析
3.4.1实验目的
(1)利用MATLAB进行部分分式展开;
(2)利用MATLAB进行Laplace正、反变换;
(3)分析LTI系统的特性。
3.4.2利用MATLAB进行部分分式展开
为了方便LAPLACE反变换,先对F(s)进行部分分式展开。
根据F(s)分为具有不同极点的部分分式展开和具有多重极点的部分分式展开。
分别讨论。
(1)不同极点的部分分式展开:
F(s)=B(s)/A(s)=num/den=(b0*s^n+b1*s^(n-1)+...+bn)/(s^n+a1*s^(n-1) +...an)
在matlab行向量中,num和den分别表示传递函数分子和分母的系数
num=[b0 b1 ...bn]
den=[a0 a1 ...an]
将求出F(s)部分展开式的留数,级点,余项r,p,k
B(s)/A(s)=r(1)/(s-p(1))+r(2)/(s-p(2))+...+r(n)/(s-p(n))+k(s)
(2)多重极点部分分式展开:
r(j)/(s-p(j))+r(j+1)/(s-p(j+1))^2+...r(j+m-1)/(s-p(j))^m
3.4.3连续时间信号的拉普拉斯变换
连续时间信号的拉普拉斯正变换和逆变换分别为:
Matlab的符号数学工具箱(Symbolic Math Toolbox)提供了能直接求解拉普拉斯变换和逆变换的符号运算函数laplace()和ilaplace ()。
下面举例说明两函数的调用方法。
3.4.4连续系统的复频域分析
若描述系统的微分方程为:
则系统函数为:
∑
∑
=
=
=
M
j
j
j
N
i
i
i
t
f
b
t
y
a
)
(
)
()(
)(
⎰∞+∞-
=j
j
st ds
e
s
F
j
t
fσ
σ
π
)
(
2
1
)(
⎰∞∞--
=dt
e
t
f
s
F st
)(
)
(
其中,。
通过分析系统函数)(s H 的零、极点分布,可以掌握系统的特性。
若
)(s H 的所有极点都分布于左半开s 平面,则该因果系统是稳定的;否则,该因
果系统是不稳定的。
在MATLAB 中,可利用多项式求根函数root( )来确定系统函数)(s H 的零、极点。
(1)系统稳定性分析
A(s)、B(s)是关于s 的多项式,由其系数分别构成向量:
],,...,,[011a a a a a N N -=,],,...,,[011b b b b b M M -=
若执行如下命令,即可完成)(s H 的零、极点的计算:
p=roots(a) %求A(s)的根()(s H 的极点),并将结果返回给向量p q=roots(b) %求B(s)的根()(s H 的零点),并将结果返回给向量q
3.4.5系统频率特性分析
对于因果系统来说,若系统函数H(s)的收敛域包含s 平面的虚轴(轴),
则其频率响应
存在,且ωωj s s H j H ==)()(。
因此,分析系统频率特性之前,
要先对系统的稳定性作分析。
下面让我们用几个例子来验证以上知识点:
(1)利用MATLAB 求解拉普拉斯变换
解 在MATLAB 命令窗口键入如下语句: >> syms t
>> f1=sym('exp(-2*t)*Heaviside(t)'); %求f1(t)的拉普拉斯变换 >> F1=laplace(f1) F1 = 1/(s+2)
>> f2=sym('t*exp(-t)*Heaviside(t)');
)
()()
()
()(0
0s A s B s
a s
b s F s Y s H N
i i
i M
j j
j
=
==
∑∑==∑∑====M
j j
j N i i
i s b s B s a s A 0
)(,)()()()2()
()()1(221t te t f t e t f t t
εε--==
>> F2=laplace(f2) F2 = 1/(s+1)^2 >>
运行图如图3—14所示
图3—14
(2)利用MATLAB 拉普拉斯逆变换求解:若系统的系统函数为。
求冲激响应)(t h 。
(拉普拉斯逆变换)
解 在MATLAB 命令窗口键入如下语句 >> H=sym('1/(s^2+3*s+2)'); >> h=ilaplace(H)
1]Re[,2
31
)(2
->++=
s s s s H
h =
2*exp(-3/2*t)*sinh(1/2*t)
>>
运行图如图3—15所示
图3—15
利用MATLAB 进行系统稳定的判定: 已知一因果系统的系统函数为:
画出)(s H 的零、极点分布图,并判断系统的稳定性。
解 在MATLAB 命令窗口键入如下语句 >> a=[1 2 -3 2 1]; >> b=[1 0 -4]; >> p=roots(a) p =
1
2324
)(234
2++-+-=s s s s s s H
-3.1300 0.7247 + 0.6890i 0.7247 - 0.6890i -0.3195 >> q=roots(b) q = 2.0000 -2.0000 >> hold on
>> plot(real(p),imag(p),'x'); >> plot(real(q),imag(q),'o');
>> title('H(s)的零极点图');grid on; ylabel('虚部');xlabel('实部') >>
如图3—16所示
由运行结果如图3—15所示。
由图可知,)(s H 的零点为q 1 =2.0,q 2 =-2.0;极点为p 1=-3.13,p 2= 0.7247 + 0.6890i ,p 3= 0.7247 - 0.6890i ,p 4=-0.3195。
)(s H 的极点p 2、p 3处于右半开s 平面,故系统不稳定。
利用MATLAB 分析频率特性:已知一因果系统的系统函数为: 试分析其频率特性。
解 在MATLAB 命令窗口键入如下语句
图3—16
1
2324
)(234
2++++-=s s s s s s H
>> a=[1 2 3 2 1];
>> b=[1 0 -4];
>> p=roots(a)
p =
如图3—17所示-0.5000 + 0.8660i
-0.5000 - 0.8660i
-0.5000 + 0.8660i
-0.5000 - 0.8660i
>> pxm=max(real(p));
>> if pxm>=0
'系统不稳定'
Else
freqs(b,a)
图3—17
4.总结
通过为期一周的基于MATLAB信号与系统仿真分析课程设计,我收获了很多,同时也发现了在平时学习中的不完善。
本次课程设计是在学习了《信号与系统》和MATLAB软件的基础上进行的,是为了更加形象的理解之前所学习的理论知识和培养我们的专业素养,提高我们的综合能力,同时也是对学习效果的一种检验。
在实验的过程中,我们需要熟练的运用MATLAB软件的一些基本功能,同时要对所学的各种通信系统的每个模块有较深的理解。
在输入数据时,要注意各个参数的设置,有的需要计算,还有的需要一遍一遍的调试。
例如,连续时间系统的时域分析,频域分析等。
如果没有足够的耐心就可能得不出正确的仿真结果。
在平时的理论学习当中我们一般会忽略一些不起眼的标点符号,但在仿真中,有时缺少了这些标点符号结果就会出现严重偏差,甚至无法运行,在实际的应用当中应该时刻注意这些标点符号。
作为一个通信工程专业的学生,我们应该抱着一种认真严谨的态度去学习,这样才能真正的学会和掌握专业技能,同时培养起自己的专业素养和综合能力。
参考文献
[1] 薛定宇,陈阳泉。
基于MATLAB/Simulink的系统仿真技术与应用,清华大学出版社,2002
[2] 钟麟,王峰。
MATLAB仿真技术与应用教程,国防工业出版社,2005
[3] 楼顺天,李博菡。
基于MATLAB的系统分析与设计——信号处理,西安电子科技大学出版社,1998
[4] 吴湘淇。
信号、系统与信号处理的软硬件实现,电子工业出版社,2002
[5] 甘俊英,胡异丁。
基于MATLAB的信号与系统实验指导,清华大学出版社,2007。