hasChangedTo

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

Описание

пример

tf = hasChangedTo(data_name,value) возвращается 1 (true) если значение data_name не было равно заданному value в начале предыдущего временного шага и равно 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 точно.

Примеры

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

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

[hasChangedTo(M,matrixValue)]

Stateflow chart that uses the hasChangedTo operator in a transition.

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

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

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

Stateflow chart that uses the hasChangedTo operator in a transition.

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

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

Stateflow chart that uses the hasChangedTo operator in a transition.

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

[hasChangedTo(struct,structValue)]

Stateflow chart that uses the hasChangedTo operator in a transition.

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

[hasChangedTo(struct.field,5)]

Stateflow chart that uses the hasChangedTo operator in a transition.

Советы

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

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

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

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

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

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

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

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

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

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

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