Simulink使用.docx
- 文档编号:28203513
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:57
- 大小:622.29KB
Simulink使用.docx
《Simulink使用.docx》由会员分享,可在线阅读,更多相关《Simulink使用.docx(57页珍藏版)》请在冰豆网上搜索。
Simulink使用
第一章Simulink基础知识
Simulink是一个用于建模、仿真、分析动态系统的软件包。
它支持线性和非线性系统,也可以是多速率系统,也就是该系统有着不同采样速率的部分组成。
它也是一种基于模块的设计工具。
Simulink的特点在于:
•Simulink鼓励你去尝试任何事,你可以很容易地用草图来搭建模块,也可对现有的模型进行添加来搭建一个新模型,你可以看到仿真结果的图形,也可通过MATLAB中的所有分析工具来分析结果。
•Simulink的目的是通过鼓励你提出一个问题,模拟它,然后看发生了什么这么一种过程让你觉得建模和仿真是一件有趣的事。
•Simulink也很实用,全世界成千上百的工程师正用它来模拟和解决实际问题,对这个工具的了解将对你的整个职业生涯都很有帮助。
仿真运行相关问题
当仿真正在运行时,你可以交互地完成以下操作:
1.修改一些配置参数,包括仿真停止时间和最大仿真步长
2.用浮动示波器或显示模块来观察连线上传输的信号
3.修改模块参数,只要不改变以下参数
♦状态变量,输入,输出的个数
♦采样时间
♦过零点数
♦任何模块参数的向量长度
♦外部模块工作向量的长度
在仿真过程中,你不可以改变模型结构如:
添加删除连线或模块,除非你停止目前的仿真。
一.定义仿真开始和结束时间
Simulink仿真在默认值0秒开始,在默认值10秒处结束。
Solver配置允许你对当前的仿真定义其它的开始和结束时间。
注意:
仿真时间和实际的时间不一样。
运行一次仿真所花的实际时间取决于许多因素,包括模型的复杂度,求借器的步长和计算机速度。
二.选择求解器
求解器是Simulink的软件组成部分,它是用来确定下一个时间步长的,仿真过程需要在这段时间内满足你所定义的精度要求。
Simulink提供了一组丰富的求解器,每一个都适用于具体的应用。
下面就解释一下如何选择最适合你的应用的求解器。
Simulink将求解器分成两种类型:
固定步长和变步长。
定步长求解器的步长大小在整个仿真过程中是保持不变的,而变步长求解器根据模型的动态变化逐步改变步长大小。
特别的是,当模型的状态快速变化时变步长求解器会减小步长大小来保持精度,而当系统状态缓慢变化时变步长求解器会增大步长大小。
两种类型的求解器的选择取决于你是怎样配置你的模型以及模型的变化。
如果你打算将模型产生的代码在实时计算机上运行,你应该选择定步长求解器,因为实时计算机系统是以定步长的信号采样速率运行的。
如果你不打算让模型产生代码,那么变步长与定步长求解器的选择就取决于你的模型的动态变化。
如果你的模型状态变化得很快或不连续,变步长求解器可以大大缩短仿真时间。
这是因为变步长求解器比起定步长求解器只要较少的时间步长就可达到一定的精度级别。
下面的模型说明了变步长求解器是如何缩短仿真时间的
[0.00.250.50.751.01.25…….]
相比之下,变步长求解器仅仅当模型实际产生输出时才取一个步长
……]
这样就大大的减少了时间步长的个数。
求解器的详细选择请看Simulink/UsingSimulink/RuningSimulations/ChoosingaSolver
输出仿真数据
Simulink允许你输入来自于MATLAB工作空间的输入信号和状态数据,同时也允许你在仿真过程中将输出信号和状态数据输出到MATLAB的工作空间。
这就允许你使用标准的或自定义的MATLAB函数来产生仿真系统的输入信号和绘制,分析或后续处理仿真系统的输出。
输入来自MATLAB工作空间的输入数据,输入数据采用的形式:
数组、MATLAB时间表达式、结构体,详情请看Simulink/UsingSimulink/RuningSimulations/ImportingandExportingSimulationData
一.定义输出选项
DataImport/Export配置面板上的Outputoptions让你控制仿真的输出。
你可以在三个选项中挑选
1.细化输出当仿真输出值太粗略时,它提供额外的输出点,这比减小步长大小使输出变平滑来得更快。
细化因数(refinefactor)默认值为1。
细化因数适合变步长求解器,当使ode45时最有用。
Ode45求解器采取大步长,当绘制仿真输出时,你可能会发现这个求解器的输出不够平滑,这时你可以用一个大一些的细化因数重新仿真,值为4时可以提供更为平滑的结果。
不会改变仿真步长大小。
2.产生额外的输出直接定义求解器产生的额外输出点,这会改变仿真步长大小
3.产生指定的输出
仿真在这些时刻产生输出
0,2.5,5,8.5,10
选择细化输出并定义细化因数为2时在这些时刻产生输出
0,1.25,2.5,3.75,5,6.75,8.5,9.25,10
选择产生额外的输出并定义[0:
10]时在这些时刻产生输出
0,1,2,3,4,5,6,7,8,9,10
选择只产生指定的输出并定义[0:
10]时在这些时刻产生输出
0,1,2,3,4,5,6,7,8,9,10
详情请看Simulink/UsingSimulink/RuningSimulations/ImportingandExportingSimulationData
配置参数
配置参数包括以下内容:
求解器面板、数据输入输出面板、优化面板、诊断面板、硬件实现面板、模型参数化面板
1.求解器面板(Solver)允许你定义仿真起始与终止时间,为一个特定的仿真选择和配置仿真器,
它包括以下选项:
仿真时间,求解器选项
求解器选项定义了可以使用的求解器的类型以及该求解器的一些仿真指标。
求解器的默认类型是变步长的ode45,如果系统没有特殊要求,默认类型求解器是最适合的。
2.数据输入输出面板
允许你输入输出数据到MATLAB工作空间,它包括
Loadfromworkspace定义来自MATLAB工作空间的数据
Savetoworkspace定义输出到MATLAB工作空间的数据
Saveoptions定义数据保存和导入的格式
3.优化面板
允许你选择各种选项来改善仿真性能和模型产生的代码性能从而提高执行速度,它包括
•模块化简优化用一个综合的模块来取代一组模块从而加速了模型执行速度
•条件输入分支执行这种优化适合于包含开关(switch)和多口(multiport)开关的模块
•内嵌参数使得在默认的情况下不能改变所有模块的参数
•信号存储再利用使Simulink重复使用分配给输入输出信号的存储缓冲区
4.诊断面板在模型编译或仿真过程中出现不正常的情况时,该面板让你定义Simulink应
该采取什么诊断,并显示警告或错误信息,警告信息不会停止仿真,但错误信息可以。
5.硬件实现面板该面板适合基于计算机系统的模型,如嵌入式控制器。
它允许你定义该模型所代表的系统的硬件特征。
这样在仿真时可检测到目标硬件上可能出现的错误,如硬件溢出。
6.模型参考面板允许你将其它模型包含到该模型里以及将该模型包含到其它模型中
详情见Simulink/UsingSimulink/RuningSimulations/TheConfigurationParametersDialogBox
输出仿真数据诊断仿真错误
如果仿真过程中出现错误,Simulink就会停止仿真,打开出错的子系统并在仿真诊断浏览器(SimulationDiagnosticsViewer)中显示错误。
仿真诊断浏览器包含一个错误摘要面板和一个错误信息面板
1.错误摘要面板对于每个错误显示以下信息
•Message信息类型
•Source出现错误的模块名字
•Reportedby报告错误的组件(如,Simulink,Stateflow,Real-Time)
•Summary简化的错误信息
2.错误信息面板一开始显示列在错误摘要面板中的第一条错误信息的内容
Simulink在显示浏览器的同时还打开了包含第一个错误的子系统并高亮显示错误模块。
输出仿真数据分析仿真结果
看输出轨迹,输出轨迹可用三种方法绘制
1.将信号送入Scope和XYGraph模块
2.将输出写入返回变量中,用MATLAB绘图命令
3.用ToWorkspace模块将输出写入工作空间,再用MATLAB绘图命令画出结果。
用Scope模块分析仿真结果
用返回变量分析仿真结果
用ToWorkspace模块分析仿真结果
第二章CommunicationBlockset应用
CommunicationBlockset是Simulink扩展的一个丰富的模块库,用于设计和仿真通信系统的物理层及其组成部分。
该模块的关键特征是
•用于设计和仿真通信系统物理层,包括调制,信源编码,信道编码,信道,均衡
•可以调整模型并对结果可视化
•与通信工具箱的结合便于仿真后分析
安装CommunicationBlockset时要求的相关产品
•MATLAB
•Simulink
•SignalProcessingToolbox
•CommunicationToolbox
•SignalProcessingBlockset
CommunicationBlockset的模块库的功能介绍
一.CommSources库内容
1.RandomDataSources子库产生随机数据来模拟信号源,它可以产生随机比特(BernoulliBinaryGenerator和BinaryErrorPatternGenerator)和随机整数(RandomIntegerGenerator和PoissonIntegerGenerator)
2.NoiseGenerators子库产生不同分布的随机噪声来模拟信道噪声(高斯、瑞利、莱斯、均匀分布)
3.SequenceGenerators产生序列,用于通信系统中的扩频或同步。
包括伪随机序列、同步码、正交码。
二.Channels(信道)库内容
1.AWGNchannel,加性高斯白噪声信道。
2.BinarySymmetricChannel,二进制对称信道,通过模2和给二进制信号加噪声。
3.MultipathRayleighFadingChannel和RicianFadingChannel模拟移动通信在现实世界中的现象,如多径散射效应、多普勒频移等。
MultipathRayleighFadingChannel适合于在接收机与发射机之间有一条或多条主反射路径的情况,RicianFadingChannel适合于在接收机与发射机之间是直接视距路径的情况。
三.CommFilers(通信滤波器)库内容
这个库所包括的模块可以用于滤波或脉冲成型(发送滤波器或接收滤波器)。
这些操作在控制带宽、码间干扰和信噪比方面是必需的。
该库中提供的滤波功能:
♦用升余弦滚降滤波器滤波。
升余弦滚降滤波器被用于脉冲成型和匹配滤波是非常普遍的,
下图解释了升余弦滚降滤波器两种典型的使用。
♦用高斯滤波器滤波
♦用理想矩形脉冲将信号成型
♦实现integrate-and-dump操作或加窗求积分。
当系统发射机用一个理想矩形脉冲模型时,
integrate-and-dump操作经常在接收机模型中使用。
integrate-and-dump也可用在光纤、扩频通信系统中如CDMA。
四.CommSinks(信宿)库内容
该库提供了信宿和显示设备便于对通信系统性能进行分析,完成以下功能
♦计算错误统计数据(ErrorRateCalculation模块)
♦画眼图(Discrete-TimeEyeDiagramScope模块)
♦生成散点图(Discrete-TimeScatterPlotScope模块)
♦画信号的轨迹图(Discrete-TimeSignalTrajectoryScope模块)
五.Equalizers(均衡器)库内容
时间弥散信道能引起码间干扰(符号间干扰ISI)。
比如,在多径散射环境中,接收机就会看到一个延时的发送符号,这会干扰另一个符号的传输。
均衡器试图减小ISI这样就可以提高接收机的性能。
该库中模块包含三类结构完全不同的均衡器:
♦线性均衡器
♦判决反馈均衡器
♦MLSE(最大似然估计)均衡器,用于维特比算法。
六.ErrorDetectionandCorrection(检纠错)库内容
当消息在数字通信系统中传输发生错误时,差错控制技术可以检测到错误并且有可能纠正它。
为了实现这个功能,编码器不但发送信息符号而且还发送额外的冗余符号。
解码器解释收到的内容,同时用冗余符号来检测或纠正传输中出现的任何错误。
如果传输信道噪声很多或数据对噪声非常敏感,那你就可以用差错控制编码技术。
根据数据或噪声的性质,你可以选择特定类型的差错控制编码。
该库包含三类差错控制编码:
♦分组编码(blockcoding),包括循环码、BCH码、汉明码、Reed-Solomon码。
♦卷积编码(convolutionalcoding)
♦循环冗余检测编码(cyclicredundancycheck)(CRC)
七.Interleaving(交织)库内容
交织器按照一个映射来改变符号的排列顺序。
对应的解交织器用反映射来恢复符号原来的顺序。
交织和反交织在减少通信系统中的突发性错误这方面是很有用的。
该库中的模块提供两大类交织器:
♦分组交织、
♦卷积交织
八.Modulation(调制)库内容
该库包含两个子库
♦AnalogPassbandModulation,提供模拟调制技术。
♦DigitalBasebandModulation,提供数字调制技术。
九.RFImpairments(射频损害)库内容
模拟在接收机中射频(RF)对基带信号带来的损害
♦非线性和同相分量/正交分量不平衡
♦相位/频率偏移和相位噪声
♦接收机的热噪声和自由空间路径损耗
十.SequenceOperations(序列变换)库内容
对序列进行补零(insertzero)、打孔(puncture)、加扰(scrambler)、解扰(descrambler)、等操作。
十一SourceCoding(信源编码)库内容
信源编码,也被称作量化或信号格式化,它是一种处理数据的方法,目的是为了减少冗余或为后续的处理做准备。
模数变换和数据压缩是两类信源编码。
该库中的模块提供标量量化、压缩扩张器以及差分编码,不提供矢量量化。
库中的模块可以
♦用划分和码簿来量化信号
♦用µ-law或A-law压缩器或扩张器来压扩信号
♦用差分编码对信号编码或解码
十二Synchronization(同步)库内容
为了正确的翻译信息,通信系统的接收机必须与对应的发射机同步,这在模拟与和数字域都可以被实现。
数字接收机必须在符号周期内的适当时刻对信号进行抽样,并且必须估计载波相位。
模拟器件如压控振荡器(VCO)和锁相环(PLL)就能使接收机根据输入的信号参数来调节它自身的工作方式。
该库中的模块实现了几种用于定时恢复与载波恢复的算法,还包含了一些底层的器件,你可以用它们来构建自己的锁相环。
十三.UtilityBlocks(功能模块)库内容
♦AlignSignals模块,通过求两个信号间的延时将两个信号的符号时钟对齐
♦BipolartoUnipolarConverter模块,实现将双极性信号映射成在[0,M-1]的单极性信号
♦BittoIntegerConverter模块,实现将彼特向量影射为整数向量
♦ComplexPhaseDifference模块,输出两个复信号的相位差
♦ComplexPhaseShift模块,通过第二个输入值对第一个复输入信号进行相移
♦DataMapper模块,实现将一整数从一种编码方案映射到另一种编码方案
♦FindDelay模块,求两信号之间的延时
♦IntegertoBitConverter将整数向量映射为比特向量
♦UnipolartoBipolarConverter将在[0,M-1]的单极性信号映射成双极性信号
2.2通信系统建模
这部分首先演示如何运行一个现有的Simulink模型和如何搭建一个简单的模型,然后解释如何用CommunicationBlockset搭建典型的通信系统模型,这些模型演示了如何用模块集以及揭示了模块集的一些重要特征。
运行一个Simulink模型
这部分描述了一个包含CommunicationBlockset的通信系统的演示模型。
模型显示了具有加性噪声的散点图(scatterplot)。
目的是为了让你熟悉Simulink模型的基础以及它们是如何运行的。
在MATLAB命令窗口输入phasenoise_sim,打开一个模型,如图
该模型显示了模拟相位噪声对正交幅度调制(QAM)的影响,它用图形来表示一个通信系统的数学模型。
该通信系统先产生随机信号,然后用QAM对它进行调制,最后添加上噪声来模拟信道。
这个模型还包含了一些便于显示符号错误率和已调信号散点图的组件。
模型中的模块和连线描述了信号之间的数学关系:
•RandomIntegerGenerator模块(标有"RandomInteger”),产生的随机整数(在0—255之间)序列信号
•RectangularQAMModulatorBaseband模块用基带256进制的QAM调制信号
•AWGNChannel模块通过给已调信号加上高斯白噪声来模拟有噪声的信道
•PhaseNoise模块将噪声引入复输入信号的角度中
•RectangularQAMDemodulatorBaseband模块解调已调信号
此外,以下的模块有助于你理解仿真
•Discrete-TimeScatterPlotScope模块(标有“AWGNplusPhaseNoise”),显示叠加了噪声的信号的散点图
•ErrorRateCalculation模块计算收发信号间不同的符号个数
•Display模块显示错误符号比率(SER),错误符号总数和仿真过程中处理的总符号数
所有的这些模块都包含在CommunicationBlockset和Simulink中。
你可以通过右击模块从它的相关菜单中选help来了解更为详细的内容。
一.正交幅度调制简介
这个模型模拟正交幅度调制(QAM),QAM是将数字信号变换成复信号。
该模型把信号调制到一串复数上,这些复数位于复平面的一个点阵上,我们称它为信号的星座。
基带256进制QAM的星座如下图:
二.运行仿真
从模型窗口的菜单栏选Simulation----Start运行仿真,选Simulatilon------Stop停止仿真。
当你运行仿真时,一个新的窗口出现,它显示了叠加了噪声的已调信号的散点图,如下图:
从图上可以看出,散点图上的点并不完全位于256进制QAM的星座上,这是因为加性噪声。
而这些点呈现放射状的图案是由于相位噪声,它改变了复已调信号的角度。
三.显示错误率
Display模块(标有“ErrorRateDisplay”)显示信道噪声引起的错误。
当你运行仿真时,这个模块里就会出现三个显示框,如下图,他们显示了ErrorRateCalculation模块的向量输出。
显示的三项分别为:
•第一项是误符号率(SER)
•第二项是错误符号总数
•第三项是发送的符号总数
四.设置模块参数
你可以通过设置模块的参数来改变它的功能。
双击要修改参数的模块,打开了一个对话框,有时也称该对话框为模块的mask。
以下是PhaseNoise模块的参数对话框:
要改变相位噪声的值,在Phasenoiselevel(dBc/Hz)域输入新值,然后点OK。
试输入两个新值,一个比当前值大,一个比当前值小,看散点图有何变化。
你也可以改变AWGNChannel模块中噪声的值。
双击该模块,打开它的参数对话框,修改Es/No(dB)参数值来改变信噪比,减小这个值就是相当于增加了噪声电平。
你可以通过改变这些或其他参数,然后再运行仿真来对该模型做实验。
比如
•修改PhaseNoise模块的参数Phasenoiselevel(dBc/Hz)为—105
•修改AWGNChannel模块的参数Es/No为100
这样几乎去掉了模型中的所有噪声。
当你再运行仿真时,散点图就变成了256进制QAM的星座图
五.显示相位噪声曲线
双击标有“DisplayFigure”的模块就可显示多个仿真的结果
图中每条曲线都是误比特率曲线,对于固定的相位噪声值它们是信噪比的函数。
得到该图请参看RuningMultipleSimulations这部分。
六.看更多的演示(Demos)
在命令窗口通过键入demo或在帮助浏览器中选择Demos。
操作方式如下图:
搭建一个简单模型
前一节,我们运行了一个现有的模型。
这一节我们建一个简单的Simulink模型:
用示波器显示一个正弦波。
建模基本步骤
●用commstartup设置仿真参数
●打开一个新的模型窗口
●打开模块库
●将模块移入模型窗口
●连接模块
●设置模块参数
●设置仿真参数
●运行模型
下面我们按以上步骤来建模显示正弦波
一.用commstartup设置仿真参数
建模之前先在MATLAB命令窗口输入命令commstartup
这是为了
•将Simulink参数Booleanlogicsignals设置为off
•将仿真参数设置为默认值,默认值对通信模型是最佳的
CommunicationBlockset不支持布尔型的信号。
如果你想将输出是布尔值的Simulink模块,如LogicalOperator模块,和CommunicationBlockset中的模块在一个模型中一起使用,那么在建模前就要输入commstartup。
二.打开一个新的模型窗口
从菜单栏选File—New—Model,打开一个空的模型窗口,如下图:
三.打开模块库
点击MATLAB工具栏上图标
打开Simulink库浏览器,如下图:
库浏览器左边的面板显示了已安装的产品,每个产品都有自己的库。
点击+打开库,同时右边面板显示库中的内容。
库浏览器可以完成
♦寻找模块————你可以在最上面的框中输入要寻找的模块,然后点击望远镜
♦说明模块的功能————当你在右边面板中选中模块时,中间的框会显示模块的说明
♦打开新的模型窗口
♦打开已保存的模型
你可以在CommunicationBlockset,SignalProcessingBlockset和Simulink库中找到通信系统模型所需要的模块。
四.将模块移入模型窗口
接下来将Simulink库浏览器中的模块移到模型窗口内。
1.打开SignalProcessingBlockset子库
2.点击DSPSources,从右边面板寻找SineWave模块
3.点击SineWave模块将它拖入模型窗口
4.在浏览器左边面板点击DSPSinks,在右边面板找到VectorScope模块,把它拖入模型窗口。
如下图:
五.连接模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Simulink 使用
![提示](https://static.bdocx.com/images/bang_tan.gif)