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® не поддерживают обнаружение изменения на элементе матрицы или поля в структуре.

Примеры

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

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

hasChanged(M)

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

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

hasChanged(M(1,3))

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

hasChanged(M[0][2])

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

hasChanged(struct)

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

hasChanged(struct.field)

Советы

  • Если несколько входных событий имеют место в том же временном шаге, 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. Для получения дополнительной информации смотрите, Инициализируют Выходные параметры, которые Будит Каждая Временная диаграмма.

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

Для просмотра документации необходимо авторизоваться на сайте