hasChanged

Обнаружьте изменение в данных начиная с последнего временного шага

Синтаксис

Описание

пример

tf = hasChanged(data_name) возвращается 1 (true) если значение data_name в начале текущего времени шаг отличается от значения data_name в начале предыдущего временного шага. В противном случае оператор возвращается 0 (false).

Аргумент data_name может быть:

  • Скалярная переменная.

  • Матрица A или элемент матрицы.

    • Если data_name матрица, оператор возвращает true когда это обнаруживает изменение в любом элементе data_name.

    • Индексируйте элементы матрицы при помощи чисел или выражений, которые оценивают до постоянного целого числа. Смотрите Поддерживаемые Операции для Векторов и Матриц.

  • Структура или поле в структуре.

    • Если data_name структура, оператор обнаружения изменения возвращает true когда это обнаруживает изменение в любом поле data_name.

    • Индексируйте поля в структуре при помощи записи через точку. Смотрите индекс и Значения Присвоения к Структурам Stateflow.

  • Любая допустимая комбинация полей структуры или элементов матрицы.

Аргумент data_name не может быть нетривиальное выражение или переменная пользовательского кода.

Примечание

Автономные диаграммы в MATLAB® не поддерживайте обнаружение изменения на элементе матрицы или поля в структуре.

Примеры

развернуть все

Переход из состояния, если любой элемент матричного M изменил значение начиная с последнего временного шага или ввел событие.

[hasChanged(M)]

Stateflow chart that uses the hasChanged operator in a transition.

Переход из состояния, если элемент в строке 1 и столбце 3 матричного M изменил значение начиная с последнего временного шага или ввел событие.

В графиках, которые используют MATLAB в качестве языка действия, используйте:

[hasChanged(M(1,3))]

Stateflow chart that uses the hasChanged operator in a transition.

В графиках, которые используют C в качестве языка действия, используйте:

[hasChanged(M[0][2])]

Stateflow chart that uses the hasChanged operator in a transition.

Переход из состояния, если любое поле структуры struct изменил значение начиная с последнего временного шага или ввел событие.

[hasChanged(struct)]

Stateflow chart that uses the hasChanged operator in a transition.

Переход из состояния, если поле struct.field изменил значение начиная с последнего временного шага или ввел событие.

[hasChanged(struct.field)]

Stateflow chart that uses the hasChanged operator in a transition.

Советы

  • Если несколько входных событий имеют место в том же временном шаге, hasChanged оператор может обнаружить изменения в значении данных между входными событиями.

  • Если график пишет в объект данных, но не изменяет значение данных, hasChanged оператор возвращает false.

  • Тип Stateflow® график определяет осциллограф данных, поддержанных операторами обнаружения изменения:

    • Автономные диаграммы Stateflow в MATLAB: Local только

    • В Simulink® модели, графики, которые используют MATLAB в качестве языка действия: Input только

    • В моделях Simulink, графиках, которые используют C в качестве языка действия: Inputвывод , Local, или Data Store Memory

  • В автономной диаграмме в MATLAB оператор обнаружения изменения может обнаружить изменения в данных, заданных в вызове step функционируйте, потому что эти изменения происходят перед запуском шага текущего времени. Например, если x равен нулю, выражение hasChanged(x) возвращает true когда вы выполняете график ch с командой:

    step(ch,'x',1);
    В отличие от этого оператор обнаружения изменения не может обнаружить изменения в данных, вызванных присвоениями в состоянии или действиями перехода в том же временном шаге. Вместо этого оператор обнаруживает изменение в значении в начале следующего временного шага.

  • В графике в модели Simulink, если вы включаете опции графика Initialize Outputs Every Time Chart Wakes Up, с помощью выхода в качестве аргумента hasChanged оператор всегда возвращает false. Для получения дополнительной информации смотрите Initialize выходные параметры, которые будит каждая временная диаграмма.

  • Когда упорядоченное по строкам размещение массивов включено в графиках то использование hasChanged, генерация кода производит ошибку. Прежде, чем сгенерировать код в графиках то использование hasChanged, включите упорядоченное по столбцам размещение массивов. Смотрите Избранное Размещение Массивов для Матриц в Сгенерированном коде.

Представленный в R2007a