hasChangedFrom

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

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

Аргумент value может быть любое выражение, которое решает к значению, которое сопоставимо с data_name:

  • Если data_name скаляр, затем value должен решить к скалярному значению.

  • Если data_name матрица, затем value должен решить к матричному значению с теми же размерностями как data_name.

    В качестве альтернативы в графике, который использует C в качестве языка действия, value может решить к скалярному значению. График использует скалярное расширение, чтобы сравнить data_name к матрице, элементы которой все равны значению, заданному value. Смотрите значения присвоения ко всем элементам матрицы.

  • Если data_name структура, затем value должен решить к значению структуры, полевая спецификация которого совпадает с data_name точно.

Примеры

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

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

hasChangedFrom(M,matrixValue)

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

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

hasChangedFrom(M(1,3),7)

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

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

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

hasChangedFrom(struct,structValue)

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

hasChangedFrom(struct.field,5)

Советы

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

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

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

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

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

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

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

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

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

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

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