Main Content

Conversione del codice di MATLAB in diagrammi di flusso di Stateflow

Per trasformare il codice di MATLAB® in diagrammi di flusso e funzioni grafiche di Stateflow®, utilizzare la procedura guidata del modello. I modelli supportati per la conversione comprendono:

  • if, if-else e altre dichiarazioni decisionali annidate.

  • loop for e loop while.

  • dichiarazioni switch.

La procedura guidata del modello può convertire le funzioni e gli script di MATLAB.

  • Le funzioni di MATLAB sono convertite in funzioni grafiche di Stateflow.

  • Gli script di MATLAB sono convertiti in diagrammi di flusso di Stateflow.

La conversione del codice di MATLAB è supportata solo nei grafici Stateflow autonomi. Per ulteriori informazioni, vedere Create Stateflow Charts for Execution as MATLAB Objects.

Creazione di diagrammi di flusso dagli script di MATLAB

Questo script di MATLAB verifica empiricamente un'istanza della congettura di Collatz. Quando viene dato un input numerico u, lo script calcola la sequenza di Hailstone n0 = u, n1, n2, n3, ⋯ iterando questa regola:

  • Se ni è pari, allora ni+1 = ni/2.

  • Se ni è dispari, allora ni+1 = 3ni + 1.

La congettura di Collatz afferma che ogni intero positivo ha una sequenza di Hailstone che alla fine raggiunge l'uno.

% 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
Lo script esegue un loop while che chiama ripetutamente la funzione ausiliaria c finché non produce un valore di output pari a uno. La funzione c consiste in una dichiarazione condizionale if-else il cui output dipende dalla parità dell'input.

Per convertire questo script in un diagramma di flusso e in una funzione grafica:

  1. Aprire un nuovo grafico autonomo.

    edit hailstone.sfx
  2. Nella scheda State Chart, selezionare Pattern > Select File.

  3. Nella finestra di dialogo, scegliere lo script di MATLAB e fare clic su Open. La procedura guidata del modello aggiunge un diagramma di flusso e una funzione grafica al grafico Stateflow. Fare doppio clic sulla funzione grafica per visualizzarne il contenuto.

    Flow chart that automatically generated from a MATLAB script.

  4. Nel riquadro Symbols, fare clic su Resolve Undefined Symbols . L'Editor di Stateflow risolve u e y come dati locali.

  5. Salvare il grafico.

  6. Per eseguire il grafico dall'Editor di Stateflow, nel riquadro Symbols, inserire un valore di u = 9 e fare clic su Run . Durante l’esecuzione, l'Editor di Stateflow mette in evidenza le transizioni attive tramite l'animazione del grafico. Quando si arresta l'esecuzione, la finestra dei comandi di MATLAB visualizza la sequenza di Hailstone, partendo da un valore di nove:

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

È possibile copiare i diagrammi di flusso e le funzioni grafiche generate e incollarle in altri grafici, compresi i grafici Stateflow nei modelli di Simulink®. Se il codice di MATLAB utilizza funzionalità che sono limitate per la generazione di codice in Simulink, è necessario modificare le azioni del diagramma di flusso prima di simularlo. Per ulteriori informazioni, vedere Call Extrinsic MATLAB Functions in Stateflow Charts.

Nota

Si supponga di utilizzare nargin in una funzione di MATLAB che viene convertita in una funzione grafica in un grafico. Poiché nargin considera l'oggetto del grafico come uno degli argomenti di input della funzione grafica, il valore di nargin nella funzione grafica è uguale a uno più il valore di nargin nella funzione originale di MATLAB. Per ulteriori informazioni, vedere Execute a Standalone Chart.

Argomenti complementari