Main Content

Umwandlung von MATLAB-Code in Stateflow-Flussdiagramme

Verwenden Sie den Pattern Wizard, um Ihren MATLAB®-Code in Stateflow®-Flussdiagramme und grafische Funktionen umzuwandeln. Folgende Muster werden bei der Umwandlung unterstützt:

  • if, if-else und andere verschachtelte Entscheidungsanweisungen

  • for- und while-Schleifen

  • switch-Anweisungen

Der Pattern Wizard kann MATLAB-Funktionen und -Skripte umwandeln.

  • MATLAB-Funktionen werden in grafische Stateflow-Funktionen umgewandelt.

  • MATLAB-Skripte werden in Stateflow-Flussdiagramme umgewandelt.

Die Umwandlung von MATLAB-Code wird nur in eigenständigen Stateflow-Diagrammen unterstützt. Weitere Informationen finden Sie unter Create Stateflow Charts for Execution as MATLAB Objects.

Erstellen von Flussdiagrammen aus MATLAB-Skripten

Dieses MATLAB-Skript verifiziert eine Instanz der Collatz-Vermutung empirisch. Wenn der numerische Eingang u ist, berechnet das Diagramm die Hagelschlag-Zahlenfolge n0 = u, n1, n2, n3, ⋯ durch Iteration dieser Regel:

  • Wenn ni gerade ist, dann ist ni+1 = ni/2.

  • Wenn ni ungerade ist, dann ist ni+1 = 3ni + 1.

Die Collatz-Vermutung besagt, dass es für jede positive Ganzzahl eine Hagelschlag-Zahlenfolge gibt, die schließlich eins erreicht.

% 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
Das Skript führt eine while-Schleife aus, die wiederholt die Hilfsfunktion c aufruft, bis sie einen Ausgabewert von eins erzeugt. Die Funktion c besteht aus einer bedingten if-else-Anweisung, deren Ausgang von der Parität des Eingangs abhängt.

Um dieses Skript in ein Flussdiagramm und eine grafische Funktion umzuwandeln:

  1. Öffnen Sie ein eigenständiges Diagramm.

    edit hailstone.sfx
  2. Wählen Sie auf der Registerkarte State Chart die Option Pattern > Select File.

  3. Wählen Sie im Dialogfenster das MATLAB-Skript und klicken Sie auf Open. Der Pattern Wizard fügt Ihrem Stateflow-Diagramm ein Flussdiagramm und eine grafische Funktion hinzu. Doppelklicken Sie auf die grafische Funktion, um deren Inhalt anzuzeigen.

    Flow chart that automatically generated from a MATLAB script.

  4. Klicken Sie im Fensterbereich Symbols auf Resolve Undefined Symbols . Der Stateflow-Editor löst u und y als lokale Daten auf.

  5. Speichern Sie Ihr Diagramm.

  6. Zum Ausführen des Diagramms im Stateflow-Editor geben Sie im Fensterbereich Symbols einen Wert von u = 9 ein und klicken Sie auf Run . Während der Ausführung des Flussdiagramms hebt der Stateflow-Editor die aktiven Übergänge durch Diagrammanimation hervor. Wenn die Ausführung beendet ist, wird die Hagelschlag-Zahlenfolge beginnend mit einem Wert von neun im MATLAB-Befehlsfenster angezeigt:

         9    28    14     7    22    11    34    17    52    26    13    40    20    10     5    16     8     4     2     1
    
  7. Klicken Sie auf Stop .

Sie können die generierten Flussdiagramme und grafischen Funktionen kopieren und in andere Diagramme einfügen, einschließlich Stateflow-Diagramme in Simulink®-Modelle. Wenn Ihr MATLAB-Code eine Funktionalität verwendet, die für die Codegenerierung in Simulink eingeschränkt ist, müssen Sie die Flussdiagrammaktionen vor dem Simulieren des Diagramms ändern. Weitere Informationen finden Sie unter Call Extrinsic MATLAB Functions in Stateflow Charts.

Hinweis

Angenommen Sie verwenden nargin in einer MATLAB-Funktion, die Sie in eine grafische Funktion in einem Diagramm umwandeln. Da nargin das Diagrammobjekt als eines der Eingangsargumente der grafischen Funktion zählt, ist der Wert von nargin in der grafischen Funktion gleich eins plus dem Wert von nargin in der ursprünglichen MATLAB-Funktion. Weitere Informationen finden Sie unter Execute a Standalone Chart.

Verwandte Themen