Hauptinhalt

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Unterschiede zwischen MATLAB und C als Aktionssprache-Syntax

Stateflow®-Diagramme in Simulink®-Modellen haben eine Aktionsspracheigenschaft, die die Syntax für Zustands- und Übergangsaktionen definiert. Ein Symbol in der linken unteren Ecke des Diagramms zeigt die Aktionssprache für das Diagramm an.

  • MATLAB® als Aktionssprache.

  • C als Aktionssprache.

MATLAB ist die Standard-Aktionssprache für neue Stateflow-Diagramme. Um ein Diagramm zu erstellen, das C als Aktionssprache verwendet, geben Sie Folgendes ein:

sfnew -c

Vergleich der Funktionalität von Aktionssprachen

In dieser Tabelle sind die wichtigsten Unterschiede in der Funktionalität zwischen den beiden Aktionssprachen aufgeführt.

FunktionalitätMATLAB als AktionsspracheC als Aktionssprache

Vektor- und Matrixindexierung

Indexierung mit Eins beginnend, durch Klammern und Kommas begrenzt. Zum Beispiel A(4,5). Siehe Operationen für Vektoren und Matrizen in Stateflow.

Nullbasierte Indizierung, durch eckige Klammern begrenzt. Zum Beispiel A[3][4]. Siehe Operationen für Vektoren und Matrizen in Stateflow.

C-Konstrukte:

  • Inkrement- und Dekrementoperationen a++ und a--

  • Zuweisungsoperationen a += b, a –= b, a *= b und a /= b

  • Evaluierungsoperationen a != b und !a

  • Binäre Operationen a %% b, a >> b, a << b, a & b und a | b

  • Kommentarzeichen // und /* */

Autokorrektur der MATLAB-Syntax. Zum Beispiel wird a++ zu a = a+1 korrigiert. Siehe Autokorrektur bei Verwendung von MATLAB als Aktionssprache.

Unterstützt. Siehe Operationen für Stateflow-Daten.

Bedingte und zyklische Steueranweisungen in Zustandsaktionen

Unterstützt. Sie können beispielsweise if, for und while-Anweisungen in Statusaktionen verwenden. Siehe Schleifen und bedingte Anweisungen.

Nicht unterstützt. Verwenden Sie für bedingte und zyklische Muster stattdessen grafische Funktionen. Siehe Reuse Logic Patterns by Defining Graphical Functions.

Format der Übergangsaktionen

Die Autokorrektur schließt Übergangsaktionen in geschweifte Klammern {} ein. Siehe Übergangsaktionen.

Übergangsmaßnahmen müssen nicht in Klammern {} gesetzt werden. Siehe Übergangsaktionen.

Daten mit variabler Größe

Ändern Sie die Daten der Variablengrößentabelle in Zustands- und Übergangsaktionen. Weitere Informationen finden Sie unter Variable-Size Data in Charts That Use MATLAB as the Action Language.

Ändern Sie die Daten der Variablengrößentabelle mithilfe von:

  • MATLAB-Funktionen

  • Simulink-Funktionen

  • Truth-Tabellen, die MATLAB als Aktionssprache verwenden

Alle Berechnungen mit Daten variabler Größe müssen innerhalb dieser Funktionen erfolgen und nicht direkt in Zuständen oder Übergängen. Weitere Informationen finden Sie unter Variable-Size Data in Charts That Use C as the Action Language.

Festkomma-Konstrukte:

  • Spezieller Zuweisungsoperator :=

  • Kontextabhängige Konstanten wie 4.3C

Nicht unterstützt.

Unterstützt. Siehe Override Fixed-Point Promotion in C Charts und Fixed-Point Context-Sensitive Constants.

Komplexe Daten

Verwenden Sie die komplexe Zahlendarstellung a + bi oder den Operator complex. Siehe Operations for Complex Data in Stateflow.

Verwenden Sie den Operator complex. Die Darstellung komplexer Zahlen wird nicht unterstützt. Siehe Operations for Complex Data in Stateflow.

Datentypvermehrung

Befolgt die MATLAB-Regeln für die Eingabe. Wenn Sie beispielsweise Daten des Typs double zu Daten des Typs int32 hinzufügen, erhalten Sie Daten des Typs int32.

Beachtet die C-Typisierungsregeln. Wenn Sie beispielsweise Daten des Typs double zu Daten des Typs int32 hinzufügen, erhalten Sie Daten des Typs double.

Explizite Typumwandlungsoperationen

Verwenden Sie eine dieser Casting-Formen:

  • Typen-Umwandlungsfunktion in MATLAB. Zum Beispiel single(x).

  • cast-Funktion mit einem Typ-Schlüsselwort. Zum Beispiel cast(x,"int8").

  • cast-Funktion mit dem Schlüsselwort "like". Zum Beispiel cast(x,"like",z).

Der Operator type wird nicht unterstützt. Siehe Typecast-Operationen.

Verwenden Sie eine dieser Casting-Formen:

  • Typen-Umwandlungsfunktion in MATLAB. Zum Beispiel uint16(x).

  • cast-Funktion mit dem Operator type. Zum Beispiel cast(x,type(z)).

