array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 10 -simulink系统仿真 - 爱码网

simulink用于对动态系统进行仿真与建模
10 -simulink系统仿真

一、simulink仿真基础

本节内容:
10 -simulink系统仿真
simulink启动方式
启动之后,点击black model,从而打开模型编辑窗口。
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
看一下simulink中的simulink Library Browser,
注1:左面窗口是模块库列表,单击左面某个模块库则右面显示该模块的子模块库,双击其中一个子模块库图表,则列出此子模块库的所有模块。
注2:注意看:左侧窗口的simulink是基本模块库,左侧窗口除了simulink之外的模块库是专业模块库。
注3:模块是构成仿真模型的基本单元,在模型编辑窗口中,添加所需要的模块,并将各种模块连接在一起,就构成了系统的仿真模型。
10 -simulink系统仿真
simulink模块操作
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
模型创建完成之后,将模型存盘:
10 -simulink系统仿真
模块参数的设置
10 -simulink系统仿真
10 -simulink系统仿真
仿真参数的设置
打开仿真参数设置的方法:
10 -simulink系统仿真
你要重点了解的是左侧窗口的solver的设置,其内容为下图右侧窗口的三个红圈分别代表仿真起始时间、结束时间、选择微分方程求解算法。
10 -simulink系统仿真
10 -simulink系统仿真
运行当前模型:
10 -simulink系统仿真
例:
正弦信号由信号源模块中的正弦信号模块提供
余弦信号还是由正弦信号模块提供,只是相角设置为pi/2
把仿真结果送给示波器模块和XY Graph模块
其中示波器模块设置两个输入端口,分别显示sin t 和con t随仿真时间的变化曲线。
XY Graph模块显示sint对cont的变化曲线。
10 -simulink系统仿真
模型建好后将模型存盘,设置仿真起始时间为0 ~ 2pi,仿真算法为固定步长ode5算法(即5阶龙格库塔算法)
启动仿真,双击示波器模块和XY Graph模块,仿真结果如下:
10 -simulink系统仿真
本节总结:
10 -simulink系统仿真

二、子系统的创建与封装

子系统是指将若干个模块组合到一起形成的新的模块。使用子系统可以减少模型中模块的数量,便于模块的组织与原理。子系统作为独立的模块可以在仿真模型中直接作为标准的simulink模块使用。
本节内容:
10 -simulink系统仿真
1、子系统的创建
两种方法:
10 -simulink系统仿真
例:
以创建y = kx + b子系统为例:

方法一:通过Subsystem(即子系统)来创建子系统。
首先选中Subsystem子系统模块库,将Subsystem模块拖拽到空白区。
10 -simulink系统仿真双击子系统模块,打开子系统编辑窗口,如下图中间所示。我们添加模块最终形成下图右侧所示:
10 -simulink系统仿真
然后输入端添加一个正弦波(即下图的y=sint),输出端添加一个示波器,并将输入端和输出端都连接到示波器。
注:你需要在MATLAB命令行窗口对k、b赋值。
10 -simulink系统仿真
方法二:将已有的模块转换为子系统
10 -simulink系统仿真
操作方法为:
先添加所有模块并创建模块之间关系,然后选中所有模块,然后按下图右侧的三个红圈进行点击选中,然后就形成了下下一幅图的效果。
10 -simulink系统仿真
10 -simulink系统仿真2、对子系统进行封装
首先选中子系统,然后按下图操作,这时将出现封装编辑对话框,如下下一幅图所示
10 -simulink系统仿真
注:我们上面所说的k、b参数就可以在第二个选项卡中设置,从而封装了起来,避免你再去MATLAB命令行窗口赋值了。
10 -simulink系统仿真
下面介绍一下子系统封装编辑器的第二个选项卡
左侧区域为控件,中间区域显示对话框中的控件,右侧显示和修改控件的属性。
双击左侧的edit,中间将出现k、b的编辑,我们可以编辑二者的提示信息的名称。
点击子系统封装编辑器的OK,这时就会让你输入k、b的值。
10 -simulink系统仿真
3、条件执行子系统
10 -simulink系统仿真
使能子系统
注:控制信号既可以是标量也可以是向量。
控制信号为标量时,其大于0时,子系统执行。
控制信号为向量时,其任一个元素大于0,子系统执行。
10 -simulink系统仿真
我们可以直接添加使能子系统,当然了,也可以把原来不是使能子系统的模块添加一个使能模块从而1变成了一个使能子系统。
10 -simulink系统仿真
例:
输入端的分支接到了子系统使能端。
运行如右图所示,这里正弦信号当控制信号。控制信号为负值时,子系统停止执行,输出是零。
10 -simulink系统仿真
触发子系统
10 -simulink系统仿真
触发子系统的触发方式有4种形式
10 -simulink系统仿真
例:
最左侧的是一个信号发生器,双击信号发生器,显示右侧参数编辑框。
幅值设置为4,频率设置为1Hz.
示波器接输入端和输出端,以便于将二者比较。
10 -simulink系统仿真
然后再打开触发子系统参数编辑模块,选择触发事件方式为双边沿触发:
10 -simulink系统仿真
运行结果,示波器图形:
每当锯齿波过0时,子系统开始接受输入值;在两次触发事件之间,子系统维持前一点数值不变。
10 -simulink系统仿真
使能加触发子系统
注:使能信号为正时,触发事件才起作用。
10 -simulink系统仿真

三、S函数的设计与应用

虽然simulink提供了很多模块,但是当这些模块不能满足我们的需求时,我们可以自定义一个模块,即S函数。
本节内容
10 -simulink系统仿真
S函数是非可视化的,需要我们自己去编程
10 -simulink系统仿真
我们使用MATLAB语言编写S函数,为了高效,我们在模板文件上进行写S文件。
在模板文件中,在主函数中可是使用switch case选择六个子函数之一。
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
S函数的应用
10 -simulink系统仿真
看case为0的初始化函数mdlInitializeSizes函数定义:
10 -simulink系统仿真
mdlOutputs函数定义
注:k、b为自定义参数。
10 -simulink系统仿真
好,以上一个主函数,两个子函数,用各自函数名存盘这样S函数就建好了。

在sinmulink模型中使用S函数,必须从用户自定义函数模块库中向模型编辑窗口添加S函数模块,然后在S函数模块的对话框中,输入S函数的文件名。
下图是正弦波模块、S函数模块、示波器模块。双击S函数模块,打开其参数对话框,输入S函数名(因为你可能会有很多个S函数啊,你得选一个吧),输入外部参数k、b
10 -simulink系统仿真
S函数参数对话框:
10 -simulink系统仿真
然后选中S函数模块,打开封装编辑器,在第二个选项卡,设置k、b参数。设置完毕后单击OK按钮,然后退出并赋予k、b值。
运行得到仿真结果:
10 -simulink系统仿真

相关文章: