Обнаружить изменение данных на указанное значение
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.
Индексировать поля в структуре с помощью точечной нотации. См. раздел Индексирование и присвоение значений структурам потока состояний.
Любая допустимая комбинация полей структуры или элементов матрицы.
Аргумент 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, если включен параметр «Инициализировать выходные данные при каждом пробуждении диаграммы», в качестве аргумента hasChanged оператор всегда возвращает false. Дополнительные сведения см. в разделе Инициализация выходных данных при каждом включении диаграммы.
Если в диаграммах, использующих основные строки, включена компоновка массива hasChangedTo, создание кода приводит к ошибке. Перед созданием кода в диаграммах, использующих hasChangedTo, включить компоновку «столбец-основной массив». См. раздел Выбор формата массива для матриц в сгенерированном коде.