主要内容

hasChangedTo

检测数据到指定值的变化

描述

例子

特遣部队= hasChangedTo (数据价值返回1真正的)如果的值数据不等于价值在前一个时间步的开始,等于价值在当前时间步长的开始。否则,操作符返回0).

例子

全部展开

的任何元素转换出状态自上次时间步骤或输入事件和矩阵的当前值以来是否改变了值等于matrixValue

[hasChangedTo (M, matrixValue))

在转换中使用hasChangedTo操作符的状态流程图。

如果矩阵第1行和第3列的元素转换出状态已更改为值7自上次时间步骤或输入事件以来。

在图表中使用MATLAB®作为动作语言,使用:

[hasChangedTo (M (1,3), 7))

在转换中使用hasChangedTo操作符的状态流程图。

在使用C作为动作语言的图表中,使用:

[hasChangedTo (M [0] [2], 7))

在转换中使用hasChangedTo操作符的状态流程图。

转换出状态,如果结构的任何字段结构体自上一个时间步骤或输入事件和的当前值以来已更改的值结构体等于structValue

[hasChangedTo (struct structValue)]

在转换中使用hasChangedTo操作符的状态流程图。

如果字段转换出状态struct.field已更改为值5自上次时间步骤或输入事件以来。

[hasChangedTo struct.field, 5)]

在转换中使用hasChangedTo操作符的状态流程图。

输入参数

全部展开

Stateflow®数据,指定为a:

  • 标量

  • 矩阵或矩阵中的元素

  • 结构或结构中的字段

  • 结构字段或矩阵元素的有效组合

如果数据是一个矩阵,运算符返回真正的的元素之一发生变化时数据.还可以使用计算为整数的数字或表达式为矩阵的元素建立索引。看到状态流中向量和矩阵的操作

如果数据是结构,操作符返回真正的的字段之一发生变化时数据.还可以使用点表示法为结构中的字段建立索引。看到为状态流结构索引和赋值

这个论点数据不能为非平凡表达式或自定义代码变量。

MATLAB中的独立图表不支持对矩阵中的元素或结构中的字段进行变化检测金宝app。

值的值,指定为相同的数据类型数据价值必须是解析为可比较的值的表达式数据

  • 如果数据是标量吗价值必须解析为标量。

  • 如果数据是矩阵吗价值必须解析为具有相同维度的矩阵数据

    另外,在一个使用C语言作为动作语言的图表中,价值可以解析为标量值。该图表使用标量展开进行比较数据赋给一个矩阵,该矩阵的元素都等于价值.看到给矩阵中的所有元素赋值

  • 如果数据是结构吗价值必须解析到字段规范匹配的结构数据完全正确。

提示

  • 如果在同一时间步长中发生多个输入事件,则hasChangedTo运算符可以检测输入事件之间数据值的变化。

  • 如果图表写入数据对象,但没有更改数据值,则hasChangedTo操作符返回

  • 状态流图的类型决定了变更检测操作符支持的数据范围:金宝app

    • 独立的状态流程图在MATLAB:当地的只有

    • 在仿真金宝app软件®使用MATLAB作为动作语言的模型、图表:输入只有

    • 在Si金宝appmulink模型中,使用C作为操作语言的图表:输入输出当地的,或数据存储内存

  • 在MATLAB的独立图表中,更改检测操作符可以检测调用中指定的数据中的更改一步函数,因为这些更改发生在当前时间步开始之前。例如,如果x等于0,表达式hasChangedTo (x, 1)返回真正的当你执行图表时ch使用命令:

    步骤(ch, x = 1);
    相比之下,更改检测操作符不能在同一时间步骤中检测由状态分配或转换操作引起的数据更改。相反,该操作符在下一个时间步骤开始时检测值的变化。

  • 在Simulink模型的图表中,金宝app如果启用图表选项每次时间图表醒来时初始化输出的参数,使用输出作为参数焕然一新运算符总是返回.有关更多信息,请参见每次图表唤醒时初始化输出

  • 当使用的图表中启用行主数组布局时hasChangedTo,代码生成产生错误。在使用的图表中生成代码之前hasChangedTo,启用列主数组布局。看到在生成的代码中选择矩阵的数组布局

版本历史

在R2007a中引入