Обнаружьте изменение в данных начиная с последнего временного шага
tf = hasChanged(
возвращается 1 (data_name
)true
) если значение data_name
в начале текущего времени шаг отличается от значения data_name
в начале предыдущего временного шага. В противном случае оператор возвращается 0 (false
).
Аргумент data_name
может быть:
Скалярная переменная.
Матрица A или элемент матрицы.
Если 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
вывод
, 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
. Для получения дополнительной информации смотрите Initialize выходные параметры, которые будит каждая временная диаграмма.
Когда упорядоченное по строкам размещение массивов включено в графиках то использование hasChanged
, генерация кода производит ошибку. Прежде, чем сгенерировать код в графиках то использование hasChanged
, включите упорядоченное по столбцам размещение массивов. Смотрите Избранное Размещение Массивов для Матриц в Сгенерированном коде.