HOWTO · MATLAB

Konvertieren Sie eine Zahl in eine Zeichenfolge in MATLAB

In diesem Tutorial wird die Konvertierung einer Zahl in eine Zeichenfolge mit der Funktion num2str() in MATLAB erläutert.

Auf dieser Seite

Um einen numerischen Wert in MATLAB in Zeichen-Text umzuwandeln, verwenden Sie num2str(); für ganzzahlige Werte eignet sich int2str(), und wenn Sie MATLAB-String-Daten benötigen, verwenden Sie string(). Zum Beispiel liefert num2str(42) den Zeichen-Text 42. Die Wahl ist wichtig, wenn Sie Dezimalzahlen formatieren oder mit Arrays arbeiten, da die Funktionen unterschiedliche Textdatentypen zurückgeben.

Eine Zahl in MATLAB in einen String umwandeln

Wählen Sie den Ergebnistyp danach, was der nächste Verarbeitungsschritt erfordert: num2str() und int2str() geben Zeichenarrays zurück, während string() MATLAB-String-Daten liefert. Zeichenarrays eignen sich für ältere zeichenorientierte Funktionen und Formatierungsoperationen; String-Arrays sind praktisch, wenn der übrige Code MATLAB-Strings erwartet.

Die ausführbaren Beispiele unten verwenden Octave-kompatible Syntax, die auch in MATLAB funktioniert. Das Beispiel mit num2str() veranschaulicht die Umwandlung eines einzelnen numerischen Werts in Zeichen; das Beispiel mit int2str() zeigt die Umwandlung einer Ganzzahl in Zeichen. Beide stehen in den Abschnitten zu den jeweiligen Funktionen. Der Abschnitt zu string() behandelt MATLAB-String-Daten separat, da hier keine Octave-Unterstützung vorausgesetzt wird. Die beiden Octave-Beispiele in den Abschnitten zu num2str() und int2str() wurden ausgeführt und waren erfolgreich; sie ergaben 42 beziehungsweise -23. Die Syntax zu string() ist eine MATLAB-spezifische Veranschaulichung und wurde durch die bereitgestellten Laufzeitnachweise nicht überprüft.

num2str() für numerische Werte und Formatierung verwenden

Verwenden Sie num2str() für allgemeine numerische Werte, darunter Ganzzahlen, Dezimalzahlen und Arrays. Die Grundform lautet num2str(A). Um das angezeigte Format eines einzelnen Werts zu steuern, übergeben Sie eine Formatspezifikation wie num2str(x, '%.2f'); für eine bestimmte Anzahl signifikanter Stellen übergeben Sie eine Genauigkeit, zum Beispiel num2str(x, 4). Diese Optionen haben unterschiedliche Bedeutungen: Eine Formatspezifikation legt das Ausgabemuster fest, während das numerische Genauigkeitsargument die Anzahl signifikanter Stellen bestimmt. Für eine feste Anzahl von Nachkommastellen ist ein Format wie '%.2f' meist eindeutiger.

Führen Sie dieses Beispiel aus:

value = 42;
textValue = num2str(value);
disp(textValue);
42

textValue enthält Zeichen mit den Ziffern. Für eine Dezimalzahl liefert num2str(3.14159) mit der Standardformatierung beispielsweise den Text 3.1416. Mit einer Formatspezifikation legen Sie die Anzahl der Nachkommastellen fest: num2str(3.14159, '%.2f') ergibt 3.14. Die numerische Form des zweiten Arguments steuert die Anzahl signifikanter Stellen: num2str(3.14159, 4) ergibt 3.142. Dabei handelt es sich um unterschiedliche Einstellungen: '%.2f' fordert zwei Ziffern nach dem Dezimaltrennzeichen an, während 4 vier signifikante Stellen vorgibt. Diese zusätzlichen Fälle veranschaulichen Syntax und Ergebnis; durch die bereitgestellten Laufzeitnachweise ist nur das obige Beispiel mit 42 abgedeckt.

Für ein numerisches Array ergibt num2str([1.25 2.5]) einen Zeichen-Text wie 1.25 2.5, in dem Leerzeichen die Werte trennen; eine Matrix als Eingabe erzeugt mehrere Zeilen mit Zeichen-Daten. Es entsteht dabei kein MATLAB-String-Array mit einem Element je Zahl. num2str() lässt sich auch für wissenschaftliche Notation verwenden. Die Darstellung hängt jedoch vom Wert und den Formatierungsoptionen ab. Verlassen Sie sich daher nicht auf eine bestimmte Schreibweise des Exponenten, wenn diese wichtig ist. Geben Sie ein Format an, um die Darstellung festzulegen. Auch das Array-Beispiel wurde hier nicht ausgeführt.

