Обнаружение изменения данных с момента последнего временного шага
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 для матриц в Сгенерированный код.