Обнаружение изменения данных с момента последнего временного шага
tf = hasChanged(
возвращает 1 (data_name
)true
) если значение data_name
в начале текущего временного шага отличается от значения data_name
в начале предыдущего временного шага. В противном случае оператор возвращает 0 (false
).
Аргумент data_name
могут быть:
Скалярная переменная.
Матрица или элемент массива матрицы.
Если data_name
является матрицей, оператор возвращает true
когда он обнаруживает изменение в любом элементе data_name
.
Индексируйте элементы массива матрицы с помощью чисел или выражений, которые вычисляются до постоянного целого числа. См. «Поддерживаемые операции для векторов и матриц».
Структура или поле в структуре.
Если data_name
является структурой, оператор обнаружения изменений возвращает true
когда он обнаруживает изменение в любом поле data_name
.
Индексируйте поля в структуре с помощью записи через точку. См. Индекс и присвоение значений структурам Stateflow».
Любая допустимая комбинация структурных полей или элементов матрицы.
Аргумент data_name
не может быть нетривиальным выражением или пользовательской переменной кода.
Примечание
Автономные диаграммы в MATLAB® не поддерживает обнаружение изменений в элементе массива матрицы или поле в структуре.
Если за один временной шаг происходит несколько входных событий, hasChanged
оператор может обнаруживать изменения в значении данных между входными событиями.
Если график записывает в объект данных, но не изменяет значение данных, hasChanged
оператор возвращает false
.
Тип Stateflow® график определяет возможности данных, поддерживаемых операторами обнаружения изменений:
Автономные диаграммы Stateflow в MATLAB: Local
только
В Simulink® модели, графики, которые используют MATLAB в качестве языка действий: Input
только
В моделях Simulink графиков, которые используют C как язык действий: Input
, Output
, 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
. Для получения дополнительной информации смотрите Инициализация выходов каждый раз, когда график просыпается.
Когда размещение массива с основной строкой включено в графиках, которые используют hasChanged
генерация кода приводит к ошибке. Перед генерацией кода в графиках, которые используют hasChanged
, включите размещение массива основного столбца. Смотрите Select Array Layout для матриц в Сгенерированный код.