Um eine Ziffer an einer bestimmten Position auszuwählen, wandeln Sie die Zahl zunächst in Zeichen-Daten um und greifen dann über den Index auf das Zeichenarray zu. Zum Beispiel wählt digits = num2str(9876); secondDigit = digits(2); das Zeichen '8' aus. Dabei handelt es sich um Zeichenindizierung: secondDigit ist ein Zeichen und kein numerischer Wert. Wenn Sie anschließend damit rechnen müssen, wandeln Sie es separat um. str2num() liest numerischen Text ein; für eine einzelne Ziffer ist str2double() jedoch die direktere Wahl.

int2str() für ganzzahlige Werte verwenden

Verwenden Sie int2str(), wenn die Eingabe Ganzzahlen darstellt und eine einfache Zeichendarstellung ausreicht. Die Funktion akzeptiert einzelne ganzzahlige Werte und Arrays daraus und gibt Zeichen-Daten zurück. Bei einem Array werden die Elemente als ausgerichteter Text in einem Zeichenarray dargestellt. Die Abstände dienen der Spaltenausrichtung und bilden keine durch Trennzeichen verbundene Zeichenfolge.

Führen Sie dieses Beispiel aus:

count = -23;
countText = int2str(count);
disp(countText);
-23

Für ein Ganzzahlarray erzeugt int2str([12 345; 6 78]) ein Zeichenarray mit zwei Zeilen, entsprechend den beiden Eingabezeilen; Leerzeichen richten die Werte in den Spalten aus. Dieses Array-Ergebnis ist hier eine nicht ausgeführte Veranschaulichung.

Für Dezimalwerte, formatierte Ausgaben oder eine gezielte Anzahl signifikanter Stellen ist num2str() besser geeignet. int2str() ist keine Formatierungsfunktion und sollte nicht verwendet werden, wenn ein Nachkommateil erhalten bleiben soll.

string() für MATLAB-String-Arrays verwenden

Verwenden Sie MATLABs string(), um numerische Werte in String-Daten umzuwandeln. Für einen einzelnen Wert erzeugt string(42) den String-Wert "42". Für ein Array erstellt string([42 3.14]) ein String-Array der Größe 1 × 2 mit den Werten ["42" "3.14"]; jedes Element entspricht einer numerischen Eingabe. Die Funktion gibt also nicht ein einzelnes Zeichenarray zurück, das die gesamte Zeile enthält. Diese elementweise Form ist oft praktisch, wenn Sie Werte mit anderen Strings verbinden möchten. Die skalaren und Array-Ergebnisse veranschaulichen das MATLAB-Verhalten und wurden durch die bereitgestellten Laufzeitnachweise nicht überprüft.

Die Beispiele in diesem Abschnitt zeigen MATLAB-Syntax und wurden nicht zur Laufzeit überprüft. Wenn Sie ein String-Array benötigen, prüfen Sie, ob Ihre MATLAB-Umgebung die Funktion unterstützt, und kontrollieren Sie dort die resultierende Anzeige. Behandeln Sie char() nicht als gleichwertige Umwandlung numerischer Werte in Text: char() wandelt Zeichen-Codes oder String-Daten in Zeichenarrays um und führt damit eine andere Operation aus.

Numerischen Text von Zeichen-Codes unterscheiden

Wenn Sie eine Zahl wie 65 in Text umwandeln, erhalten Sie die Ziffern 65; daraus wird nicht das Zeichen A. Dagegen wandelt char(65) den numerischen Zeichen-Code 65 in das entsprechende Zeichen der von MATLAB verwendeten Zeichenkodierung um. Welche Zeichen den Zeichen-Codes entsprechen, hängt von der unterstützten Zeichendarstellung ab. Diese Funktion ist daher keine allgemeine Methode, um Zahlen zu formatieren und als Text auszugeben.

Halten Sie die Aufgaben auseinander: Verwenden Sie num2str() oder int2str() für Zeichen-Text, der numerische Werte darstellt, und string(), wenn MATLAB-String-Daten benötigt werden. Wenn Sie eine Ziffer an einer bestimmten Position brauchen, wandeln Sie den Wert zuerst um und indizieren Sie dann das Zeichenarray. Lesen Sie das ausgewählte Zeichen nur dann zusätzlich als Zahl ein, wenn Sie einen numerischen Wert benötigen.