Обнаружьте изменение в данных начиная с последнего временного шага
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, включите упорядоченное по столбцам размещение массивов. Смотрите Избранное Размещение Массивов для Матриц в Сгенерированном коде.