Typ-Schlüsselwörter für die cast-Funktion werden nicht unterstützt. Siehe Typecast-Operationen.

Skalare Expansion

Nicht unterstützt.

Unterstützt. Siehe Zuweisen von Werten zu allen Elementen einer Matrix.
Zeichenfolgendaten

Verwenden Sie doppelte Anführungszeichen ("...") als Begrenzungszeichen. Siehe Manage Textual Information by Using Strings.

Verwenden Sie doppelte ("...") oder einfache Anführungszeichen ('...') als Begrenzungszeichen. Siehe Manage Textual Information by Using Strings.

Spezifikation der Dateneigenschaften:

  • Erster Index

  • Speichern des Endwerts im Basisarbeitsbereich

  • Einheiten

Nicht unterstützt.

Unterstützt. Weitere Informationen finden Sie unter:

Umfang der Daten in grafischer Darstellung, Wahrheitstabelle und MATLAB-Funktionen

Constant, Parameter, Input, OutputLocal, Constant, Parameter, Input, Output, Temporary

Punktnotation zur Angabe von Zuständen, lokalen Daten, Nachrichten und lokalen Ereignissen innerhalb von MATLAB-Funktionen

Unterstützt. Siehe Identify Data by Using Dot Notation.

Nicht unterstützt.

Benutzerdefinierte Code-Funktionen und Variablen

Das Verhalten hängt vom Konfigurationsparameter Import Custom Code ab.

  • Wenn Sie Import Custom Code aktivieren, werden sowohl benutzerdefinierte Codefunktionen als auch Variablen in Zuständen und Übergängen unterstützt (Standard).

  • Wenn Sie Import Custom Code deaktivieren, werden nur benutzerdefinierte Code-Funktionen unterstützt. Verwenden Sie die coder.ceval (MATLAB Coder)-Funktion.

Siehe Reuse Custom Code in Stateflow Charts und Import custom code (Simulink).

Benutzerdefinierte Code-Funktionen und Variablen werden in Zuständen und Übergängen unterstützt.

Strukturparameter

Einstellbare und nicht einstellbare Parameter werden unterstützt.

Es werden nur einstellbare Parameter unterstützt.

Verwendung des globalen fimath-Objekts

Unterstützt.

Nicht unterstützt.

Richtlinien für die Verwendung von MATLAB als Aktionssprache

Verwendung der Eins-basierten Indexierung für Vektoren und Matrizen

Die Eins-basierte Indexierung entspricht der MATLAB-Syntax. Weitere Informationen finden Sie unter Indizierungsnotation.

Verwenden runder Klammern anstelle von eckigen Klammern, um in Vektoren und Matrizen zu indizieren

Diese Aussage ist gültig:

a(2,5) = 0;

Diese Aussage ist ungültig:

a[2][5] = 0;

Weitere Informationen finden Sie unter Indizierungsnotation.

Verwenden des MATLAB-Formats für Kommentare

Nutzen Sie % bei der Angabe von Kommentaren in Zuständen und Übergängen, damit sie mit MATLAB übereinstimmen. Zum Beispiel ist der folgende Kommentar gültig:

% This is a valid comment in the style of MATLAB

Kommentare im C-Stil, wie // und /* */, werden automatisch in % korrigiert.

Einschließen von Übergangsmaßnahmen in Klammern

Diese Übergangskennzeichnung enthält eine gültige Übergangsmaßnahme:

E [x > 0] / {x = x+1;}

Diese Übergangskennzeichnung ist falsch, wird aber automatisch in die gültige Syntax korrigiert.

E [x > 0] / x = x+1;

Verwenden Sie keine Kontrollflusslogik in Bedingungsaktionen und Übergangsaktionen

Die Ablaufsteuerungslogik (wie if, switch, for und while-Anweisungen) wird nur in Zustandsaktionen unterstützt. Die Verwendung der Ablaufsteuerungslogik in Bedingungsaktionen oder Übergangsaktionen führt zu einem Syntaxfehler.

Deklarieren Sie keine globalen oder persistenten Variablen in Zustandsaktionen

Die Schlüsselwörter global und persistent werden in Zustandsaktionen nicht unterstützt.

Zuweisen eines Anfangswerts zu lokalen und Ausgabedaten

Wenn MATLAB als Aktionssprache verwendet wird, führen Daten, die ohne einen Anfangswert gelesen werden, zu einem Fehler.

Schließen Sie Typpräfixes für Kennungen von Aufzählungswerten ein

Die Kennung TrafficColors.Red ist gültig, Red jedoch nicht.

Zum Generieren von Code aus Ihrem Modell verwenden Sie MATLAB-Sprachfunktionen, die für die Codegenerierung unterstützt werden.

Andernfalls verwenden Sie coder.extrinsic, um nicht unterstützte Funktionen aufzurufen, wodurch die gewünschte Funktionalität für die Simulation bereitgestellt wird, jedoch nicht im generierten Code. Eine Liste der unterstützten Features und Funktionen finden Sie unter Sprache, Funktion und Objektunterstützung (Simulink).

Siehe auch

Themen