电信专业毕业论文_基于matlab的psk系统仿真(编辑修改稿)内容摘要:

芯片可接受的代码,大大提高了现代电子通信设备的研发效率。 (8)MATLAB 的程序执行效率比其它语言低。 MATLAB 程序通常是解释执行的,在执行效率和速度上低于其它高级语言,当然如果对执行效率有特别要求,可以采用 C语言编制算法,然后通过 MATLAB 接口在 MATLAB 中执行。 事实上, MATLAB自带的许多内 部函数均是用 C语言编写并编译的,因此利用 MATLAB 内部函数的程序部分运行速度并不比其它语言中相应函数低。 20世纪 70 年代,美国新墨西哥大学计算机科学系主任 Cleve Moler 为了减轻学生编程的负担,用 FORTRAN 编写了最早的 MATLAB。 1984 年由 Little、 Moler、Steve Bangert 合作成立了的 MathWorks 公司正式把 MATLAB 推向市场。 到 20 世纪 90 年代, MATLAB 已成为国际控 制界的标准计算软件。 MATLAB 产品族可以 应用于 数值分析 、 数值和符号计算 、 工程与科学绘图 、 控制 系统的设计与仿真 、 数字图像处理 技术 、 数字信号处理 技术 、 通讯系统设计与仿真 、 财务与金融工程 等领域。 MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。 附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。 **理工大学 20xx 届毕业论文 11 MATLAB/Simulink 仿真 转换方法 MATLAB/Simulink 属 于一种通 用的科学 计算和系 统仿真语 言。 在MATLAB/Simulink 下,从数学模型到计算机仿真模型的转换非常容易。 MATLAB/Simulink 提供了三种 ( 1) M 文件编程实现的方法:根据数学模型所建立的方程和数据参数,通过编程实现方程的表示和数值求解。 其特点是灵活性好,数学关系显式地表达在程序语句之中,但是仿 真的直观性方面稍显欠缺,通常在仿真计算完毕之后才能看到结果。 M 文件编程实现的方法是基于数据流的仿真方法。 ( 2) Simulink 方法:可以根据数学模型建立对应的系统方框图,通过所见即所得的方式连接模块,然后选择求解方式和精度,运行仿真。 其特点是直观性好,可以在仿真过程中实时地修改系统模块的参数,并能够实时地显示当前的仿真结果。 Simulink 仿真实现的方法是基于时间流的仿真方法。 ( 3) Simulink 结合 M 文件编程的方法:这是前两种方法的综合应用,同时具备图形界面的直观性和字符界面的强大功能。 事实上, 所有 Simulink 的模块以及系统构建、仿真参数、仿真求解算法等均可通过编程语句实现。 与通过图形界面交互完成的仿真过程相比较,通过编程语句实现将 “手动 ”的仿真过程真正变成了 “自动化 ”仿真过程。 实际中,对于较为复杂的系统,如整个通信接收机的仿真,往往采取 Simulink 结合 M 文件编程的方法。 Simulink 仿真原理 Simulink 软件的简介与特点 Simulink 是 MATLAB 最重要的组件之一,它提供一个 动态系统 建模、仿真和综合分析的集成环境。 在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。 Simulink 具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点 Simulink 已被广泛应用于控制理论和 数字信号处理 的复杂仿真和设计。 同时有大量的 第三方软件 和硬件可应用于或被要求应用于 Simulink。 Simulink 是 MATLAB 中的一种可视化仿真工具, 是一种基于 MATLAB**理工大学 20xx 届毕业论文 12 的框图设计环境,是实现动态系统建模、仿真和分析的一个 软件包 ,被广泛应用于 线性系统 、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink 可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。 为了创建动态系统模型, Simulink 提供了一个建立模型方块图的图形用户接口 (GUI) ,这个创 建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 Simulink 有如下特点 : ( 1) 丰富的可扩充的预定义模块库。 ( 2) 交互式的图形 编辑器 来组合和管理直观的模块图。 ( 3) 以设计功能的层次性来分割模型,实现对复杂设计的管理。 ( 4) 通过 Model Explorer 导航、创建、配置、搜索模型中的任意信号、参 数、属性,生成模型代码。 ( 5) 提供 API 用于与其他仿真程序的连接或与手写代码集成。 ( 6) 使用 Embedded MATLAB™ 模块在 Simulink 和嵌入式系统执行中调用 MATLAB 算法。 ( 7) 使用定步长或变步长运行仿真,根据仿真模式来决定以解释性的方式运行或以编译 C 代码的形式来运行模型。 ( 8) 图形化的调试器和剖析器来检查仿真结果,诊断设计的性能和异常行为。 ( 9) 可访问 MATLAB 从而对结果进行分析与可视化,定制建模环境,定义信号参数和测试数据。 ( 10) 模型分析和诊断工具来保证模型的 一致性,确定模型中的错误。 Simulink 建模和仿真 Simulink 可以对实际的动态系统建模,仿真并实时分析系统输出的变化。 利用 Simulink 仿真动态系统分两步: ( 1) 用户创建一个结构框图,利用 Simulink 模型编辑器,通过系统的输入,传递函数,输出描述数学关系 **理工大学 20xx 届毕业论文 13 ( 2) 仿真系统的模型,并指定开始时间和结束时间 仿真结构图是动态系统数学模型的图形化描述,数学模型由一组方程组表示,包括比例,微分,微分方程。 创建动态系统模型的要素 : 用户可以用 Simulink 软件包建模、仿真和分析模型 输出随时间而改变的系统,这样的系统通常是指动态系统:利用 Simulink,用户可以搭建很多领域的动态系统,包括电子电路、减振器、刹车系统和许多其他的电子、机械和热力学系统。 使用 Simulink 仿真动态系统包括两个过程。 首先,利用 Simulink 的模型编辑器创建被仿真系统的模型方块图,系统模型描述了系统中输入、输出、状态和时间的数学关系,然后使用 Simulink 根据用户输入的模型信息在一个时间段内仿真动态系统。 本节综合给出了用户在 Simulink中创建动态系统模型时需要理解和掌握的所有建模要素。 ( 1) 方块图 Simulink 方块图是动态系统数学模型的图形化描述, 动态系统的数学模型是由一组方程来表示的,而由方块图模型所描述的数学方程就是众所周知的代数方程、微分方程和 (或 )差分方程。 一个典型的动态系统方块图模型是由一组模块和相互连接的线 (信号 )组成的,这些方块图模型都来源于工程领域,如反馈控制系统理论和信号处理理论等。 每个模块本身就定义了一个基本的动态系统,而方块图中每个基本动态系统之间的关系就是通过模块之间相互连接的线来说明的,方块图中的所有模块和连线就描述了整个动态系统。 方块图模型中的每个模块都属于一 个特定的 Simulink 模块类型,模块的类型决定了模块的输出、输入、状态与时间的关系,在建立系统模型图时, Simulink方块图中可以包含任意数目、任意类型的模块, Simulink 中的模块包括非虚拟模块和虚拟模块。 非虚拟模块是基本系统,虚拟模块则是为了模型方块图组织结构的简化而建立的,它在模型方块图所描述的系统方程定义中不起任何作用、如Bus Creator 模块和 Bus Selector 模块就是虚拟模块,它们的作用只是把信号“ 捆绑 ” 在一起用来简化方块图,而且也增加了模型的可读性。 在 Simulink 中, 方块图 (或者说模型 )表示的是 “ 基于时间的方块图 ” ,其含义如下: **理工大学 20xx 届毕业论文 14 1) Simulink 方块图定义了信号和状态变量的时间关系,方块图的解是通过求解整个时间过程中所有的函数方程来获得的,这个时间过程就是由用户指定的“ 起始时刻 ” 开始,至用户定义的 “ 终止时刻 ” 结束,每次计算都是在一个时间步内求解这些函数关系的。 2) 信号表示的是整个时间范围内的量值,在方块图的起始时刻到终止时刻之间每个时间点上都定义了信号。 3) 信号和状态变量之间的关系是通过模块所表示的一组方程定义的,每个模块都是由一组方程 (也称为模块方法 )组成的, 这些方程定义了输入信号、输出信号和状态 变量之间的关系。 方程定义中的所有值称为参数,也就是方程中的系 ( 2) 系统函数 每个 Simulink 模块的类型都是与一组系统函数相关联的,系统函数指定了模块的输入、状态和输出之间的时间关系,这个系统函数包括: 输出函数 :它表示的是系统输出、输入、状态和时间的关系。 更新函数 :它表示的是系统离散状态的将来值与当前时刻、输入和状态之间的关系。 微分函数 :它表示的是系统连续状态对时间的微分、模块当前状态值和输入之间的关系。 这里, t 是当前时间, x是模块的状态, u 是模块的输 入, y是模块的输出,xd是模块的离散状态的微分,是模块连续状态的微分,在进行仿真过程中,Simulink 利用系统函数计算系统的状态值和输出值。 ( 3) 状态 Simulink 模块可能包含有状态,状态 (state)是确定模块输出的变量,它的当前值是模块状态和(或)前一时刻输入值的函数,含有状态的模块必须存储前一时刻的状态值,用以计算当前时刻的状态值,因此说,状态是可以保持的。 由于含有状态的模块必须存储前一时刻的状态值和 (或 )输出值用以计算当前时刻的状态值,因此这样的模块都需要内存。 模块的输出是模块输入、状态和 时间的函数,描述模块输出对输入、状态和时间的特定函数取决于模块的类型。 Simulink 模型有两种状态类型:离散状态和连续状态。 连续状态是连续变化的,如汽车的位置和速度;离散状态是连续状**理工大学 20xx 届毕业论文 15 态的近似,这些状态在有限的时间间隔 (周期性或非周期性 )内进行更新 (重新计算 ),例如,在数字里程表中显示的汽车位置就是离散状态,这些位置在每秒内进行更新,如果离散状态时间间隔趋近于零,那么离散状态也相当于连续状态。 Simulink 模块明确定义了模型的状态,尤其是需要某些先前时刻的输出或所有输出才能计算当前输出的模块,这些模块明确 定义了两个时间步之间需要保存的一组状态,因此说,这样的模块都是有状态的:图 21是含有状态的模块中输入、输出和状态的图形表示。 模型中状态的总数是模型中所有模块定义的所有状态之和,为了确定模型 中的状态总数, Simulink 需要分析模型中所包含的模块类型,然后再确定模块类型所定义的状态数目, Simulink 会在仿真汇编阶段进行这个工作。 举例来说,Simulink 的 Integrator(积分器 )模块就是 — 个含有状态的模块。 Integrator 模块输出的是由仿真起始时刻到当前时刻的输入信号的积分值,当前时刻的输出值取决于在此时刻之前 Integrator 模块的所有输入值,事实上,积分值只是Integrator 模块的一个状态。 再举一个例子, Simulink 的 Memory 模块也是一个含有状态的模块, Memory 模块存储当前仿真时刻的输入值,并在此时刻之后输出这些值,因此 Memory 模块的状态就是前 — 时刻的输入值。 Simulink 的 Gain 模块是个无状态模块, Gain 模块的输出值是输入信号值乘以增益常数,它的输出完全是由当前的输入值和增益来决定的。 此外, sum 模块和 Product 模块也是无状态模块,它们的输出均是当前输入的函数,因此都是无状态的。 第一: 连续状态。 计算连续状态需要知道状态的变化率或微分,由于连续状态的变化率自身也是连续的 (即它自身也是 — 个状态 ),因此计算当前时间步上连续状态的值需要从仿真的起始 时刻开始对状态的微分值进行积分,这样,在Simulink中建立连续状态的模型需要 Simulink能够表示积分操作并描述每一时刻上状态微分的计算过程。 Simulink方块图使用 Integrator模块表示积分过程,并利用与 Integrator 模块相连的一串操作模块表示计算状态微分的方法,这串与 Integrator 模块相连的模块实际上就是图形化的常微分方程 (ODE)。 通常,除了简单动态系统,对由对常微分方程所描述的真实世界动态系统中状态的积分是不存在解析法的,对状态积分需要利用称为 ODE 算法的数值方法,这些不同 的方**理工大学 20xx 届毕业论文 16 法需要在计算精度和计算负荷之间进行折衷选择。 Simulink 给出了最通用的 ODE积分方法的计算机实现,并允许用户在仿真一个系统时确定使用那一种方法来积分由 Integrator 模块表示的状态。 计算当前时间步上连续状态的值需要从仿真的起始时刻开始对这个状态值进行积分,数值积分的精。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。