HOWTO · MATLAB
MATLAB-Variablentyp prüfen
Mit class() lässt sich die Klasse eines Werts ermitteln; whos zeigt Variablen im aktuellen MATLAB-Arbeitsbereich an.
Auf dieser Seite
Um einen MATLAB-Wert zu prüfen, verwenden Sie class(), um seinen Klassennamen abzurufen, whos, um Variablen im aktuellen Arbeitsbereich zu überblicken, und Prädikate wie isa(), ischar() oder isnumeric(), um eine Bedingung logisch auszuwerten. Welche Methode passt, hängt davon ab, ob Sie einen einzelnen Wert bestimmen, Arbeitsbereichsvariablen untersuchen oder einen Programmzweig steuern möchten.
Variablentyp mit class() in MATLAB bestimmen
Die Funktion class() gibt einen Zeichenvektor mit dem Klassennamen eines Werts zurück. MATLAB behandelt beispielsweise das Zahlenliteral 42 als double und den Text 'Hello, MATLAB!' in einfachen Anführungszeichen als Zeichenarray der Klasse char. Das folgende mit Octave kompatible Skript zeigt die Abfrage und die Prädikate in einem Ablauf.
numericVar = 42;
charVar = 'Hello, MATLAB!';
fprintf('numericVar class: %s\n', class(numericVar));
fprintf('charVar class: %s\n', class(charVar));
fprintf('numericVar is double: %d\n', isa(numericVar, 'double'));
fprintf('charVar is a character array: %d\n', ischar(charVar));
fprintf('numericVar is numeric: %d\n', isnumeric(numericVar));
if isa(numericVar, 'double')
fprintf('Process numericVar as a double.\n');
end
numericVar class: double
charVar class: char
numericVar is double: 1
charVar is a character array: 1
numericVar is numeric: 1
Process numericVar as a double.
Verwenden Sie in MATLAB class(wert), wenn Sie den tatsächlichen Klassennamen benötigen. Der Aufruf beschreibt einen einzelnen Wert und erstellt keine Übersicht über den Arbeitsbereich.
Variablentypen mit dem Befehl whos in MATLAB untersuchen
Der Befehl whos fasst Variablen im aktuellen Arbeitsbereich zusammen. Dazu gehören ihre Namen, Größen, Byte-Anzahlen, Klassen und Attribute. Geben Sie whos ein, um alle dort sichtbaren Variablen aufzulisten, oder verwenden Sie whos numericVar, um eine benannte Variable zu untersuchen. Die Spalte Class erleichtert den Vergleich mehrerer Werte. Die Übersicht ist auf Variablen beschränkt, die im aktuellen Arbeitsbereich oder Gültigkeitsbereich sichtbar sind; einen noch nicht zugewiesenen Ausdruck kann whos daher nicht direkt prüfen. Für diese Frage verwenden Sie class(ausdruck).
Mit isa() in MATLAB auf einen bestimmten Typ prüfen
Verwenden Sie isa(wert, 'typName'), wenn Ihr Code wissen muss, ob ein Wert zu einer bestimmten Klasse gehört. Bei numericVar = 42 und charVar = 'Hello, MATLAB!' liefern isa(numericVar, 'double') und isa(charVar, 'char') logisch wahr; isa(numericVar, 'single') liefert falsch. Das Ergebnis kann direkt eine if-Anweisung steuern, wie im Skript oben. isa() berücksichtigt auch Klassenbeziehungen in MATLAB: Die Funktion kann für eine Oberklasse oder Schnittstelle wahr liefern, selbst wenn diese nicht die exakte Klasse des Werts ist. Mit class(wert) rufen Sie dagegen den Klassennamen selbst ab.
Zeichenarrays mit ischar() in MATLAB prüfen
Die Funktion ischar() gibt einen logischen Wert zurück, der angibt, ob die Eingabe ein Zeichenarray ist. Für charVar = 'Hello, MATLAB!' ist ischar(charVar) wahr, während ischar(42) falsch ist. Mit if ischar(wert) können Sie die Textverarbeitung auswählen, wenn eine Funktion Zeichenarray-Eingaben erwartet. MATLAB-String-Arrays, die mit doppelten Anführungszeichen geschrieben werden, sind ein eigener Typ und bestehen diese Zeichenarray-Prüfung nicht. Diese Unterscheidung ist hilfreich, wenn ein Programm sowohl Zeichenvektoren als auch String-Werte akzeptiert.
Numerische Werte mit isnumeric() in MATLAB prüfen
Mit isnumeric(wert) testen Sie, ob ein Wert einen numerischen Typ hat. Für die Beispiele oben ist isnumeric(numericVar) wahr und isnumeric(charVar) falsch. Das Prädikat umfasst numerische MATLAB-Klassen wie double, single und die Ganzzahlklassen; es bedeutet nicht, dass ein akzeptierter Wert speziell ein double ist. Logische Werte gelten bei diesem Prädikat nicht als numerisch. Wenn eine bestimmte Klasse erforderlich ist, prüfen Sie sie mit isa(wert, 'double') oder lesen Sie den genauen Namen mit class(wert) aus.
Fazit
Mit class() rufen Sie den Klassennamen eines einzelnen Werts ab, mit whos überblicken Sie Variablen im aktuellen Arbeitsbereich und mit isa(), ischar() oder isnumeric() erhalten Sie eine logische Bedingung für Ihren Code. Die Werkzeuge beantworten unterschiedliche Fragen: Verwenden Sie class() oder whos zur Untersuchung und wählen Sie das Prädikat passend zu der Anforderung, die Ihr Programm erfüllen soll.