Extrahieren Sie Werte aus einem String mit sscanf() in MATLAB

Ammar Ali 8 Oktober 2023
Extrahieren Sie Werte aus einem String mit sscanf() in MATLAB

In diesem Tutorial wird das Scannen einer Zeichenfolge gemäß einem bestimmten Format mit der Funktion sscanf() in MATLAB erläutert.

Extrahieren Sie Werte aus einem String mit der Funktion sscanf() in MATLAB

Die Funktion sscanf() scannt einen String nach einem vorgegebenen Format in MATLAB. Wenn der angegebene String beispielsweise Zahlen enthält und wir sie voneinander trennen und in einer Matrix speichern möchten, können wir die Funktion sscanf() verwenden.

Das erste Argument der Funktion sscanf() ist die Eingabezeichenfolge, und das zweite Argument ist das Format, das wir verwenden möchten, um die Zeichenfolge wie %d nach numerischen Werten zu durchsuchen. Das dritte Argument ist optional und definiert die Größe für das Scannen der Zeichenfolge, und es ist nützlich, wenn wir nicht die gesamte Zeichenfolge scannen möchten.

Wenn wir die Größe nicht angeben, scannt die Funktion die gesamte Zeichenfolge. Die Funktion sscanf() gibt vier Argumente zurück.

Das erste Ausgabeargument ist die Matrix, die das Ergebnis des Scannens der Zeichenfolge enthält. Das zweite Ausgabeargument ist optional und gibt die Anzahl der Elemente zurück, die die Funktion erfolgreich gescannt hat.

Das dritte optionale Ausgabeargument gibt die Fehlermeldung zurück, die beim Scannen des Strings aufgetreten ist. Das vierte Argument ist ebenfalls optional und gibt den folgenden Index der Position zurück, an der das sscanf() den Scanvorgang gestoppt hat.

Lassen Sie uns zum Beispiel einen String erstellen, der mehrere Fließkommazahlen enthält, und diese mit der Funktion sscanf() in MATLAB trennen.

Code:

clc
clear

My_S = "3.1 2.2 5.2";
num = sscanf(My_S,'%f')

Ausgang:

num =

    3.1000
    2.2000
    5.2000

Im obigen Code wird der Befehl clc verwendet, um das MATLAB-Befehlsfenster zu löschen, und der Befehl clear wird verwendet, um den Arbeitsbereich zu bereinigen. Wie wir in der Ausgabe sehen, wurden alle Gleitkommazahlen getrennt und in einer Matrix gespeichert.

Lassen Sie uns nun eine weitere Zeichenfolge definieren, die Zeichen und Zahlen enthält, und versuchen, die Zahlen zu trennen.

Code:

clc
clear

My_S = "3.1 2.2 hello 5.2";
[num, count, msg, index] = sscanf(My_S,'%f')

Ausgang:

num =

    3.1000
    2.2000


count =

     2


msg =

    'Matching failure in format.'


index =

     9

Der obige Code definierte vier Ausgabeargumente, um alle Ausgaben der Funktion sscanf() zu speichern. Im obigen Ergebnis enthält die Variable num nur zwei Elemente, aber wie wir sehen können, gibt es vier Zahlen in der angegebenen Zeichenfolge.

Der Grund wird in der Variable msg zurückgegeben, die besagt, dass ein übereinstimmender Fehler im angegebenen Format vorliegt. Wir legen im obigen Code fest, dass wir die Gleitkommazahlen mit dem Symbol %f scannen möchten, wenn also die Funktion zur Nicht-Gleitkommazahl wechselt, also dem Zeichen h, stoppt sie dort.

Es hat die Fehlermeldung zusammen mit dem Index zurückgegeben, bei dem es aufgehört hat, den String zu scannen, der in der Ausgabe 9 ist.

Wir können die Größe auch als drittes Eingabeargument innerhalb der Funktion sscanf() definieren. Die Größe bezieht sich auf die Anzahl in der obigen Ausgabe; Wenn wir die Größe als 1 definieren, liest die Funktion nur das erste Element des Strings.

Bei einer Matrix können wir den String auch als m*n definieren. Dies ist nützlich, wenn wir nur die bestimmte Zeile oder Spalte einer bestimmten Matrix lesen möchten.

Wir können verschiedene Arten von Formaten verwenden, um die angegebene Zeichenfolge zu scannen, wie z. x für Hexadezimalzahlen oder Zahlen zur Basis 16 und %f für Gleitkommazahlen.

Überprüfen Sie diesen Link für weitere Details über die Funktion sscanf().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Verwandter Artikel - MATLAB String