主要内容

使用操作定义图表行为

国家和过渡行动是在状态内部或转换旁边编写的指令,以定义如何实现状态流®图表在模拟期间的行为。有关更多信息,请参阅模型有限状态机

状态和转换操作的示例

这个图表中的操作定义了一个状态机,该状态机通过经验验证Collatz猜想的一个实例。对于给定的数字输入你美元,图表计算了HaIlstone序列$ n_0 = u,$n_1、美元甲烷、美元,美元$ n_3,$通过迭代这个规则:

  • 如果$ n_i $那么,甚至是$ n_ {i + 1} = n_i / 2 $

  • 如果$ n_i $奇怪的是美元n_ {i + 1} = 3 n_i + 1美元

Collatz猜想指出,每个正整数都有一个最终达到1的冰雹序列。

图表由三个州组成。在模拟开始时,在里面状态初始化图表数据:

  • 本地数据N设置为输入的值

  • 本地数据n2何时为余数N除以两个。

  • 输出数据y被设置为错误的

根据输入的奇偶性,图表转换为甚至奇怪的状态。当状态活动在甚至奇怪的状态,图表计算Hailstone序列中的数字。当序列达到一个值一个时,输出数据y就变成了真正的并触发一个停止仿真(金宝appSimulink)Simulink®模型中的金宝app块。

国家行动类型

状态操作定义状态流图在状态处于活动状态时所做的工作。最常见的状态操作类型是条目期间,出口行动。

状态行动类型 缩写 描述
条目 EN. 当状态变为活动状态时,时间步上发生动作。
期间 当状态已经处于活动状态且图表没有转移出该状态时,将在一个时间步上执行操作。
出口 前任 当图表转换出状态时,行动发生在时间步骤中。

您可以通过完整的关键字指定状态操作的类型(条目期间出口)或其缩写(EN.前任).还可以使用逗号组合状态操作类型。例如,具有组合类型的操作条目,在当状态变为活动状态时,在状态变为活动状态时发生在时间步骤中,而状态保持活动状态。

此表列出了HaIlstone图表中每个状态操作的结果。

状态 行动 结果
在里面

条目:n2 = rem(n,2);y = false;

在里面在仿真开始时变得活跃,确定奇偶校验N和套装y错误的

出口:Y = isequal(n,1);

过渡时在里面在一次阶段之后,确定是否N等于1。
甚至

条目,期间:n = n / 2;n2 = REM(n,2);

计算下一个数量的haIlstone序列(N/ 2.)并更新其奇偶校验:

  • 时间步长甚至第一次变得活跃。

  • 每次随后的时间甚至活跃。

奇怪的

n = 3*(n-y)+1;n2 = REM(n,2);

计算下一个数量的haIlstone序列(3.N+1)并更新其奇偶校验:

  • 时间步长奇怪的第一次变得活跃。

  • 每次随后的时间奇怪的活跃。

在大部分模拟中,y评估为零。在最后一个时间步骤,当N= 1y评估一个,因此此操作不会修改Nn2在模拟停止之前。

过渡动作类型

转换操作定义状态流程图在从活动状态转换时所做的工作。最常见的转换操作类型是条件操作和条件操作。要指定转换操作,请使用以下语法的标签:

[条件) {conditional_action}

条件是一个带布尔表达式,它决定了转换是否发生。如果未指定条件,则假设评估为true的隐含条件。

conditional_action是一条在保护转换的条件为真时执行的指令。条件动作发生在条件之后,但在任何条件之前出口条目国家行动。

这个表格列出了冰雹图中每个转换操作的结果。

过渡 行动 行动类型 结果
缺省转换成在里面

n = U.

有条件的行动 在模拟开始时,分配输入值到本地数据N
转变从在里面甚至

n2 == 0.

健康)状况 N甚至发生过渡。此转换源的第1号表示在转换之前评估它奇怪的
转变从在里面奇怪的 没有一个 N是奇数的,发生转换。此转换源处的第2号表示它在转换后评估它甚至
转变从奇怪的甚至

n2 == 0.

健康)状况 N甚至发生过渡。
转变从甚至奇怪的

n2〜= 0

健康)状况 N是奇数的,发生转换。

Y = isequal(n,1)

有条件的行动 发生转换时,确定是否N等于1。

检查表的行为

假设您想要计算以九个值开头的HaiLstone序列。

  1. 在模型配置参数对话框中,在解算器,选择以下选项:

    • 开始时间0.0

    • 停止时间

    • 类型固定步骤

    • 固定阶梯1

  2. 在符号窗格中,选择本地数据N。在物业检查员,下记录, 选择日志信号数据

  3. 常数块,输入的输入= 9

  4. 模拟选项卡,单击

    该图表响应了这些操作:

    • 当时T.= 0.,默认转换到在里面发生。

      • 过渡动作设定值N到9。

      • 在里面国家变得活跃。

      • 条目行动在里面n2到1和y错误的

    • 当时T.= 1, 条件n2 == 0.是假的,所以图表准备过渡到奇怪的

      • 出口行动在里面y错误的

      • 在里面状态变为不活动。

      • 奇怪的国家变得活跃。

      • 条目行动奇怪的N到28岁n2为0。

    • 当时T.= 2, 条件n2 == 0.是真的,所以图表准备过渡到甚至

      • 奇怪的状态变为不活动。

      • 甚至国家变得活跃。

      • 条目行动甚至N14,n2为0。

    • 当时T.= 3, 条件n2〜= 0是假的,所以图表没有接受过渡。

      • 甚至国家仍然活跃。

      • 期间行动甚至N到7岁n2为1。

    • 当时T.= 4, 条件n2〜= 0是真的,所以图表准备过渡到奇怪的

      • 过渡动作集y错误的

      • 甚至状态变为不活动。

      • 奇怪的国家变得活跃。

      • 条目行动奇怪的N22日,n2为0。

    • 该图表继续计算HaIlstone序列,直到它到达值N= 1在时间T.= 19.

    • 当时T.= 20.,图表准备从甚至奇怪的

      • 之前甚至状态变为非活动状态,则转换操作设置y真正的

      • 奇怪的国家变得活跃。

      • 条目行动奇怪的不要修改Nn2

      • 停止仿真块连接到输出信号y停止仿真。

  5. 模拟标签,下面审查结果,点击数据检查

  6. 要查看Hailstone序列的值,请在“模拟数据检查器”中,选择记录信号N

显示图表输出的仿真数据检查器。

也可以看看

(金宝appSimulink)

相关的话题