![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MATLAB/Simulink学习与应用
booksyhay
这个作者很懒,什么都没留下…
展开
-
Stateflow学习笔记之用户指定状态/转移的执行顺序(User specified state/transition execution order)
参数配置在选择C语言为动作语言(Action Language)时,可以选择“由用户指定执行顺序(显式排序)”还是“自动分配执行顺序(隐式排序)”。显式排序选择该选项后,可以由用户指定并行状态的状态,或者多个转移的执行顺序。状态的执行顺序:转移的执行顺序:隐式排序如果取消该选项,则不能手动更改顺序。(如果想要排序,必须先使能参数...原创 2019-03-13 17:26:15 · 3987 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之N维直接查找表(Direct Lookup Table (n-D))
直接查找表所在的库:Simulink -> Lookup Tables. 重点内容1,是根据索引来查看N维数据库中的内容。输入为索引号,只能是整数(如果输入是小数,会自动截为整数)。2,索引号是从0开始,而不是从1开始。3,输出可以为元素(Element),或者列向量(Column),或者二维矩阵(2-D Matrix)。4,当输出为元素时,有N个输入信号,...原创 2019-01-30 14:01:42 · 10095 阅读 · 0 评论 -
matlab崩溃问题记录:matlab has encountered an internal problem needs to close
问题现象安装完Matlab R2016a一个多月了,一直用得好好的。昨天用着用着突然崩溃了。关闭重启都无效。打开MATLAB没有问题,但是打开simulink后就蹦出错误: crash dump崩溃日志:------------------------------------------------------------------------ ...原创 2019-01-30 12:37:36 · 30799 阅读 · 45 评论 -
simulink仿真demo临摹笔记之在stateflow中使用总线(结构体)&集成自定义代码
临摹对象sfbus_demo 模型简介先看一下整体外观:再看看stateflow的chart: 功能说明重点在于,stateflow中能使用总线信号作为输入。图形函数的参数可以设置数据类型。 重要步骤1,PreLoadFcn的回调函数中,要加载bus_objects:加载后,工作区中会有这3个总线的定义: 2,设置输入、输出和...原创 2019-02-15 09:38:31 · 3147 阅读 · 0 评论 -
深入研究simulink建模与仿真之小数转换为整数的舍入模式(圆整模式、取整模式)
导言simulink中有些模块可以配置整数的舍入模式,比如增益模块:默认为Floor模式。 Floor地板模式。将正值和负值朝负无穷大方向舍入。等同于 MATLAB floor 函数。举例:Floor模式 1 1 1.4 1 2.5 2 3.6 3 0 0 -1 -1 -1.4 -2 ...原创 2019-01-29 14:04:17 · 12100 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之使用链接模块(库链接Library Link)
如果有一些功能模块比较稳定,做好后可以封装到库模型文件里面,以供其他模型调用。 参考模型sf_mask_lib.slxsf_mask_basic.slx 操作步骤1,先创建一个库模型:File -> New -> Libraty 2,添加chart模块到库模型中,然后对其进行封装:3,新建一个模型:File -> New -&g...原创 2019-01-23 10:26:03 · 13581 阅读 · 1 评论 -
深入研究simulink建模与仿真之信号线上的几种不同的图标
先来看看一个简单模型中,信号线上的不同图标: 信号解析图标信号解析图标是一个蓝色小叉子。先双击信号线,添加信号标签(信号名称),再打开属性对话框,勾选“Signal name must resolve to signal object”。选中该选项后,信号线的名称前面就会显示信号解析图标: 说明信号解析图标只表示信号的 Signal name...原创 2019-01-28 10:47:12 · 15336 阅读 · 1 评论 -
深入研究simulink建模与仿真之输入端口模块(Inport)的几种不同的图标
在临摹学习时,经常会看到demo中的Inport模块有多种不同的形式,现总结一下。 默认图标从Ports & Subsystems库中拖出来的输入端口模块的默认图标如下:默认参数配置为: 数据类型为总线有的例程中Inport的图标为双环形:原因是,该端口的数据类型为总线。比如,先在BusEditor中添加myBus对象,再将输入端口的数据类型配置...原创 2019-01-28 09:27:27 · 23998 阅读 · 2 评论 -
simulink仿真临摹笔记之stateflow的更新方法(Update method)
对于初学者来说,临摹是最高效的学习路径。一,临摹对象概要这次的临摹对象是stateflow中的sf_abs模块。流程图里面:正常的仿真结果为: 二,问题现象我从零开始一步一步搭建出来的模型的仿真结果为: 三,原因分析先是怀疑解算器的参数配置得不对。再检查一下,没有问题啊,变步长,离散算法。 然后怀疑是sine wave的参数。...原创 2019-01-16 19:47:35 · 1338 阅读 · 1 评论 -
simulink仿真临摹笔记之stateflow的操作语言(Action Language)
对于初学者来说,临摹是最高效的学习路径。一,临摹对象概要这次的临摹对象是stateflow中的for循环。先在matlab命令窗口中输入”sf_for"打开demo看看: 很简单。stateflow的状态机里面也很简单。 二,临摹步骤那就开始吧。1,先在simulink模型中拖两个模块进来:因为For这个chart还没有配置输出信号,目前无法和s...原创 2019-01-16 19:26:11 · 3564 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之N维查找表(n-D Lookup Table)(插值算法)
模块简介所在库:Simulink -> Lookup Tables说明:这3个模块的功能是一样的,区别是默认的表数据维度不同。 插值算法默认的算法是线性算法:输出方式 内插算法有四种:当输入位于两个断点值之间时,模块将根据相邻断点内插输出值。大多数查找表模块提供了以下内插方法: “Flat” - 禁用插值,并使用名为 “Use I...原创 2019-01-30 14:24:54 · 28879 阅读 · 2 评论 -
Simulink建模与仿真学习笔记之组合逻辑(Combinatorial Logic)
模块概要模块名称:Combinatorial Logic所在库:Logic and Bit Operations 模块功能:实现真值表。 模块外形: 默认参数: 模块分析:默认参数中的真值表为3路输入,2路输出。由于有3路输入,因此真值表中有2^3 = 8行。每一行的输出元素有2个。 实例分析1,加法电路假设...原创 2019-02-27 16:40:14 · 6263 阅读 · 2 评论 -
Matlab mex -setup 找不到编译器:为MATLAB安装MinGW64 Compiler编译器
问题现象在学习S-function时,需要编译C语言写的S函数。使用mex编译时提示出错。>> mex -setup错误使用 mex未找到支持的编译器或 SDK。您可以安装免费提供的 MinGW-w64 C/C++ 编译器;请参阅安装 MinGW-w64 编译器。有关更多选项,请访问 http://www.mathworks.com/support/compilers/R...原创 2019-02-13 13:33:18 · 20195 阅读 · 14 评论 -
Simulink建模与仿真学习笔记之常用快捷操作(快捷键)
以下是我整理的常用快捷操作。熟练使用后,可以大幅度提高建模的效率。快捷操作连接模块:按住Ctrl点击目标模块先选择源模块,再按住Ctrl时点击目标模块。特别是有多个模块连接到同一个模块时很有用。比如,要把3个正弦信号连接到mux:先选中3个源模块:按住ctrl,点击目标模块mux,则一下子把3个模块都连上了:查找并添加模块:直接输入熟练之后,...原创 2019-03-04 18:58:47 · 25991 阅读 · 11 评论 -
Stateflow学习笔记之状态图的内部转移(inner transition)
处理内部转移的事件考虑下图所示的状态图。状态A有一个内部转移。转移动作为A_two。状态B有一个指向自身的外部转移(自循环转移self loop transition)。注意,这个不是内部转移!后面将会看到差别。初始化完成后,状态A为活动状态。然后状态图进入休眠。发生事件时,不转移到外部状态假设条件C_one为FALSE。当事件E_one发生时,状...原创 2019-03-14 14:58:53 · 7150 阅读 · 8 评论 -
Stateflow学习笔记之状态图转移实例
从一个状态退出,进入另一个状态 考虑以下状态图。假设当前的活动状态为A.A1。假设变量的值为:x = 5, y = 2, z = 0.接下来的执行步骤为:判断状态A是否有向外的转移。有,且满足[x>4]的条件。转移有效。 将状态A标记为“退出状态”,执行状态A的退出动作:z = z + 1。现在z = 1。 将状态B标记为“进入状态”,执行状态B的...原创 2019-03-14 13:31:47 · 6142 阅读 · 0 评论 -
Stateflow学习笔记之流程图转移的决策(判定)及执行顺序
流程图中转移的类型在执行活动图或状态的转移前,Stateflow将转移按以下类型进行分组:默认转移:从相同父级状态开始的所有默认转移; 内部转移:源自状态,并完全驻留在该状态内的所有转移; 外部转移:源自相应的状态,但至少部分地位于该状态之外。每一组都可能会包含其他组的转移段。比如,下面这个例子:在此示例中,状态A包含内部转移和默认转移。这些转移连接到一个结点,结...原创 2019-03-14 09:16:12 · 9354 阅读 · 2 评论 -
Simulink建模与仿真学习笔记之子系统的封装(Mask)
参考样例slexMaskingExample 菜单和快捷方式 右键快捷菜单: 快捷键:Ctrl + M Mask Editor主界面:参考:Mask Editor的使用说明:Mask Editor 概述https://ww2.mathworks.cn/help/simulink/gui/mask-editor-overview.ht...原创 2019-02-25 10:26:35 · 10954 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之Stateflow子图(Subchart)
子图(Subchart)如同simulink中有”子系统“,stateflow中也有”子图“。先看看几种不同的子图及其外观。以下分别是:状态,子图,原子子图,链接原子子图。 其中,链接子图一定是原子子图。它指向库文件中的chart. 示例示例简介模型文件:sf_atomic_sensor_pair.slxchart内部: 文件:sf_at...原创 2019-02-19 16:33:27 · 13422 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之真值表(Truth Table)
1,用法既可以在simulink中使用,也可以在stateflow中使用。1.1 Simulink中使用真值表Simulink中,选择库浏览器=》Stateflow => Truth Table 默认只有一个输入端口u和一个输出端口y。如果要添加端口,先打开Model Explorer,再在其中添加数据。添加后: 1.2 Stateflow的...原创 2019-02-19 14:29:33 · 12888 阅读 · 1 评论 -
深入研究simulink建模与仿真之定点数据类型fixdt
定点数基础众所周知,计算机中所有的信息都是用二进制0和1来表示的,数当然也不例外。用一连串的0和1最方便表达的就是自然数,比如8位的二进制数很容易表示0~255这256个自然数。负数也好办,用补码即可。最高位是符号位,0代表正数,1代表负数。0000 0000 ~ 0111 1111用来表示0~127;1000 0000 ~ 1111 1111用来表示-128 ~ -1。那么,小数是怎么表...原创 2019-02-28 16:59:26 · 19292 阅读 · 9 评论 -
我的MBD自学之路(Matlab, Simulink, Stateflow)
回顾这段时间的自学历程,简单地总结一下。MATLAB知识框架先广泛的阅读一些关于MATLAB基础知识、快速入门之类的文章,先掌握MATLAB知识框架。从MATLAB产品上来看,MATLAB本身是基础,在此之上才有simulink仿真,再往上才有Stateflow。因此,确定学习路线,分三个大的部分:MATLAB、SIMULINK、STATEFLOW。再看看MAT...原创 2019-02-28 11:19:51 · 23199 阅读 · 12 评论 -
simulink仿真demo临摹笔记之子系统(库)的封装(Mask)
临摹对象selfModifying_example路径:MATLAB\R2016a\help\toolbox\simulink\ug\examples\masking 模型分析打开模型后,外观如下。 首先,这个模型跟平常的模型最大的不同是,左下角有把锁,前景是灰色的,移动模块时会有错误提示:这是一个锁定的库(locked library)。解锁后可正常编辑。...原创 2019-01-22 15:04:48 · 1821 阅读 · 1 评论 -
深入研究simulink仿真之模型工作区(Modal Workspace)
打开matlab时,可以看到工作区中的变量。模型也可以使用工作区的变量。其实,模型也有其自身的工作区,即Modal Workspace。一,问题现象先来看一下自带的demo:sldemo_househeat临摹时,就算把所有模型直接拷贝到新的空白工程中(Ctrl+A, Ctrl+C, Ctrl+V),仿真时也会报错。二,原因分析原因是,在gain模块...原创 2019-01-16 15:55:43 · 13510 阅读 · 3 评论 -
深入研究simulink仿真之显示信号的值
在启动仿真时,如果想查看各条线上的信号值,该如何做呢?比如: 答案在这里: 或者在这里: 最后一级的子菜单的功能分别为:Remove All Value Labels:清除所有的数值标签; Show Value Label of Selected Port:选择哪根线,就显示哪根线当前的数值。 Show Value Label When Hoveri...原创 2019-01-16 14:08:51 · 6481 阅读 · 2 评论 -
Simulink改变信号线的显示颜色
信号线的显示颜色由以下几个配置参数的影响:1,模块的前景色。改变模块的前景色,则会改变该模块输出信号线的颜色。以R2010a版本中自带的triggeredsub这个Demo为例,打开模型后显示的效果为:原因是设置了“Signal Generator"和”Sine Wave“的"Foreground Color"属性: 2,采样时间查看采样时间信息时,也会改变...原创 2019-01-14 08:58:20 · 13122 阅读 · 0 评论 -
simulink仿真demo临摹笔记之用stateflow实现CDPlayer
首先,还是那句话:对于初学者来说,临摹是最好的学习路径。 临摹对象官方自带的demo: 输入sf_cdplayer即可打开该模型。(说明:MATLAB版本为R2016a)该模型模拟的是一个CD/FM/AM播放机的处理流程。仿真时会打开一个图形用户界面:功能简介:Radio Request按钮组中选择功能:播放CD、FM还是AM。当选择播放CD时,需...原创 2019-01-18 15:29:43 · 1607 阅读 · 0 评论 -
MATLAB图形用户界面(GUI)中按钮组(Button Group)和面板(Panel)这两种控件的区别
按钮组中的单选按钮是互斥的,面板中的单选按钮则类似于复选框。 按钮组中选择某一个单选按钮(Radio Button)后,其他的自动变成不选的状态。 面板中的单选按钮每一个都可以选择,也都可以取消选择。如果要实现单选的效果,需要在单选按钮回调中设置其他按钮的Value属性的值. 不只是单选按钮有这种效果,切换按钮(toggle button)也是这样的:如...原创 2019-01-18 10:31:30 · 27600 阅读 · 0 评论 -
simulink仿真demo临摹笔记之输出图形函数
临摹对象:sf_gfexport功能说明: 在Caller的chart里面会调用Callee里面的图形函数。 Caller里面调用了3个函数:is_A_active(); send_event_to_A(); send_event_to_B(); Callee里面提供了这3个图形函数: 问题现象临摹之后,直接仿真,提示在Caller里面...原创 2019-01-17 15:07:02 · 987 阅读 · 0 评论 -
simulink仿真demo临摹笔记之stateflow的超级步骤(Super Step)
临摹对象:sf_superstep两个chart图里面的控制逻辑完全相同:解算器配置为固定步长: 仿真结果但是,两者运行结果却不同: 上图没有使用超级步骤,是慢慢地,一步一步地升到3的。下图使用了超级步骤,是直接变到3的。那么,是哪里的配置有差异呢? 使能超级步骤(Super Step):在stateflow里面,配置chart的...原创 2019-01-17 13:50:07 · 2409 阅读 · 0 评论 -
simulink仿真demo临摹笔记之stateflow自动生成输入输出变量/使用workspace中的变量作为初始值
临摹对象:sf_fromworkspace 模型说明:这个模型中的chart使用了两个变量:gain和delay。如果搭建完成模型后,没有添加这两个变量,就直接开始仿真,会提示是否需要创建未定义的变量: 这两个变量定义为局部变量(local)。但是其初始值类型为Parameter。 Parameter类型的变量需要先在base workspace...原创 2019-01-17 13:23:54 · 7838 阅读 · 1 评论 -
simulink仿真demo临摹笔记之stateflow输出状态的状态值
一,临摹对象sf_abstemporal_ct功能:输出结果: 二,经验总结1,选中状态后,打开Properties...选择“Create data for monitoring”,即可自动生成一个输出变量。该变量为bool型,并且不可更改。...原创 2019-01-17 12:40:46 · 1980 阅读 · 2 评论 -
simulink仿真demo临摹笔记之编辑信号发生器(Signal Builder)
一,临摹对象stateflow模型:sf_abstemporal_enable 二,问题现象拖入Signal Builder 模块后,默认的信号波形是这样的:但官方例程中的信号是这样的: 每一步很简单,只需要把第一个脉冲往左边移一点即可。 可是,如何让信号在第5秒时变为1呢?思路很简单,就是要把最后一条线切开,再拖动一下。但...原创 2019-01-17 10:46:48 · 14304 阅读 · 3 评论 -
使能子系统中“使能时的状态(States when enabling)”的含义
分析R2016a版本中自带的使能子系统的demo。模型名称:enabsubs.slx 模型简介:1)首先,分两个大的模块,上面的是离散系统,下面的连续系统。正弦波的采样时间参数不同: 2)离散系统中,有两个子系统。它们都是使能子系统,但是使能子系统中的Enable模块的“States when enabling”参数不同:一个是“reset”,另一个是'held...原创 2019-01-14 11:14:31 · 2934 阅读 · 0 评论 -
控制策略模型建模规范
网上收集的资料。原文参考:http://blog.sina.com.cn/s/blog_859fc6960102waqb.html 控制策略模型建模规范(总则)1. 导言 1.1. 目的 本建模规范适用于XXXXX控制策略开发阶段,快速原型模型的开发和维护。本规范主要用于约束XXXXX部XXXX控制策略建模行为。 1.2. 参考文档 CONTR...转载 2019-01-19 20:06:42 · 4334 阅读 · 0 评论 -
深入研究simulink仿真demo之sldemo_counters
为了学习simulink仿真,先从官方自带的demo开始。今天就深度解剖一下sldemo_counters这个模型。 一,打开模型。模型名称:sldemo_counters在MATLAB命令窗口中键入模型名称,即可打开计数器模型: 二,仿真结果使用默认的参数,直接仿真,得到的结果为:可以看到,有两点变化:1,模型的颜色变红了;2,示波器窗口中有了...原创 2019-01-15 08:43:09 · 2828 阅读 · 0 评论 -
深入研究simulink仿真之显示模块信息
在临摹simulink的demo时,有时需要知道模块的名称,而该模块hide block name了。但有的模型中,只要光标停留在模块上,就会显示出来,比如官方自带的demo: triggeredsub从零开始新建模型时并没有这个功能。那么这个是怎么出来的呢?打开菜单:Display -> Blocks -> Tool Tip Options -> Parame...原创 2019-01-16 13:57:28 · 6182 阅读 · 0 评论 -
Simulink建模与仿真学习笔记之安装VectorCAN驱动
问题现象学习simulink处理CAN报文时,找到以下示例:Simulink学习笔记——构建用于CAN通信的Simulink模型https://blog.csdn.net/weixin_41695564/article/details/81141825但是,在CAN配置模块中找不到Vector Virtual 1的设备。 原因分析没有安装VECTOR的驱动...原创 2019-01-21 20:05:47 · 4181 阅读 · 11 评论 -
深入研究simulink仿真之信号标签
simulink模型中,每一条线代表一个信号,可以为每一个信号命名,即信号标签。 信号标签的基本操作添加信号标签的方法 方法一,直接在信号线上双击,然后输入。方法二,选中信号线,右键,打开属性对话框,输入Signal name: 复制信号标签一条信号线上可以有多个标签,特别是对于有分支的信号线,可以在每个分支上都显示标签。例如: 复制信号标签...原创 2019-01-21 17:29:58 · 17351 阅读 · 0 评论 -
simulink仿真demo临摹笔记之模型比较
临摹时怎么看自己搭建的模型与官方demo是否完全相同呢?可以使用模型比较工具。 在模型文件上点右键,选择“比较对象”-“选择。。。”:浏览到要比较的文件: 点击“比较”后,就会打开比较窗口,有点像beyond compare: 最下方会显示两个模型具体的不同点。有时配置参数的不同也会导致仿真结果的不同。点击不同点:会自动打开两个模型的相应的配...原创 2019-01-21 11:35:24 · 5729 阅读 · 1 评论