anwendungssoftware iii (matlab) - computer sciencesmliedl/data/matlab_inputoutput_vi.pdf · m....
TRANSCRIPT
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32
Anwendungssoftware III (MATLAB)VI – Eingaben und Ausgaben in MATLAB
Michael Liedlgruber
Fachbereich Computerwissenschaften
Universitat Salzburg
Sommersemester 2014
Eingaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 2 / 32
Um eine interaktive Eingabe des Benutzers in einem Skript zu erlauben, bietet
MATLAB die Funktion input.
Die Funktion wird folgendermaßen aufgerufen:
value = input(’Eingabeprompt’);
Standardmaßig erwartet input die Eingabe eines gultigen
MATLAB-Ausdrucks. Das Ergebnis dieses Ausdrucks wird dann der Variable
value zugewiesen wird.
Es ist also moglich, folgende Eingaben zu tatigen:
� einfache Werte
� Vektoren und Matrizen
� Funktionsaufrufe
Um dem Benutzer die Eingabe einer Zeichenkette (String) zu ermoglichen,
muss als zweiter Parameter ’s’ angegeben werden:
value = input(’Eingabeprompt’, ’s’);
Eingaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 3 / 32
Ein Beispiel zu Input
>> t = input(’Titel: ’, ’s’);
a = input(’Amplitude: ’);
x = input(’x-Werte: ’);
y = a * input(’f(x): ’);
plot(y); title(t);
Titel: Sinus -Plot % Eingabe des Titels <ENTER >
Amplitude: 10 % Eingabe von ’10’ <ENTER >
x-Werte: -pi :0.01:pi % Vektoreingabe <ENTER >
f(x): sin(x) % Angabe der Sinusfunktion <ENTER >
Das Ergebnis ist der folgende Plot:
0 100 200 300 400 500 600 700-10
0
10Sinus-Plot
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 4 / 32
Wir wissen bereits: der Wert einer Variable kann ausgegeben werden, indem
man den Namen der Variable im Command Window eingibt:
>> A = [1 2 3];
>> A
A =
1 2 3
Es gibt in MATLAB jedoch noch weitere Moglichkeiten, um Ausgaben zu
erreichen.
Vor allem, wenn die Ausgabe kompakter oder besser formatiert sein soll,
bieten sich folgende Funktionen an:
� disp
erzeugt eine einfache und kompakte Ausgabe.
� fprintf
erzeugt eine Ausgabe, welche aufgrund vieler Formatierungsoptionen
genau an individuelle Bedurfnisse angepasst werden kann.
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 5 / 32
Das disp-Kommando
Um einfache Strings auszugeben, ubergibt man disp den gewunschten String:
>> disp(’Dies ist ein Test -String’);
Dies ist ein Test -String
Der Wert von Variablen wird ausgegeben, indem man die entsprechende
Variable als Parameter verwendet:
>> x = 1:5;
>> x % normale Ausgabe
x = % Variablenname wird ausgegeben
1 2 3 4 5
>> disp(x); % kompakte Ausgabe - ohne Variablenname
1 2 3 4 5
>> disp(randn(3, 3)); % Ausgabe bei einer Matrix
-1.0265 -0.2318 -1.9804
-0.8697 -0.7515 -1.2938
0.8542 -1.0367 0.0822
Wir sehen: disp erzeugt eine kompakte Ausgabe (ohne Variablennamen).
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 6 / 32
Das fprintf-Kommando
Wir haben gesehen, dass die Funktion disp eine Ausgabe im Command
Window erzeugt.
Die Funktion fprintf erlaubt – im Gegensatz zu disp – zusatzlich eine exakte
Formatierung der Ausgabe.
Generelle Form des Aufrufs von fprintf:
fprintf(Formatstring , Variablen , ...)
Wir sehen
� Es gibt einen Formatstring. Dieser gibt an wie die Ausgabe der
angegebenen Variablen zu erfolgen hat (enthalt ublicherweise einen oder
mehrere Formatanweisungen).
� Es werden mehrere Variablen unterstutzt.
Hinweis: die Funktion sprintf funktioniert ahnlich wie fprintf, gibt jedoch
nichts im Command Window aus, sondern gibt einen String zuruck, welcher
die formatierte Ausgabe enthalt (siehe doc sprintf).
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 7 / 32
Beispiele fur das fprintf-Kommando
Ausgabe einer einfachen Meldung ohne Variablen (das Zeichen \n wird dabei
verwendet, um nach der Ausgabe in die nachste Zeile zu springen):
>> fprintf(’Eine Testmeldung\n’);
Eine Testmeldung
Ausgabe einer Variable mit Text. Das %-Zeichen signalisiert den Beginn einer
Formatanweisung:
>> fprintf(’Wert von pi: %4.2f\n’, pi);
Wert von pi: 3.14
Die Formatanweisung in diesem Beispiel bedeutet, dass eine Gleitkommazahl (f)
mit einer Gesamtbreite von 4 Zeichen und 2 Nachkommastellen ausgegeben
werden soll.
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 8 / 32
Wie bereits angedeutet, konnen mit fprintf auch mehrere Variablen auf einmal
ausgegeben werden. Dazu wird fur jede Variable eine eigene
Formatanweisung benotigt:
>> fprintf(’Kosinus von %4.2f = %8.4f\n’, pi, cos(pi ));
Kosinus von 3.14 = -1.0000
Dieses Beispiel gibt π auf zwei Nachkommastellen (Gesamtbreite 4) aus. Zudem
wird der Wert cos(π) = −1 mit einer Gesamtbreite von 8 Zeichen (4
Nachkommastellen) ausgegeben.
Zudem konnen auch Vektoren oder Matrizen ausgegeben werden:
>> A = [1 2 3; 4 5 6];
>> fprintf(’a = %2.2f b = %2.2f\n’, A);
a = 1.00 b = 4.00 % Spalte 1 von A
a = 2.00 b = 5.00 % Spalte 2 von A
a = 3.00 b = 6.00 % Spalte 3 von A
Die Moglichkeiten zur Formatierung sind vielfaltig. Nahere Details dazu sind
in der MATLAB-Hilfe zu finden (doc fprintf).
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 9 / 32
Manchmal kann es sinnvoll oder notwendig sein, Daten in einer Datei zu
speichern oder Daten aus Dateien zu lesen.
Dabei unterscheidet man prinzipiell zwischen folgenden Dateitypen:
� Textdateien
� Binardateien
Um Daten aus Dateien zu lesen oder in Dateien zu schreiben bietet MATLAB
unter anderem folgende Funktionen:
Funktion Lesen Schreiben Text Binar
fscanf ✓ ✓
fprintf ✓ ✓
fread ✓ ✓
fwrite ✓ ✓
Weitere Funktionen fur das Arbeiten mit Dateien findet man in der MATLAB-Hilfe
(doc iofun).
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 10 / 32
Um mit einer Datei arbeiten zu konnen, muss diese zuerst geoffnet werden.
Dies geschieht mit dem Kommando fopen:
file_handle = fopen(Dateiname , O ffnungsmodus);
Ist beim Offnen kein Fehler aufgetreten, enthalt file_handle einen Verweis
auf die geoffnete Datei, welcher dann fur die Lese- und Schreibbefehle benotigt
wird (bei einem Fehler enthalt file_handle den Wert -1).
Der Offnungsmodus ist ein String und gibt an wie eine Datei geoffnet werden soll:
Ofnungsmodus Beschreibung
wt Textdatei zum Schreiben offnen
rt Textdatei zum Lesen offnen
wb Binardatei zum Schreiben offnen
rb Binardatei zum Lesen offnen
Es gibt auch noch andere Modi um Dateien zu offnen. Dazu mehr in der
MATLAB-Hilfe (doc fopen).
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 11 / 32
Ist die Arbeit an einer Datei abgeschlossen, sollte diese unbedingt korrekt
geschlossen werden.
Dies geschieht mit Hilfe des Befehls fclose und dem bei fopen
zuruckgelieferten Verweis auf die offene Datei:
fclose(file_handle);
Arbeiten mit Textdateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 12 / 32
Das Arbeiten mit Textdateien hat folgende Vorteile:
� Daten konnen formatiert gespeichert werden
� die Dateien konnen mit jedem Texteditor geoffnet und geandert werden
Folgendes Beispiel
>> x = 1:10; y = x.^2;
>> f = fopen(’test.txt’, ’wt’); % Schreibmodus (Text)
>> fprintf(f, ’%2.f %3.f\n’, [x; y]);
>> fclose(f);
erzeugt folgende Textdatei:
1 1
2 4
3 9
...
8 64
9 81
10 100
Arbeiten mit Textdateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 13 / 32
Um eine Textdatei einzulesen, verwenden wir den Befehl fscanf:
>> f = fopen(’test.txt’, ’rt’); % Lesemodus (Text)
>> A = fscanf(f, ’%f %f’); % Format einer Zeile in der Datei
>> fclose(f);
>> x = A(1:2:end)’
x =
1 2 3 4 5 6 7 8 9 10
>> y = A(2:2:end)’
y =
1 4 9 16 25 36 49 64 81 100
Hinweis: MATLAB liest die Werte zeilenweise aus der Datei ein und gibt das
Ergebnis als einen langen Spaltenvektor zuruck.
Alternativ kann man die Große der Daten explizit bei fscanf angeben:
>> f = fopen(’test.txt’, ’rt’);
>> A = fscanf(f, ’%f %f’, [2, Inf]);
>> fclose(f);
[2, Inf] gibt an, dass bis zum Ende der Datei gelesen werden soll (Inf) und
die Ruckgabematrix 2 Zeilen haben soll (da 2 Spalten in Datei).
Arbeiten mit Binardateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 14 / 32
Wie bereits erwahnt, kann MATLAB aber auch mit Binardateien umgehen. Diese
haben gegenuber Textdateien folgende Vorteile:
� Daten werden platzsparender gespeichert
� Das Lesen und Schreiben ist effizienter (schneller)
Im folgenden Beispiel wird eine binare Datei erzeugt, welche die ersten 1000
Quadratzahlen beinhaltet:
>> f = fopen(’test.bin’, ’wb’); % Schreibmodus (Binar)
>> x = (1:1000).^2;
>> fwrite(f, x, ’float32’);
>> fclose(f);
Hinweis: das letzte Argument bei fwrite gibt an, mit welcher Prazision die
Daten gespeichert werden sollen (in diesem Fall float32, also der Datentyp
single).
Weitere mogliche Prazisionen sind zum Beispiel int8, int16, int32,
float64 und double (siehe doc fread).
Arbeiten mit Binardateien
Command Window
Arbeiten mit Dateien
Textdateien
Binardateien
Import von Daten
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 15 / 32
Um binare Daten aus einer Datei auszulesen, stellt MATLAB den Befehl fread
zur Verfugung.
Wie in folgendem Beispiel ersichtlich, kann auch bei fread eine Prazision
angegeben werden:
>> f = fopen(’test.bin’, ’rb’);
>> x = fread(f, ’float32’);
>> fclose(f);
>> length(x)
ans =
1000 % wir haben 1000 Zahlen eingelesen
Wichtig
Wurden Daten mittels fwrite in eine Datei geschrieben, muss bei fread die
gleiche Prazision verwendet werden. Ansonsten sind die eingelesenen Daten
ublicherweise unbrauchbar.
Formatierung fur einen Import
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 16 / 32
Das Importieren von Daten in MATLAB kann eine sehr komplizierte
Angelegenheit sein. Dies hangt sehr stark von den zu importierenden Daten ab.
Beherzigt man folgende Ratschlage, wird es auf jeden Fall etwas leichter, Daten
in MATLAB zu importieren:
� eine zu importierende Datei sollte nur Zahlen beinhalten (bis auf
Spaltenbezeichner in der ersten Zeile).
� um Daten vor einem Import zu manipulieren, sollte ein anderes Programm
(z.B. MS Excel, OpenOffice, LibreOffice) verwendet werden.
� die Daten sollten nur Werte fur eine Variable pro Spalte beinhalten.
� um Datumswerte zu importieren, sollten diese vor dem Import in ein
numerisches Format umgewandelt werden (Vermeidung von
Konvertierungproblemen bei Daten).
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 17 / 32
Der einfachste Weg, Daten auf robuste Art und Weise in MATLAB zu importieren,
ist der Import von Excel-Dateien.
Dazu mussen in Excel ein paar Punkte beachtet werden:
� nur eine Variable pro Spalte
� Spaltenbeschriftungen verwenden (werden dann als Variablennamen
verwendet)
� nur Zahlen verwenden (speziell bei Datumswerten)
Um Datumswerte in Zahlen umzuwandeln geht man in Excel wie folgt vor (in
OpenOffice und LibreOffice funktioniert dies ahnlich):
1. Datumswerte auswahlen
2. Rechtsklick auf die Auswahl
3. Im Kontextmenu “Format” wahlen
4. Beim Format auf “Zahl” umstellen
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 18 / 32
Excel-Dateien uber den “Import Wizard” importieren
Der Import von Excel-Dateien ist in MATLAB am einfachsten uber den
Workspace Browser (Button “Import Data”) zu bewerkstelligen.
Alternativ kann der Import auch uber den Current Directory Browser erfolgen:
1. in das Verzeichnis wechseln, welches die Excel-Datei beinhaltet
2. Rechtsklick auf die Excel-Datei
3. im Menu “Import Data...” wahlen
In beiden Fallen, erscheint nach der Dateiauswahl der “Import Wizard”.
Im Folgenden importieren wir eine Excel-Datei (temperatures.xls), welche
einen fiktiven Temperaturverlauf fur den Janner 2012 beinhaltet. Dazu haben wir
folgende Spalten:
� Datum (bereits in eine Zahl konvertiert)
� Mittlere Tagestemperatur
� Tagestiefstwerte
� Tageshochstwerte
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 19 / 32
Wichtig: um die einzelnen Spalten als einzelne Variablen zu importieren
(Vektoren), muss die entsprechende Option im Dialog ausgewahlt werden.
Nach erfolgreichem Import sehen wir die Variablen im Workspace Browser.
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 20 / 32
Abschließend mussen wir nun noch die Datumswerte korrigieren.
MATLAB und Excel interpretieren numerische Datumswerte unterschiedlich:
� MATLAB: Anzahl der Tage seit dem 1. Janner 0000
� Excel: Anzahl der Tage seit dem 1. Janner 1900
Daher mussen wir die Datumswerte noch korrigieren. Dazu addieren wir den 31.
Dezember 1899 zu den importierten Datumswerten in Date (mit Hilfe der
Funktion datenum):
Date = Date + datenum(’30 DEC1899 ’);
Hinweis: da die Angabe der Tage bei datenum bei 0 startet, geben wir 30 statt
31 ein.
Um die korrigierten Zahlenwerte als Datumswerte auszugeben, gibt es die
MATLAB-Funktion datestr:
>> datestr(Date (1))
ans =
01-Jan -2012 % Korrektur erfolgreich!
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 21 / 32
Import von Excel-Dateien uber die Kommandozeile
Alternativ zum “Import Wizard”, kann man auch den Befehl xlsread verwenden,
um Excel-Dateien einzulesen.
Fur unsere Testdatei temperatures.xls:
data = xlsread(’temperatures.xls’);
Dieses Kommando liest den Inhalt des ersten Tabellenblattes in die Matrix data.
Um ein Arbeitsblatt mit dem Namen Arbeitsblattname einzulesen, gibt man
folgendes ein:
data = xlsread(’temperatures.xls’, ’Arbeitsblattname’);
Fur xlsread gibt es noch zahlreiche Optionen (z.B. Importbereich wahlen oder
Arbeitsblatt wahlen). Eine ausfuhrliche Beschreibung dieser Moglichkeiten ist in
der MATLAB-Hilfe zu finden (doc xlsread).
Zusatzliche Informationen zu einer Excel-Datei (z.B. Namen von Arbeitsmappen)
konnen mit Hilfe des Kommandos xlsfinfo ausgegeben werden (siehe
doc xlsfinfo).
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 22 / 32
CSV-Dateien (Comma Separated Values) sind Textdateien, welche Werte
enthalten, die durch ein bestimmtes Spaltentrennzeichen getrennt sind
(ublicherweise , oder ;).
Die Temperaturdaten aus Excel konnten im CSV-Format zum Beispiel wie folgt
aussehen:
40909 ,1.1 ,0.2401943739,1.9598056261
40910 , -3.2 , -4.0770937883, -2.3229062117
40911, -3.1 , -3.99331443, -2.20668557
40912 ,0.1 , -0.8084478088 ,1.0084478088
...
Hinweis: fur einen Import von CSV-Dateien in MATLAB, muss als
Dezimaltrennzeichen immer ein Punkt verwendet werden.
Um eine CSV-Datei in MATLAB zu importieren gibt es wieder zwei Moglichkeiten:
� uber den “Import Wizard”
� uber den Befehl csvread
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 23 / 32
Import einer CSV-Datei mit dem “Import Wizard”
Die Auswahl der CSV-Datei funktioniert wie beim Import von Excel-Dateien.
Im Import-Wizard kann man das gewunschte Trennzeichen angeben:
Ist alles korrekt eingestellt, kann man nach einem Klick auf “Next”, den Namen
der Variable(n) angeben, in welche die Daten importiert werden sollen.
Enthalt die CSV-Datei Spaltenbeschriftungen, kann automatisch fur jede Spalte
ein Vektor angelegt werden. Ansonsten wird eine Matrix erzeugt.
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 24 / 32
Import einer CSV-Datei mit csvread
Mit dem Befehl csvread konnen CSV-Dateien von der Konsole aus importiert
werden.
Wichtig
Im Gegensatz zum “Import Wizard” wird in diesem Fall ein Beistrich als
Spaltentrennzeichen vorausgesetzt. Zudem darf die CSV-Datei keine
Spaltenbeschriftungen enthalten.
Die Datei temperature.csv wird folgenderweise importiert:
>> A = csvread(’temperatures.csv’);
Will man den Import bei einer bestimmten Zelle (Position) starten, erreicht man
dies mittels:
>> A = csvread(’temperatures.csv’, 4, 3);
In diesem Beispiel beginnt der Import mit der 5. Zeile und der 4. Spalte (Indizes
starten bei 0 !).
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 25 / 32
Zudem kann man auch einen Bereich angeben, welcher importiert werden soll.
Zum Beispiel:
>> A = csvread(’temperatures.csv’, 0, 2, [0 2 7 3]);
In diesem Beispiel werden die 3. und 4. Spalte und die 1. Zeile bis zur 8. Zeile
importiert (Indizes wieder 0-basierend).
Der zweite und der dritte Parameter (Startzelle) sollten dabei dem Startpunkt des
angegebenen Bereichs entsprechen (in unserem Beispiel [0 2]).
Hinweis: fur mehr Kontrolle uber den Import existiert noch das Kommando
dlmread (siehe doc dlmread).
Textdateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 26 / 32
Liegen Daten in einer Textdatei vor, kann der Import auch mit Hilfe des
Kommandos textread erfolgen:
>> A = textread(’temperatures.txt’);
Dieses Kommando liest den Inhalt der Datei in die Matrix A ein.
Das Format der Textdatei sollte dabei so einfach wie moglich gehalten werden (in
unserem Beispiel wurde ein Leerzeichen als Spaltentrenner benutzt):
40909 1.1 0.2401943739 1.9598056261
40910 -3.2 -4.0770937883 -2.3229062117
40911 -3.1 -3.99331443 -2.20668557
40912 0.1 -0.8084478088 1.0084478088
...
Das Kommando textread unterstutzt aber noch viele andere Formate (uber
eine Formatanweisung). Nahere Informationen dazu findet man in der
MATLAB-Hilfe doc textread.
MATLAB mat-Files importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 27 / 32
MATLAB hat auch ein eigenes Dateiformat um Daten zu speichern (mat-Files).
mat-Files beinhalten sowohl den Namen als auch den Wert von Variablen.
Es ist daher nicht notwendig, beim Laden eines mat-Files einen Variablennamen
anzugeben.
Geladen wird ein mat-File mit dem Befehl load. Das folgende Beispiel ladt die
Datei test.mat und erstellt alle darin enthaltenen Variablen im Workspace:
>> load test.mat
Sind in der zu ladenden Datei z.B. die Variablen X, Y und Z enthalten, kann man
auch nur bestimmte Variablen laden. Zum Beispiel:
>> load test.mat Y Z
Diese Anweisung erstellt nur die Variablen Y und Z aus der Datei test.mat im
Workspace.
Bilder importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 28 / 32
MATLAB bietet auch Funktionen, um Bilder zu laden. Dabei unterstutzt MATLAB
verschiedene Dateiformate, z.B. JPEG, PNG, BMP und TIFF.
Will man ein Bild laden, verwendet man dazu den Befehl imread (Bild wird in
eine Matrix geladen):
>> I = imread(’lena.jpg’); % bild laden
>> imshow(I); % bild anzeigen
Das Ergebnis ist folgende Figure:
imshow ist einer von mehreren MATLAB-Befehlen, um ein Bild anzuzeigen
(siehe doc imagesc, doc image und doc imshow).
Excel-Dateien exportieren
Command Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Bilder
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 29 / 32
Viele der Dateiformate, welche MATLAB importieren kann, konnen in MATLAB
auch exportiert werden.
Wir haben gesehen, dass man Excel-Dateien mit dem Kommando xlsread
einlesen kann.
Um bestehende Daten in eine Excel-Datei zu exportieren, verwendet man den
Befehl xlswrite.
>> A = rand (100, 100);
>> xlswrite(’random.xls’, A);
Wie bei xlsread, gibt es auch bei xlswrite diverse Optionen. Eine
ausfuhrliche Beschreibung dieser Moglichkeiten ist in der MATLAB-Hilfe zu finden
(doc xlswrite).
Wichtig: xlswrite funktioniert nur unter Windows (mit einer Excel-Installation).
Ist kein Excel installiert oder verwendet man Linux, versucht MATLAB, eine
CSV-Datei zu erzeugen.
CSV-Dateien exportieren
Command Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Bilder
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 30 / 32
Auch fur CSV-Dateien gibt es ein Gegenstuck zur Funktion csvread – namlich
die Funktion csvwrite.
Das folgende Beispiel zeigt, wie man Daten in eine CSV-Datei exportiert:
>> A = rand (100, 100);
>> csvwrite(’random.csv’, A);
Auszug aus der resultierenden Datei:
0.99859 ,0.014034 ,0.59533 ,0.65084 ,0.45868 , ...
0.59436 ,0.66201 ,0.67865 ,0.29553 ,0.73434 , ...
.
.
.
Zu beachten:
� die Spalten sind immer durch ein Komma getrennt.
� es ist nur eine Prazision von funf Nachkommastellen moglich (fur mehr
Prazision siehe doc dlmwrite).
MATLAB mat-Files exportieren
Command Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Bilder
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 31 / 32
Naturlich kann man auch Daten in ein mat-File speichern. Dazu wird der Befehl
save verwendet.
Dabei gilt zu beachten, dass das Kommando save standardmaßig den
kompletten Workspace in die angegebene Datei speichert:
>> A = rand (100, 100);
>> B = rand (100, 100);
>> save test.mat
Die Datei test.mat enthalt nun die Variablen A und B.
Will man nur bestimmte Variablen speichern, muss man zusatzlich den Namen
der zu speichernden Variable angeben. Zum Beispiel:
>> A = rand (100, 100);
>> B = rand (100, 100);
>> C = rand (100, 100);
>> save test.mat A C
Bilder exportieren
Command Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Bilder
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 32 / 32
Um in MATLAB Bilder zu speichern, gibt es den Befehl imwrite.
>> X = peaks (256)*30;
>> imwrite(uint8(abs(X)), ’peaks.png’, ’png’);
Der erste Parameter gibt die Variable an, welche als Bild gespeichert werden soll
(eine Matrix). Der dritte Parameter gibt das Dateiformat fur das Bild an.
Das Ergebnis ist folgendes Graustufenbild:
Informationen zu weiteren Parametern und Optionen bei imwrite sind in der
MATLAB-Hilfe zu finden (doc imwrite).