Main Content

Convertir código de MATLAB en diagramas de flujo de Stateflow

Para convertir el código de MATLAB® en funciones gráficas y diagramas de flujo de Stateflow®, utilice Pattern Wizard (Asistente de partrones). Entre los patrones compatibles con la conversión se incluyen:

  • if, if-else y otras instrucciones de decisión anidadas.

  • Bucles for y while.

  • Instrucciones switch.

Pattern Wizard puede convertir funciones y scripts de MATLAB.

  • Las funciones de MATLAB se convierten en funciones gráficas de Stateflow.

  • Los scripts de MATLAB se convierten en diagramas de flujo de Stateflow.

Solo puede convertir código de MATLAB con gráficos de Stateflow independientes. Para obtener más información, consulte Create Stateflow Charts for Execution as MATLAB Objects.

Crear diagramas de flujo a partir de scripts de MATLAB

Este script de MATLAB verifica de forma empírica una instancia de la conjetura de Collatz. Dada la entrada numérica u, el script calcula la secuencia de granizo n0 = u, n1, n2, n3, ⋯ iterando esta regla:

  • Si ni es par, ni+1 = ni/2.

  • Si ni es impar, ni+1 = 3ni + 1.

La conjetura de Collatz establece que todos los enteros positivos tienen una secuencia de granizo que termina en 1.

% Hailstone sequence u, c(u), c(c(u)),...
y = u;
while y(end) ~= 1
    y(end+1) = c(y(end));
end
disp(y);

function n = c(n)
% Compute next number in hailstone sequence.
% If n is even, then c(n) = n/2.
% If n is odd, then c(n) = 3*n+1.
    if rem(n,2) == 0
        n = n/2;
    else
        n = 3*n+1;
    end
end
El script ejecuta un bucle while que llama de forma repetida a la función auxiliar c hasta que produce un valor de salida de 1. La función c consiste en una instrucción condicional if-else cuya salida depende de la paridad de la entrada.

Para convertir este script en un diagrama de flujo y en una función gráfica:

  1. Abra un gráfico nuevo independiente.

    edit hailstone.sfx
  2. En la pestaña State Chart (Gráfico de estados), seleccione Pattern > Select File.

  3. En el cuadro de diálogo, elija el script de MATLAB y haga clic en Open. Pattern Wizard añade un diagrama de flujo y una función gráfica al gráfico de Stateflow. Haga doble clic en la función gráfica para ver su contenido.

    Flow chart that automatically generated from a MATLAB script.

  4. En el panel Symbols, haga clic en Resolve Undefined Symbols . El editor de Stateflow resuelve u e y como datos locales.

  5. Guarde el gráfico.

  6. Para ejecutar el gráfico desde el Editor de Stateflow, introduzca un valor de u = 9 en el panel Symbols y haga clic en Run . Mientras se está ejecutando el diagrama de flujo, el editor de Stateflow resalta las transiciones activas mediante animación del gráfico. Cuando se detiene la ejecución, la ventana de comandos de MATLAB muestra la secuencia de granizo empezando por el valor 9:

         9    28    14     7    22    11    34    17    52    26    13    40    20    10     5    16     8     4     2     1
    
  7. Haga clic en Stop .

Puede copiar los diagramas de flujo y las funciones gráficas generadas y pegarlas en otros gráficos, incluidos los gráficos de Stateflow en modelos de Simulink®. Si el código de MATLAB utiliza funcionalidades restringidas para la generación de código en Simulink, debe modificar las acciones del diagrama de flujo antes de simular el gráfico. Para obtener más información, consulte Call Extrinsic MATLAB Functions in Stateflow Charts.

Nota

Suponga que utiliza nargin en una función de MATLAB que convierte a una función gráfica en un gráfico. Puesto que nargin cuenta el objeto de gráfico como uno de los argumentos de entrada de la función gráfica, el valor de nargin de la función gráfica es igual a 1 más el valor de nargin de la función de MATLAB original. Para obtener más información, consulte Execute a Standalone Chart.

Temas relacionados