Definizione del comportamento del grafico tramite l'utilizzo delle azioni di stato e delle etichette di transizione
Le azioni di stato e le azioni di transizione sono istruzioni che si scrivono rispettivamente all'interno di uno stato o di una transizione per definire il comportamento di un grafico Stateflow® durante la simulazione. Ad esempio, le azioni di questo grafico definiscono una macchina a stati che verifica empiricamente un'istanza della congettura di Collatz. Per un dato input numerico , il grafico calcola la sequenza di Hailstone ... iterando la seguente regola:
Se è pari, allora .
Se è dispari, allora .
La congettura di Collatz afferma che ogni intero positivo ha una sequenza di Hailstone che alla fine raggiunge l'uno.
Il grafico è composto da tre stati. All'inizio della simulazione, lo stato Init
inizializza i dati del grafico impostando:
I dati locali
n
sul valore di inputu
.I dati locali
n2
sul resto, quandon
viene diviso per due.I dati di output
y
sufalse
.
A seconda della parità dell'input, il grafico passa allo stato Even
o Odd
. Quando l'attività dello stato si sposta tra gli stati Even
e Odd
, il grafico calcola i numeri della sequenza di Hailstone. Quando la sequenza raggiunge il valore di uno, i dati di output y
diventano true
e attivano un blocco Stop Simulation (Simulink) nel modello Simulink®.
Tipi di azioni di stato
Le azioni di stato definiscono le attività di un grafico Stateflow quando uno stato è attivo. I tipi più comuni di azioni di stato sono entry
, during
e exit
:
Le azioni
entry
si verificano quando lo stato diventa attivo.Le azioni
during
si verificano a un passaggio temporale in cui lo stato è già attivo e il grafico non esce dallo stato.Le azioni
exit
si verificano quando il grafico esce dallo stato.
È possibile specificare il tipo di azione di stato utilizzando una parola chiave completa (entry
, during
, exit
) o un'abbreviazione (en
, du
, ex
). Puoi anche raggruppare i tipi di azioni di stato utilizzando le virgole. Ad esempio, un'azione con il tipo combinato entry, during
si verifica al passaggio temporale in cui lo stato diventa attivo e a ogni passaggio temporale successivo finché lo stato rimane attivo.
Il grafico di Hailstone contiene azioni in questi stati:
Init
: quando questo stato diventa attivo all'inizio della simulazione, l'azioneentry
determina la parità din
e impostay
sufalse
. Quando il grafico esce daInit
dopo un passaggio temporale, l'azioneexit
determina sen
è uguale a uno.Even
: quando questo stato diventa attivo, così come in ciascun successivo passaggio temporale in cui tale stato è attivo, l'azione combinataentry, during
calcola il valore e la parità per il numero successivo della sequenza di Hailstonen/2
.Odd
: quando questo stato diventa attivo, così come in ciascun successivo passaggio temporale in cui tale stato è attivo, l'azione combinataentry, during
verifica sen
è maggiore di uno e, in caso affermativo, calcola il valore e la parità per il numero successivo della sequenza di Hailstone3*n+1
.
Tipi di etichette di transizione
Le etichette di transizione definiscono le attività di un grafico Stateflow quando si modifica lo stato attivo. I tipi più comuni di etichette di transizione sono le condizioni e le azioni di condizione.
[Condition]{ConditionAction}
Condition
è un'espressione booleana che determina se la transizione si verifica. Se non si specifica una condizione, la transizione avviene nel passaggio temporale successivo a quello in cui lo stato sorgente è diventato attivo.
ConditionAction
è un'istruzione che viene eseguita quando la condizione che protegge la transizione è vera. L'azione di condizione avviene dopo la condizione ma prima di qualsiasi azione di stato exit
o entry
.
Il grafico di Hailstone contiene azioni in queste transizioni:
Transizione predefinita in
Init
: all'inizio della simulazione, l'azione di condizionen = u
assegna il valore di inputu
ai dati localin
.Transizione da
Init
aEven
: la condizionen2 == 0
determina che la transizione avvenga quandon
è pari. Il numero 1 all'origine di questa transizione indica che questa transizione viene valutata prima della transizione daInit
aOdd
.Transizione da
Odd
aEven
: la condizionen2 == 0
determina che la transizione avvenga quandon
è pari.Transizione da
Even
aOdd
: la condizionen2 ~= 0
determina che la transizione avvenga quandon
è dispari. In questo caso, l'azione di condizioney = isequal(n,1)
determina sen
è uguale a uno.
Analisi del comportamento del grafico
Per calcolare la sequenza di Hailstone partendo da un valore iniziale di nove:
1. Nel blocco Constant, inserire un valore di 9
.
2. Nella scheda Simulation (Simulazione), fare clic su Run (Esegui). Il grafico risponde con le seguenti azioni:
Al tempo , si verifica la transizione predefinita a
Init
. L'azione di transizione imposta il valore din
su 9. Lo statoInit
diventa attivo. Le azionientry
inInit
impostanon2
su 1 ey
sufalse
.Al tempo , la condizione
n2 == 0
è falsa e il grafico si prepara a passare aOdd
. L'azioneexit
inInit
impostay
sufalse
. Lo statoInit
diventa inattivo e lo statoOdd
diventa attivo. L'azioneentry
inOdd
impostan
su 28 en2
su 0.Al tempo , la condizione
n2 == 0
è vera, quindi il grafico si prepara a passare aEven
. Lo statoOdd
diventa inattivo e lo statoEven
diventa attivo. L'azione entry inEven
impostan
su 14 en2
su 0.Al tempo , la condizione
n2 ~= 0
è falsa, quindi il grafico non esegue una transizione. Lo statoEven
rimane attivo. L'azioneduring
inEven
impostan
su 7 en2
su 1.Al tempo , la condizione
n2 ~= 0
è vera, quindi il grafico si prepara a passare aOdd
. L'azione di transizione impostay
su falso. Lo statoEven
diventa inattivo e lo statoOdd
diventa attivo. Le azionientry
inOdd
impostanon
su 22 en2
su 0.Il grafico continua a calcolare la sequenza di Hailstone finché non raggiunge un valore
n
al tempo .Al tempo , il grafico si prepara a passare da
Even
aOdd
. L'azione di transizione impostay
sutrue
. Lo statoEven
diventa inattivo e lo statoOdd
diventa attivo. Le azionientry
inOdd
non modificanon
on2
. Il blocco Stop Simulation collegato al segnale di outputy
interrompe la simulazione.
3. Nella scheda Simulation (Simulazione), sotto Review Results (Revisiona risultati), fare clic su Data Inspector (Controllo dei dati).
4. Per vedere i valori della sequenza di Hailstone, selezionare il segnale registrato n
in Simulation Data Inspector (Controllo dei dati di simulazione).
La sequenza di Hailstone raggiunge il valore di uno dopo 19 iterazioni.