Esta página es para la versión anterior. La página correspondiente en inglés ha sido eliminada en la versión actual.
Definir el comportamiento del gráfico usando acciones de estado y etiquetas de transición
Las acciones de estado y las acciones de transición son instrucciones que se escriben dentro de un estado o en una transición, respectivamente, para definir cómo se comporta un gráfico de Stateflow® durante la simulación. Por ejemplo, las acciones de este gráfico definen una máquina de estado que verifica de forma empírica una instancia de la conjetura de Collatz. En la entrada numérica
, el gráfico calcula la secuencia de granizo
![]()
![]()
... iterando la siguiente regla:
Si
es par,
.Si
es impar,
.
La conjetura de Collatz establece que todos los enteros positivos tienen una secuencia de granizo que termina en 1.

El gráfico consta de tres estados. Al comienzo de la simulación, el estado Init inicializa los datos del gráfico estableciendo lo siguiente:
Los datos locales
nen el valor de la entradau.Los datos locales
n2en el resto cuandonse divide entre dos.Los datos de salida
yenfalse.
Dependiendo de la paridad de la entrada, el gráfico cambia a estado Even o Odd. A medida que la actividad del estado cambia entre Even y Odd, el gráfico calcula los números de la secuencia de granizo. Cuando la secuencia alcanza un valor de uno, los datos de salida y se convierten en true y activan un bloque Stop Simulation (Simulink) en el modelo de Simulink®.
Tipos de acciones de estado
Las acciones de estado definen lo que un gráfico de Stateflow puede hacer mientras un estado está activo. Los tipos más comunes de acciones de estado son las acciones entry, during y exit:
Las acciones
entryse producen cuando el estado se convierte en activo.Las acciones
duringse producen en una unidad de tiempo en la que el estado ya está activo y el gráfico no cambia de estado.Las acciones
exitse producen cuando el gráfico sale del estado.
Puede especificar el tipo de una acción de estado con una palabra clave completa (entry, during, exit) o con una abreviatura (en, du, ex). También puede combinar los tipos de acciones de estado con comas. Por ejemplo, una acción con el tipo combinado entry, during se produce en la unidad de tiempo en la que el estado se convierte en activo y en cada unidad de tiempo posterior mientras el estado permanece activo.
El gráfico de granizo contiene acciones en estos estados:
Init: cuando este estado se convierte en activo al inicio de la simulación, la acciónentrydetermina la paridad deny estableceyenfalse. Cuando el gráfico sale deInitdespués de una unidad de tiempo, la acciónexitdetermina sines igual a uno.Even: cuando este estado se convierte en activo y en cada unidad de tiempo posterior en la que el estado está activo, la acción combinadaentry, duringcalcula el valor y la paridad para el siguiente número de la secuencia de granizo,n/2.Odd: cuando este estado se convierte en activo y en cada unidad de tiempo posterior en la que el estado está activo, la acción combinadaentry, duringcomprueba sines mayor que uno y, si lo es, calcula el valor y la paridad para el siguiente número de la secuencia de granizo,3*n+1.
Tipos de etiquetas de transición
Las etiquetas de transición definen lo que un gráfico de Stateflow puede hacer cuando el estado activo cambia. Los tipos más comunes de etiquetas de transición son las condiciones y las acciones de condición.
[Condition]{ConditionAction} Condition es una expresión booleana que determina si se produce la transición. Si no se especifica una condición, la transición se produce una unidad de tiempo después de que el estado de origen se convierte en activo.
ConditionAction es una instrucción que se ejecuta cuando la condición que vigila la transición es verdadera. La acción de condición tiene lugar después de la condición, pero antes de cualquier acción de estado exit o entry.
El gráfico de granizo contiene acciones en estas transiciones:
Transición predeterminada a
Init: al inicio de la simulación, la acción de condiciónn = uasigna el valor de entradaua los datos localesn.Transición de
InitaEven: la condiciónn2 == 0determina que la transición se produce cuandones par. El número 1 en el origen de esta transición indica que esta transición se evalúa antes de la transiciónInitaOdd.Transición de
OddaEven: la condiciónn2 == 0determina que la transición se produce cuandones par.Transición de
EvenaOdd: la condiciónn2 ~= 0determina que la transición se produce cuandones impar. En este caso, la acción de condicióny = isequal(n,1)determina sines igual a uno.
Examinar el comportamiento del gráfico
Para calcular la secuencia de granizo que empieza con un valor de nueve:
1. En el bloque Constant, introduzca un valor de 9.
2. En la pestaña Simulation, haga clic en Run. El gráfico responde con estas acciones:
En la unidad de tiempo
, se produce la transición predeterminada a Init. La acción de transición establece el valor denen 9. El estadoInitse convierte en activo. Las accionesentrydeInitestablecen el valor den2en 1 y el deyenfalse.En la unidad de tiempo
, la condición n2 == 0es falsa, por lo que el gráfico prepara la transición aOdd. La acciónexitdeInitestablece el valor deyenfalse. El estadoInitse convierte en inactivo y el estadoOddse convierte en activo. La acciónentrydeOddestablecenen 28 yn2en 0.En la unidad de tiempo
, la condición n2 == 0es verdadera, por lo que el gráfico prepara la transición aEven. El estadoOddse convierte en inactivo y el estadoEvense convierte en activo. La acción entry deEvenestablecenen 14 yn2en 0.En la unidad de tiempo
, la condición n2 ~= 0es falsa, por lo que el gráfico no realiza ninguna transición. El estadoEvense mantiene activo. La acciónduringdeEvenestablecenen 7 yn2en 1.En la unidad de tiempo
, la condición n2 ~= 0es verdadera, por lo que el gráfico prepara la transición aOdd. La acción de transición estableceyen falso. El estadoEvense convierte en inactivo y el estadoOddse convierte en activo. Las accionesentrydeOddestablecen el valor denen 22 y el den2en 0.El gráfico continúa calculando la secuencia de granizo hasta llegar a un valor de
n
en la unidad de tiempo
.En la unidad de tiempo
, el gráfico prepara la transición de EvenaOdd. La acción de transición establece el valor deyentrue. El estadoEvense convierte en inactivo y el estadoOddse convierte en activo. Las accionesentrydeOddno modificannnin2. El bloque Stop Simulation que está conectado a la señal de salidaydetiene la simulación.
3. En la pestaña Simulation, en Review Results, haga clic en Data Inspector.
4. Para ver los valores de la secuencia de granizo, en Simulation Data Inspector, seleccione la señal registrada n.

La secuencia de granizo alcanza el valor de uno después de 19 iteraciones.