独立状态流®图表是一个matlab®类,该类定义有限状态机的行为。独立图表以MATLAB作为动作语言实现经典图表语义。你可以通过使用MATLAB的完整功能来编程图表,包括那些在Simulink中被限制的代码生成功能金宝app®.有关更多信息,请参阅为Matlab对象创建执行状态溢图表.
这个例子展示了如何使用MATLAB脚本或Simulink模型来执行一个独立的Stateflow图表。金宝app
文件sf_change.sfx
定义一个独立的状态溢图,计算给定金额更改的方法数量。图表包含这些数据对象:
X
是改变的金额。默认值为100。
coinValues
是以越来越顺序排列的硬币面位的矢量。副行志
对应硬币名称的数组。默认值表示标准美国硬币(便士、镍币、一角和25美分)。
理货
有效更改配置的数量。
横膈
是包含不同有效更改配置的数组。
ch
那完成
那一世
,N.
变更计数算法使用的是局部数据。
textWidth
和静音模式
是控制图表如何显示其结果的本地数据。
图表从一个潜在的变更配置开始,它完全由最小值的硬币组成,由索引1指定。在每个执行步骤中,状态交换
以两种方式之一修改此配置:
代表move_up
用一些最低价值的硬币交换由索引指定的较高价值的硬币一世
.
代表move_down
用索引指定的值交换所有的硬币一世
对于最低价值的硬币。然后move_up
与索引指定的值交换一些硬币的最低值硬币我+ 1
或更高。
当由最低值硬币表示的少数由该类型的硬币的值可分离时,潜在的变化配置有效。当图表遇到新的有效配置时,IT增量理货
并追加新配置横膈
.
当没有更多的硬币交换时,国家停止
变得活跃。此状态打印计算结果,转换内容横膈
,并设置的值完成
到真正的
.
要完成将更改计数算法进行完成,您必须多次执行独立图表。例如,Matlab脚本sf_change_script.m
创建图表对象chartObj
并初始化本地数据的值X
27。配置选项'-warningonuninitializeddata'
,脚本设置为错误的
,消除该警告横膈
是新图表对象中的空数组。这而
循环执行图表,直到本地数据完成
就变成了真正的
.最后,脚本显示的值横膈
.
chartObj = sf_change ('X',27,'-warningonuninitializeddata'、假);而〜chartobj.done步骤(chartobj);结尾disp (chartObj.tabula)
sf_change_script.
.............有13种方法可以用27美分找到零钱。便士硬币硬币季度 _______ _______ _____ ________ 27日0 0 0 22 1 0 0 17 12 2 0 0 3 0 0 7 4 0 0 2 5 0 0 17 0 1 0 12 1 1 0 7 2 1 0 2 3 1 0 7 0 2 0 2 1 2 0 2 0 0 1
要确定改变不同金额或使用不同货币系统的方法的数量,改变的价值X
和coinValues
.例如,要使用英国货币,需要初始化coinValues
到[1 2 5 10 20 25 50]
.
您可以从Simulink模型中执行独立状态溢图。金宝app例如,模型sf_change_model
包含两个使用独立图表的状态流图表sf_change
计算在两种不同的货币系统中兑换27美分的方法。您可以模拟模型,但是执行独立图表的函数不支持代码生成。金宝app
每个图表都包含这些状态:
初始化
创建一个本地图表对象chartObj
这实现了输入值的变化计数算法X
.
执行
调用步
函数要执行独立图表并将结果存储为输出数据理货
.
完成
在诊断查看器窗口中显示算法的结果,并设置输出数据的值完成
到真正的
.
当两个图表都达到各自的水平时完成
状态,模型的仿真停止和显示块显示最后的数值的两个计数。
使用MATLAB作为操作语言的执行
图表matlab语法
使用matlab作为动作语言。要执行独立状态溢图,此图表必须遵循以下指南:
的局部变量chartObj
包含图表对象的句柄具有类型继承:从图表中的定义
.
在创建图表对象之前,初始化
州呼叫这一点编码器.Extrinsic.
申报功能sf_change
作为Simulink中的代码生成限制的外在功能。金宝app看在状态流图中调用外部MATLAB函数.
这执行
和完成
状态通过调用来访问独立图表的本地数据得到
功能。
使用输入模拟此图表X
= 27,显示块Olde英语
显示一个计数4。诊断查看器窗口显示以下结果:
便士先令弗洛林斯_______ _________ _______ 27 0 0 15 1 0 3 2 0 3 0 1
使用C作为动作语言执行
图表C语法
使用C作为动作语言。要执行独立状态溢图,此图表必须遵循以下指南:
的局部变量chartObj
包含图表对象的句柄具有类型毫升
.
这初始化
州呼叫这一点毫升
函数创建图表对象。
这执行
和完成
各国使用毫升
命名空间运算符访问步
那得到
,dis
函数来执行独立的图表,访问其本地数据,并显示算法的结果。
有关更多信息,请参阅在C图表中访问MATLAB函数和工作区数据.
使用输入模拟此图表X
= 27,显示块现代美国
显示13的计数。诊断查看器窗口显示这些结果:
安全FieldGoal Touchdown ______ _________ _________ 12 1 0 9 3 0 6 5 0 3 7 0 0 9 0 10 0 1 7 2 1 4 4 4 3 0 3 0 2 3