毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

MATLAB的通信系统仿真+文献综述+BFSK源程序(7)

时间:2017-02-13 12:37来源:毕业论文
命令行方式一般用于执行批处理方式的仿真,它是通过MATLAB命令sim启动仿真进程,例如,在matlab工作区中输入sim (rayleighfading)命令后,simulink开始运行仿真


命令行方式一般用于执行批处理方式的仿真,它是通过MATLAB命令“sim”启动仿真进程,例如,在matlab工作区中输入“sim (‘rayleighfading’)”命令后,simulink开始运行仿真模型rayleighfading。如果需要多次运行仿真程序,可以把这些命令编写成—个M文件,然后在matlab工作区中执行这个M文件就可以了。用命令行方式启动仿真模型后,simulink并不自动打开相应的模型,因此不能直接观察仿真的进程,但是仍然可以通过各种显示不模块观察输出信号。
matlab把工作区和simulink集成在一起,因此仿真模型的两种运行方式可以交互使用。一般情况下,仿真结果保存到上作区中,用户可以在仿真结束之后对仿真结果进行分析和加工,并且根据仿真数据绘制各种图表。
2.4 S-函数介绍
S-函数是系统函数(System-functions)的简称。在很多情况下,Simulink 模型库(Simulink Library)中的模块不能完全满足用户的要求,这时候需要由用户自己来编写相应的代码。M文件虽然能够用来编写 MATLAB 函数代码,但是它不具备与 Simulink 的接口,因此难以与Simulink其他模块一起使用。S-函数则提供了函数代码与 Simulink之间的接口,使得用户编写的代码既能够像 Simulink 模型库中的模块那样具有统一的仿真接口,同时能够实。各种灵活的控制和计算功能。从这个意义上说,S-函数是对 Simulink模块库功能的扩展。S-函数的代码既可以用 MATLAB 语言编写,也可以用其他通用的编程语言(如 C、C++、Ada 或 Fortran等)编写,后者具有更强的控制能力,它们被编译成 MEX(MATLAB EXecutable)文件,并且在仿真过程中动态装载。
通过 S-函数可以方便地编写仿真代码以创建自己的 Simulink模块,因此,S-函数是对Simulink模块库功能的扩展。根据S-函数代码使用的编程语言,S-函数可以分成 M 文件 S-函数(即用MATLAB语言编写的 S-函数)、C语言 S-函数、C++语言S-函数、Ada语言S-函数以及Fortran语言S-函数等。通过 S-函数创建的模块具有与 Simulink模型库中的模块相同的特征,它可以与 Simulink求解器进行交互,支持连续状态和离散状态模型。
2.4.1 S函数工作原理
每个Simulink模块都可以表示成输入信号 x、输入信号y以及内部状态u之间的关系,如图 2.5 所示。
图2.5  simulink模块基本模型
在某个时刻t,Simulink 模块的内部状态u由两部分组成:连续状态 和离散状态 ,且u= + ,此时输出信号 ,    连续状态的导数 ,离散状态 。Simulink根据连续状态导数方程进行积分运算,得到各个连续状态的数值,同时通过离散状态方程计算离散状态的当前值。这样,Simulink就可以得到各个时刻的状态及其输出信号,实现对仿真结果的求解。 在仿真过程中,每个 Simulink模块的执行过程可以分成 3 个阶段:初始化阶段、仿真循环阶段和仿真结束阶段。在初始化阶段,Simulink把各个模块调入内存,检查模块的数据类型和长度,设置仿真时间间隔,制订仿真模块的执行顺序,以及内存分配。在仿真循环阶段,Simulink按照初始化阶段制定的顺序依次执行各个模块,计算当前时刻的离散状态和输出信号,以小步长积分的方式计算各个连续状态的数值以及由此产生的输出。这个过程一直持续到仿真过程结束,然后Simulink进入仿真结束阶段,清理各种已经分配的资源,同时保存仿真过程中产生的数据。
图2.6 simulink模块仿真流程
对应于仿真流程中的每一个步骤,Simulink中                                                                的S-函数调用预先设定的函数来实现相应的功能。例如,我们可以编写一个mdlInitializeSizes函数实现S-函数的初始化操作,通过mdlDerivatives和mdlUpdate函数在每一个抽样时刻分别计算连续状态变量的导数和更新离散状态的数值,在mdlOutputs函数中计算S-函数的输出信号等。需要指出的是,这些函数的名称都可以由用户自己设定。用户需要在S-函数的主体部分对这些函数进行注册,Simulink通过回调函数(Callback Function)的方式在不同事件发生的时候调用相应的函数。 MATLAB的通信系统仿真+文献综述+BFSK源程序(7):http://www.751com.cn/tongxin/lunwen_2860.html
------分隔线----------------------------
推荐内容