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