主要内容

执行州流程通过脚本和模型绘制对象

独立状态流®图表是一个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并初始化本地数据的值X27。配置选项'-warningonuninitializeddata',脚本设置为错误的,消除该警告横膈是新图表对象中的空数组。这循环执行图表,直到本地数据完成就变成了真正的.最后,脚本显示的值横膈

chartObj = sf_change ('X',27,'-warningonuninitializeddata'、假);〜chartobj.done步骤(chartobj);结尾disp (chartObj.tabula)
运行此脚本时,独立图表通过使用标准美国硬币计算27美分的方法数量:
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

要确定改变不同金额或使用不同货币系统的方法的数量,改变的价值XcoinValues.例如,要使用英国货币,需要初始化coinValues[1 2 5 10 20 25 50]

在Simulink模型中执行独立图表金宝app

您可以从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

相关的话题