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 точно.

Примеры

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

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

[hasChangedFrom(M,matrixValue)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

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

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

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

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

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

[hasChangedFrom(struct,structValue)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

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

[hasChangedFrom(struct.field,5)]

Stateflow chart that uses the hasChangedFrom operator in a transition.

Советы

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

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

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