主要内容

hasChangedFrom

检测数据与指定值之间的变化

描述

例子

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

例子

全部展开

如果转换出了矩阵的前一个值等于matrixValue的任何元素自上次时间步骤或输入事件以来已更改的值。

[hasChangedFrom (M, matrixValue))

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

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

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

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

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

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

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

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

如果转换为结构的前一个值,则转换为状态外结构体等于structValue任何领域结构体自上次时间步骤或输入事件以来已更改的值。

[hasChangedFrom (struct structValue)]

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

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

[hasChangedFrom struct.field, 5)]

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

输入参数

全部展开

Stateflow®数据,指定为a:

  • 标量

  • 矩阵或矩阵中的元素

  • 结构或结构中的字段

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

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

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

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

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

的相同数据类型指定的前一个时间步骤的数据的值数据价值必须是解析为可比较的值的表达式数据:

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

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

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

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

提示

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

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

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

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

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

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

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

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

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

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

版本历史

在R2007a中引入