MATLAB - Datenausgabe
Datenexport (oder -ausgabe) in MATLAB bedeutet, in Dateien zu schreiben. Mit MATLAB können Sie Ihre Daten in einer anderen Anwendung verwenden, die ASCII-Dateien liest. Hierfür bietet MATLAB mehrere Datenexportoptionen.
Sie können die folgenden Dateitypen erstellen −
-
Rechteckige ASCII-Datendatei mit Trennzeichen aus einem Array.
-
Tagebuch- (oder Protokoll-) Datei der Tastenanschläge und der daraus resultierenden Textausgabe.
-
Spezialisierte ASCII-Datei mit Low-Level-Funktionen wie fprintf.
-
MEX-Datei, um auf Ihre C/C++- oder Fortran-Routine zuzugreifen, die in ein bestimmtes Textdateiformat schreibt.
Abgesehen davon können Sie Daten auch in Tabellenkalkulationen exportieren.
Es gibt zwei Möglichkeiten, ein numerisches Array als ASCII-Datendatei mit Trennzeichen zu exportieren −
-
Mit Speichern Funktion und Angabe des -ascii Qualifizierer
-
Verwenden von dlmwrite Funktion
Syntax für die Verwendung der Speicherfunktion ist −
save my_data.out num_array -ascii
wo, my_data.out ist die erstellte ASCII-Datendatei mit Trennzeichen num_array ist ein numerisches Array und −ascii ist der Bezeichner.
Syntax zur Verwendung von dlmwrite Funktion ist −
dlmwrite('my_data.out', num_array, 'dlm_char')
wo, my_data.out ist die erstellte ASCII-Datendatei mit Trennzeichen num_array ist ein numerisches Array und dlm_char ist das Trennzeichen.
Beispiel
Das folgende Beispiel demonstriert das Konzept. Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein −
Live-Demonum_array = [ 1 2 3 4 ; 4 5 6 7; 7 8 9 0]; save array_data1.out num_array -ascii; type array_data1.out dlmwrite('array_data2.out', num_array, ' '); type array_data2.out
Wenn Sie die Datei ausführen, zeigt sie das folgende Ergebnis an −
1.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 0.0000000e+00 1 2 3 4 4 5 6 7 7 8 9 0
Bitte beachten Sie, dass der Befehl save -ascii und die Funktion dlmwrite nicht mit Zell-Arrays als Eingabe funktionieren. Um eine ASCII-Datei mit Trennzeichen aus dem Inhalt eines Zellenarrays zu erstellen, können Sie
-
Konvertieren Sie entweder das Zellenarray mit cell2mat in eine Matrix Funktion
-
Oder exportieren Sie das Zellenarray mithilfe von Low-Level-Datei-I/O-Funktionen.
Wenn Sie Speichern verwenden Funktion zum Schreiben eines Zeichenarrays in eine ASCII-Datei, schreibt sie das ASCII-Äquivalent der Zeichen in die Datei.
Lassen Sie uns zum Beispiel das Wort „Hallo“ in eine Datei schreiben −
Live-Demoh = 'hello'; save textdata.out h -ascii type textdata.out
MATLAB führt die obigen Anweisungen aus und zeigt das folgende Ergebnis an. Dies sind die Zeichen der Zeichenfolge „Hallo“ im 8-stelligen ASCII-Format.
1.0400000e+02 1.0100000e+02 1.0800000e+02 1.0800000e+02 1.1100000e+02
In Tagebuchdateien schreiben
Tagebuchdateien sind Aktivitätsprotokolle Ihrer MATLAB-Sitzung. Die Tagebuchfunktion erstellt eine exakte Kopie Ihrer Sitzung in einer Datei auf der Festplatte, ohne Grafiken.
Um die Tagebuchfunktion einzuschalten, geben Sie −
eindiary
Optional können Sie den Namen der Protokolldatei angeben, sagen wir −
diary logdata.out
Um die Tagebuchfunktion auszuschalten −
diary off
Sie können die Tagebuchdatei in einem Texteditor öffnen.
Exportieren von Daten in Textdatendateien mit Low-Level-I/O
Bisher haben wir numerische Arrays exportiert. Möglicherweise müssen Sie jedoch andere Textdateien erstellen, einschließlich Kombinationen aus numerischen und Zeichendaten, nicht rechteckigen Ausgabedateien oder Dateien mit Nicht-ASCII-Codierungsschemata. Für diese Zwecke stellt MATLAB das Low-Level fprintf bereit Funktion.
Wie bei Low-Level-E/A-Dateiaktivitäten müssen Sie vor dem Exportieren eine Datei mit fopen öffnen oder erstellen Funktion und erhalten Sie die Dateikennung. Standardmäßig öffnet fopen eine Datei für den schreibgeschützten Zugriff. Sie sollten die Berechtigung zum Schreiben oder Anhängen angeben, z. B. 'w' oder 'a'.
Nach der Verarbeitung der Datei müssen Sie diese mit fclose(fid) schließen Funktion.
Das folgende Beispiel demonstriert das Konzept −
Beispiel
Erstellen Sie eine Skriptdatei und geben Sie den folgenden Code ein −
Live-Demo% create a matrix y, with two rows x = 0:10:100; y = [x; log(x)]; % open a file for writing fid = fopen('logtable.txt', 'w'); % Table Header fprintf(fid, 'Log Function\n\n'); % print values in column order % two values appear on each row of the file fprintf(fid, '%f %f\n', y); fclose(fid); % display the file created type logtable.txt
Wenn Sie die Datei ausführen, zeigt sie das folgende Ergebnis an −
Log Function 0.000000 -Inf 10.000000 2.302585 20.000000 2.995732 30.000000 3.401197 40.000000 3.688879 50.000000 3.912023 60.000000 4.094345 70.000000 4.248495 80.000000 4.382027 90.000000 4.499810 100.000000 4.605170
MATLAB