Integrieren von MATLAB-Funktionen in Stateflow-Diagramme
Sie können MATLAB®-Funktionen verwenden, um komplexe Algorithmen in Ihren Stateflow®-Diagrammen zu implementieren. Mithilfe von MATLAB-Funktionen können Sie:
Mathematische Berechnungen ausdrücken, Daten verarbeiten und Statistiken analysieren.
Bewährte MATLAB-Algorithmen in Ihre Zustandsmaschine integrieren.
Komplexe Logik kapseln, um das Diagrammdesign übersichtlicher zu gestalten.
Weitere Informationen zum Erstellen von MATLAB-Funktionen zur Verwendung in Stateflow-Diagrammen finden Sie unter Reuse MATLAB Code by Defining MATLAB Functions.
Hinzufügen von MATLAB-Funktionen zu einem Stateflow-Diagramm
In diesem Beispiel erstellen Sie ein Modell, das zwei MATLAB-Funktionen enthält, und verwenden diese Funktionen dann zur Berechnung des Mittelwerts und der Standardabweichung der Daten, die Sie in das Diagramm eingeben.
Einrichten des Modells
Erstellen Sie ein neues Simulink®-Modell.
Fügen Sie einen Chart-Block, einen Constant-Block und zwei Display-Blöcke hinzu.
Setzen Sie den Wert des „Constant“-Blocks auf [2 3 4 5].

Speichern Sie das Modell als
call_stats_function_stateflow.
Konfigurieren des Stateflow-Diagramms
Öffnen Sie den Diagramm-Block.
Fügen Sie zwei MATLAB-Funktionen hinzu, indem Sie das Symbol
verwenden.Beschriften Sie die Funktionen mit diesen Signaturen:
meanout = meanstats(vals)stdevout = stdevstats(vals)
Fügen Sie mit dieser Bedingungsaktion einen Standardübergang zu einer Endverbindung hinzu:
{ mean = meanstats(invals); stdev = stdevstats(invals); }
Wenn die Argumente einer Funktionssignatur Skalare sind, überprüfen Sie, ob die Eingaben und Ausgaben der Funktionsaufrufe den Regeln der skalaren Erweiterung entsprechen. Weitere Informationen finden Sie unter Zuweisen von Werten zu allen Elementen.
Definieren von Datenelementen
Öffnen Sie den Bereich Symbols.
Legen Sie die Datentypen für diese Daten mithilfe der Spalte Type fest:
invals: Input Datastdev: Output Datamean: Output Data

Programmieren der Standardabweichungsfunktion
Öffnen Sie die stdevstats-Funktion und fügen Sie diesen Code hinzu:
function stdevout = stdevstats(vals) %#codegen % Calculate standard deviation len = length(vals); stdevout = sqrt(sum(((vals-avg(vals,len)).^2))/len); function meanfcn = avg(inputArray,inputSize) meanfcn = sum(inputArray)/inputSize;
Die Funktion sum berechnet den Wert von stdevout. Die Kompilierungsrichtlinie %#codegen hilft bei der Erkennung von Syntax- und Semantikverstößen während der Kompilierung in MATLAB-Funktionen, die für die Codegenerierung unterstützt werden.
Programmieren der Mittelwertfunktion
Öffnen Sie die meanstats-Funktion und fügen Sie diesen Code hinzu:
function meanout = meanstats(vals) %#codegen % Calculate statistical mean len = length(vals); meanout = avg(vals,len); % Plot results (simulation only) coder.extrinsic("plot"); plot(vals,"-+"); function meanfcn = avg(inputArray,inputSize) meanfcn = sum(inputArray)/inputSize;
Die Funktion length unterstützt die Codegenerierung und gibt die Länge eines Vektors zurück. Die Funktion avg berechnet den Wert von meanout. Sie definieren plot als extrinsisch, da es für die Codegenerierung nicht unterstützt wird.
Simulieren des Modells
Verbinden Sie die Simulink-Blöcke mit den Eingabe- und Ausgabeports des Diagramms.

Klicken Sie auf Run. Die Zahlen für Mittelwert und Standardabweichung werden in den Display-Blöcken angezeigt.

Generieren von Code aus Diagrammen, die MATLAB-Funktionen verwenden
Um Code zu generieren, müssen alle Funktionen die Codegenerierung unterstützen. Wenn eine Funktion die Codegenerierung nicht unterstützt, können Sie sie mit coder.extrinsic (Simulink) als Ausnahme markieren. Eine Liste der Funktionen, die MATLAB für die Codegenerierung unterstützt, finden Sie unter Functions and Objects Supported for C/C++ Code Generation (MATLAB Coder).
Siehe auch
coder.extrinsic (Simulink)