Обнаружение изменения данных до заданного значения
tf = hasChangedTo( возвращает 1 (data_name,value)true) если значение data_name не был равен заданному value в начале предыдущего временного шага и равно value в начале текущего временного шага. В противном случае оператор возвращает 0 (false).
Аргумент data_name могут быть:
Скалярная переменная.
Матрица или элемент массива матрицы.
Если 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 точно.
Если за один временной шаг происходит несколько входных событий, hasChangedTo оператор может обнаруживать изменения в значении данных между входными событиями.
Если график записывает в объект данных, но не изменяет значение данных, hasChangedTo оператор возвращает false.
Тип Stateflow® график определяет возможности данных, поддерживаемых операторами обнаружения изменений:
Автономные диаграммы Stateflow в MATLAB: Local только
В Simulink® модели, графики, которые используют MATLAB в качестве языка действий: Input только
В моделях Simulink графиков, которые используют C как язык действий: Input, Output, Local, или Data Store Memory
В автономной диаграмме в MATLAB оператор обнаружения изменений может обнаружить изменения в данных, заданных в вызове step функция, поскольку эти изменения происходят перед началом текущего временного шага. Для примера, если x равно нулю, выражение hasChangedTo(x,1) возвращает true при выполнении графика ch с помощью команды:
step(ch,'x',1);На графике в модели Simulink, если вы включите Initialize Outputs Every Time Chart Wakes Up опции графика, используйте выход в качестве аргумента hasChanged оператор всегда возвращает false. Для получения дополнительной информации смотрите Инициализация выходов каждый раз, когда график просыпается.
Когда размещение массива с основной строкой включено в графиках, которые используют hasChangedToгенерация кода приводит к ошибке. Перед генерацией кода в графиках, которые используют hasChangedTo, включите размещение массива основного столбца. Смотрите Select Array Layout для матриц в Сгенерированный код.