Действия состояния и перехода - это инструкции, которые записываются в состоянии или рядом с переходом, чтобы определить поведение диаграммы Stateflow ® во время моделирования. Дополнительные сведения см. в разделе модели конечных автоматов.
Действия на этой диаграмме определяют конечный автомат, который эмпирически проверяет один экземпляр гипотезы Коллатца. Для заданного числового ввода
диаграмма вычисляет последовательность града
... 

путем итерации этого правила:
Если
даже, то.
Если
странно, то.
Гипотеза Коллаца утверждает, что каждое положительное целое число имеет последовательность градов, которая в конечном итоге достигает единицы.

Диаграмма состоит из трёх состояний. В начале моделирования Init состояние инициализирует данные диаграммы:
Локальные данные n устанавливается на значение входа u.
Локальные данные n2 устанавливается на остаток, когда n делится на два.
Выходные данные y имеет значение false.
В зависимости от четности входного сигнала диаграмма переходит к одному из следующих значений: Even или Odd состояние. По мере смещения активности государства между Even и Odd состояние, диаграмма вычисляет числа в последовательности градов. Когда последовательность достигает значения единицы, выходные данные y становится true и запускает блок Stop Simulation (Simulink) в модели Simulink ®.
Действия состояния определяют, что делает диаграмма Stateflow при активном состоянии. Наиболее распространенными типами действий состояния являются entry, during, и exit действия.
| Тип действия состояния | Сокращение | Описание |
|---|---|---|
entry | en | Действие происходит на временном шаге, когда состояние становится активным. |
during | du | Действие происходит на временном шаге, когда состояние уже активно и диаграмма не переходит из состояния. |
exit | ex | Действие происходит на временном шаге, когда диаграмма выходит из состояния. |
Тип действия состояния можно указать по его полному ключевому слову (entry, during, exit) или по его аббревиатуре (en, du, ex). Можно также комбинировать типы действий состояния с помощью запятых. Например, действие с комбинированным типом entry,during происходит на временном шаге, когда состояние становится активным, и на каждом последующем временном шаге, в то время как состояние остается активным.
В этой таблице перечислены результаты каждого действия состояния в градостроительной диаграмме.
| Государство | Действие | Результат |
|---|---|---|
Init |
entry: n2 = rem(n,2); y = false; | Когда Init становится активным в начале моделирования, определяет четность n и наборы y кому false. |
exit: y = isequal(n,1); | При переходе из Init после одного временного шага определяет, n равно единице. | |
Even |
entry,during: n = n/2; n2 = rem(n,2); | Вычисляет следующий номер последовательности градов (
|
Odd |
entry,during: n = 3*(n-y)+1; n2 = rem(n,2); | Вычисляет следующий номер последовательности градов (3
На протяжении большей части моделирования, |
Действия перехода определяют, что делает диаграмма Stateflow, когда переход приводит к выходу из активного состояния. Наиболее распространенными типами действий перехода являются условия и условные действия. Чтобы указать действия перехода, используйте метку со следующим синтаксисом:
[condition]{conditional_action}condition - логическое выражение, определяющее, происходит ли переход. Если условие не указано, предполагается, что подразумеваемое условие имеет значение true.
conditional_action - это команда, которая выполняется, когда условие защиты перехода истинно. Условное действие происходит после условия, но до любого exit или entry действия государства.
В этой таблице перечислены результаты каждого действия перехода на градостроительной диаграмме.
| Переход | Действие | Тип действия | Результат |
|---|---|---|---|
Переход по умолчанию в Init |
n = u | Условное действие | В начале моделирования присваивает входное значение u к локальным данным n. |
Переход от Init кому Even |
n2 == 0 | Состояние | Когда n является четным, переход происходит. Число 1 в источнике этого перехода указывает, что он оценивается перед переходом в Odd. |
Переход от Init кому Odd | Ничего | Когда n нечетно, происходит переход. Число 2 в источнике этого перехода указывает, что он оценивается после перехода в Even. | |
Переход от Odd кому Even |
n2 == 0 | Состояние | Когда n является четным, переход происходит. |
Переход от Even кому Odd |
n2 ~= 0 | Состояние | Когда n нечетно, происходит переход. |
y = isequal(n,1) | Условное действие | Когда происходит переход, определяет, n равно единице. |
Предположим, что требуется вычислить последовательность градов, начиная со значения 9.
В диалоговом окне Параметры конфигурации модели (Model Configuration Parameters) в разделе Решатель (Solver) выберите следующие опции.
Время начала: 0.0
Время остановки: inf
Тип: Fixed-step
Фиксированный размер шага: 1
На панели «Символы» выберите локальные данные n. В инспекторе свойств в разделе «Ведение журнала» выберите «Регистрировать данные сигнала».
В блоке «Константа» введите значение u = 9.
На вкладке Моделирование (Simulation) щелкните Выполнить (Run).
![]()
Диаграмма отвечает следующими действиями:
В момент времени t = 0 переход по умолчанию в Init происходит.
Действие перехода устанавливает значение n на 9.
Init состояние становится активным.
entry действия в Init набор n2 в 1 и y кому false.
В момент времени t = 1 условие n2 == 0 имеет значение false, поэтому диаграмма готовится к переходу к Odd.
exit действие в Init наборы y кому false.
Init состояние становится неактивным.
Odd состояние становится активным.
entry действия в Odd набор n до 28 и n2 в 0.
В момент времени t = 2 условие n2 == 0 true, поэтому диаграмма готовится к переходу к Even.
Odd состояние становится неактивным.
Even состояние становится активным.
entry действия в Even набор n до 14 и n2 в 0.
В момент времени t = 3 условие n2 ~= 0 имеет значение false, поэтому диаграмма не принимает переход.
Even состояние остается активным.
during действия в Even набор n до 7 и n2 на 1.
В момент времени t = 4 условие n2 ~= 0 true, поэтому диаграмма готовится к переходу к Odd.
Наборы действий перехода y кому false.
Even состояние становится неактивным.
Odd состояние становится активным.
entry действия в Odd набор n до 22 и n2 в 0.
Диаграмма продолжает вычислять последовательность градов до тех пор, пока она не достигнет значения n = 1 в момент времени t = 19.
В момент времени t = 20 диаграмма готовится к переходу от Even кому Odd.
До Even состояние становится неактивным, набор действий перехода y кому true.
Odd состояние становится активным.
entry действия в Odd не изменять n или n2.
Блок моделирования останова, подключенный к выходному сигналу y останавливает моделирование.
На вкладке Моделирование (Simulation) в разделе Результаты проверки (Review Results) щелкните Инспектор данных (Data Inspector).
![]()
Для просмотра значений последовательности градов в инспекторе данных моделирования выберите зарегистрированный сигнал. n.

Остановить моделирование (Simulink)