Erzeugen einer XML-Datei mit Matlab

Das Erzeugen von XML-Dateien gestaltet etwas schwieriger als z.B. das Speichern von Graphen. MATLAB bietet prinzipiell zwei Möglichkeiten, XMK-Dateien zu erzeugen: Da die Daten in XML als Text hinterlegt sind können XML-Dateien analog zu Textdateien erzeugt werden. Eine andere Möglichkeit bietet die MATLAB-Funktion xmlwrite. Dazu wird in jedoch erst in einem späteren Kapitel wieder eingegangen.

Da XML-Dateien eine geeignete Möglichkeit darstellen, strukturierte Daten zu speichern, werden Sie in der Übung eine entsprechende Funktion in MatLab implementieren. Ihre Funktion muss dabei folgende Tätigkeiten ausführen können:

  • Eine Datei erzeugen
  • Eine Datei öffnen
  • Eine Zeile in eine Datei schreiben
  • Eine geöffnete Datei schließen.
  • Um diese Tätigkeiten umzusetzen, stellt Matlab folgende Befehle zur Verfügung:

     

    fopen()

    >> fopen(Pfad, Zugriffsrecht)

    Mit fopen() kann eine Datei geöffnet werden. Dazu müssen als Argumente der Dateiname und das Zugriffsrecht, mit dem auf die Datei zugegriffen werden soll, angegeben werden. Das Zugriffsrecht gibt die Art und Weise an, mit der Sie auf die Datei zugreifen. Mögliche Zugriffsarten sind:

    • lesen Zugriffsrecht = 'r'
    • schreiben Zugriffsrecht = 'w' (falls keine Datei existiert, wird eine neue Datei erzeugt)
    • an bestehenden Text anhängen Zugriffsrecht = 'a' (falls keine Datei existiert, wird eine neue Datei erzeugt)

     

    Beispiel: >> fopen('TMI_Klausur.txt','r')

    Wenn Sie mit "schreiben" auf eine Datei zugreifen, wird der bisherige Inhalt der Datei gelöscht!
    Der Rückgabewert der Funktion fopen() ist der sogenannte file identifier. Wenn die Datei nicht geöffnet werden konnte, wird als file identifier -1 zurückgegeben. MatLab nutzt den file identifier, um unterschiedliche Dateien zu unterscheiden. Speichern Sie den file identifier immer in einer Variablen, da Sie ihn für weitere Funktionen benötigen!

    Beispiel:
    >> fileID = fopen('TMI_Klausur.txt','r')

     

    fclose()

    >> fclose(fileID)Um eine Datei nach dem Ende aller Schreib- und Leseoperationen wieder zu schließen, verwenden Sie fclose(). Als Argument muss die beim Öffnen der Datei erzeugte FileID übergeben werden, um die zu schließende Datei zu identifizieren. Sobald die Datei geschlossen wurde, liefert fclose() eine 0 als Rückgabewert.

    Erst wenn Sie die Datei schließen, werden alle Änderungen endgültig in die Datei geschrieben.

     

    fprintf()

    >> fprintf(fileID, String)
    >> fprintf(fileID, [String1 String2 String3])

    Mit fprintf() kann der Inhalt einer Variablen in eine Datei geschrieben werden. Dazu müssen als Argumente der file identifier (damit eindeutig ist, in welche Datei geschrieben werden soll) und die Variable (im Stringformat!), die in die Datei geschrieben werden soll, angegeben werden. Sollen mehrere Strings geschrieben werden, kann man sie mit eckigen Klammern zusammenfassen.

    Es existiert noch eine weitere Implementierung der Funktion fprintf():
    >> fprintf(file identifier, Formatierung, Wert)
    File identifier wird wie bisher verwendet, Wert kann sowohl einen String als auch eine Zahl oder einen Vektor enthalten. Die Formatierung einer Zahl hat beispielsweise die Form: '%5.2i'

    Dabei bedeutet 5, dass mindestens 5 Zeichen für den zu schreibenden Inhalt freigehalten werden. 2 gibt die Anzahl der Nachkommastellen an, die ausgegeben werden. i legt das Zahlenformat fest. Mögliche Zahlenformate sind unter anderem:

  • e Wissenschaftliche Notation 1.2346e+002
  • f Festkommanotation 123.4568
  • i Ganzzahlnotation 1.2346e+002 (anstelle 1 siehe unten)
  •  

    (als Beispiel ist jeweils die Zahl 123,456789 in der entsprechenden Notation bei '%8.4' angegeben)

    i sollte sinnvollerweise nur zusammen mit ganzen Zahlen verwendet werden. Bei Dezimalzahlen verhält sich i genau wie e. Dezimalzahlen können gegebenenfalls mit round() zu ganzen Zahlen gerundet werden.

    Hinweis: Beachten Sie, dass die Formatierung immer in Hochkommata stehen muss !

    Weiterhin können in einen String auch sogenannte Fluchtzeichen integriert werden:

    • für neue Zeile (für Windows Eitoren muss \r genutzt werden)
    • für Tabulator
    • %% für das Prozentzeichen


    Beispiel
    Im folgenden Beispiel wird in einer Datei erst ein Tabulator gesetzt, anschließend die Zahl pi in Festkommanotation geschrieben und zuletzt in eine neue Zeile gewechselt. >> fprintf(fileID,' %6.4f ', pi)

     

    num2str()

    >> num2str(Variable)

    num2str() konvertiert eine Variable, die ein Skalar (keine Matrix) ist, in einen String. num2str() ist vor allem nützlich, wenn Variablen für eine Bildschirmausgabe in einen String integriert werden müssen.

    Beispiel
    >> fprintf(fileID,['Es wurden ' num2str(anzahl_Datensaetze) ' Datensaetze erfasst !'])