Eingaben und Ausgaben in MATLAB

Transcrição

Eingaben und Ausgaben in MATLAB
Anwendungssoftware III (MATLAB)
VI – Eingaben und Ausgaben in MATLAB
Michael Liedlgruber
Fachbereich Computerwissenschaften
Universität Salzburg
Sommersemester 2014
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
1 / 32
Eingaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Um eine interaktive Eingabe des Benutzers in einem Skript zu erlauben, bietet
MATLAB die Funktion input.
Die Funktion wird folgendermaßen aufgerufen:
value = input ( ’ E i n g a b e p r o m p t ’ );
Export von Daten
Standardmäßig erwartet input die Eingabe eines gültigen
MATLAB-Ausdrucks. Das Ergebnis dieses Ausdrucks wird dann der Variable
value zugewiesen wird.
Es ist also möglich, folgende Eingaben zu tätigen:
einfache Werte
Vektoren und Matrizen
Funktionsaufrufe
Um dem Benutzer die Eingabe einer Zeichenkette (String) zu ermöglichen,
muss als zweiter Parameter ’s’ angegeben werden:
value = input ( ’ E i n g a b e p r o m p t ’ , ’s ’ );
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
2 / 32
Eingaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Ein Beispiel zu Input
>> t = input ( ’ Titel : ’ , ’s ’ );
a = input ( ’ A m p l i t u de : ’ );
x = input ( ’x - Werte : ’ );
y = a * input ( ’f ( x ): ’ );
plot ( y ); title ( t );
Titel : Sinus - Plot % Eingabe des Titels < ENTER >
A m p l i t u d e : 10 % Eingabe von ’10 ’ < ENTER >
x - Werte : - pi :0.01: pi % V e k t o r e i n g a b e < ENTER >
f ( x ): sin ( x ) % Angabe der S i n u s f u n k t i o n < ENTER >
Das Ergebnis ist der folgende Plot:
Sinus-Plot
10
0
-10
M. Liedlgruber
0
100
200
300
400
Anwendungssoftware III (MATLAB) – SS 2014
500
600
700
3 / 32
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
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 Möglichkeiten, 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 Bedürfnisse angepasst werden kann.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
4 / 32
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Das disp-Kommando
Um einfache Strings auszugeben, übergibt man disp den gewünschten String:
>> disp ( ’ Dies ist ein Test - String ’ );
Dies ist ein Test - String
Import von Daten
Export von Daten
Der Wert von Variablen wird ausgegeben, indem man die entsprechende
Variable als Parameter verwendet:
>> x = 1:5;
>> x
% normale Ausgabe
x =
% V a r i a b l e n n a m e wird a u s g e g e b e n
1
2
3
4
5
>> disp ( x ); % k o m p a k t e Ausgabe - ohne V a r i a b l e n n a m e
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).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
5 / 32
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Das fprintf-Kommando
Wir haben gesehen, dass die Funktion disp eine Ausgabe im Command
Window erzeugt.
Arbeiten mit Dateien
Import von Daten
Export von Daten
Die Funktion fprintf erlaubt – im Gegensatz zu disp – zusätzlich 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 (enthält üblicherweise einen oder
mehrere Formatanweisungen).
Es werden mehrere Variablen unterstützt.
Hinweis: die Funktion sprintf funktioniert ähnlich wie fprintf, gibt jedoch
nichts im Command Window aus, sondern gibt einen String zurück, welcher
die formatierte Ausgabe enthält (siehe doc sprintf).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
6 / 32
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Arbeiten mit Dateien
Import von Daten
Export von Daten
Beispiele für das fprintf-Kommando
Ausgabe einer einfachen Meldung ohne Variablen (das Zeichen \n wird dabei
verwendet, um nach der Ausgabe in die nächste Zeile zu springen):
>> fprintf ( ’ Eine T e s t m e l d u n g \ n ’ );
Eine T e s t m e l d u n g
Ausgabe einer Variable mit Text. Das %-Zeichen signalisiert den Beginn einer
Formatanweisung:
>> fprintf ( ’ Wert von pi : %4.2 f \ 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.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
7 / 32
Ausgaben im Command Window
Command Window
Eingaben im Command
Window
Ausgaben im Command
Window
Wie bereits angedeutet, können mit fprintf auch mehrere Variablen auf einmal
ausgegeben werden. Dazu wird für jede Variable eine eigene
Formatanweisung benötigt:
Arbeiten mit Dateien
Import von Daten
>> fprintf ( ’ Kosinus von %4.2 f = %8.4 f \ n ’ , pi , cos ( pi ));
Kosinus von 3.14 = -1.0000
Export von Daten
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 können auch Vektoren oder Matrizen ausgegeben werden:
>> A = [1 2 3; 4 5 6];
>> fprintf ( ’a = %2.2 f
b = %2.2 f \ 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 Möglichkeiten zur Formatierung sind vielfältig. Nähere Details dazu sind
in der MATLAB-Hilfe zu finden (doc fprintf).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
8 / 32
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Manchmal kann es sinnvoll oder notwendig sein, Daten in einer Datei zu
speichern oder Daten aus Dateien zu lesen.
Textdateien
Binärdateien
Import von Daten
Export von Daten
Dabei unterscheidet man prinzipiell zwischen folgenden Dateitypen:
Textdateien
Binärdateien
Um Daten aus Dateien zu lesen oder in Dateien zu schreiben bietet MATLAB
unter anderem folgende Funktionen:
Funktion
Lesen
fscanf
fprintf
fread
fwrite
✓
Schreiben
Text
✓
✓
✓
✓
✓
Binär
✓
✓
Weitere Funktionen für das Arbeiten mit Dateien findet man in der MATLAB-Hilfe
(doc iofun).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
9 / 32
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Textdateien
Binärdateien
Um mit einer Datei arbeiten zu können, muss diese zuerst geöffnet werden.
Dies geschieht mit dem Kommando fopen:
f i l e _ h a n d l e = fopen ( Dateiname , Ö f f n u n g s m o d u s );
Import von Daten
Export von Daten
Ist beim Öffnen kein Fehler aufgetreten, enthält file_handle einen Verweis
auf die geöffnete Datei, welcher dann für die Lese- und Schreibbefehle benötigt
wird (bei einem Fehler enthält file_handle den Wert -1).
Der Öffnungsmodus ist ein String und gibt an wie eine Datei geöffnet werden soll:
Öfnungsmodus
wt
rt
wb
rb
Beschreibung
Textdatei zum Schreiben öffnen
Textdatei zum Lesen öffnen
Binärdatei zum Schreiben öffnen
Binärdatei zum Lesen öffnen
Es gibt auch noch andere Modi um Dateien zu öffnen. Dazu mehr in der
MATLAB-Hilfe (doc fopen).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
10 / 32
Arbeiten mit Dateien
Command Window
Arbeiten mit Dateien
Ist die Arbeit an einer Datei abgeschlossen, sollte diese unbedingt korrekt
geschlossen werden.
Textdateien
Binärdateien
Import von Daten
Export von Daten
Dies geschieht mit Hilfe des Befehls fclose und dem bei fopen
zurückgelieferten Verweis auf die offene Datei:
fclose ( f i l e _ h a n d l e );
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
11 / 32
Arbeiten mit Textdateien
Command Window
Das Arbeiten mit Textdateien hat folgende Vorteile:
Arbeiten mit Dateien
Textdateien
Binärdateien
Daten können formatiert gespeichert werden
die Dateien können mit jedem Texteditor geöffnet und geändert werden
Import von Daten
Export von Daten
Folgendes Beispiel
>>
>>
>>
>>
x = 1:10; y = x .^2;
f = fopen ( ’ test . txt ’ , ’ wt ’ ); % S c h r e i b m o d u s ( Text )
fprintf (f , ’ %2. f %3. f \ n ’ , [ x ; y ]);
fclose ( f );
erzeugt folgende Textdatei:
1
2
3
1
4
9
...
8 64
9 81
10 100
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
12 / 32
Arbeiten mit Textdateien
Command Window
Um eine Textdatei einzulesen, verwenden wir den Befehl fscanf:
Arbeiten mit Dateien
Textdateien
Binärdateien
Import von Daten
Export von Daten
>> f = fopen ( ’ test . txt ’ , ’ rt ’ ); % L e s e m o d u s ( 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 zurück.
Alternativ kann man die Größ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 Rückgabematrix 2 Zeilen haben soll (da 2 Spalten in Datei).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
13 / 32
Arbeiten mit Binärdateien
Command Window
Arbeiten mit Dateien
Wie bereits erwähnt, kann MATLAB aber auch mit Binärdateien umgehen. Diese
haben gegenüber Textdateien folgende Vorteile:
Textdateien
Binärdateien
Import von Daten
Daten werden platzsparender gespeichert
Das Lesen und Schreiben ist effizienter (schneller)
Export von Daten
Im folgenden Beispiel wird eine binäre Datei erzeugt, welche die ersten 1000
Quadratzahlen beinhaltet:
>>
>>
>>
>>
f = fopen ( ’ test . bin ’ , ’ wb ’ ); % S c h r e i b m o d u s ( Bin ä r )
x = (1:1000).^2;
fwrite (f , x , ’ float32 ’ );
fclose ( f );
Hinweis: das letzte Argument bei fwrite gibt an, mit welcher Präzision die
Daten gespeichert werden sollen (in diesem Fall float32, also der Datentyp
single).
Weitere mögliche Präzisionen sind zum Beispiel int8, int16, int32,
float64 und double (siehe doc fread).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
14 / 32
Arbeiten mit Binärdateien
Command Window
Arbeiten mit Dateien
Um binäre Daten aus einer Datei auszulesen, stellt MATLAB den Befehl fread
zur Verfügung.
Textdateien
Binärdateien
Import von Daten
Export von Daten
Wie in folgendem Beispiel ersichtlich, kann auch bei fread eine Präzision
angegeben werden:
>> f = fopen ( ’ test . bin ’ , ’ rb ’ );
>> x = fread (f , ’ float32 ’ );
>> fclose ( f );
>> length ( x )
ans =
1000 % wir haben 1000 Zahlen e i n g e l e s e n
Wichtig
Wurden Daten mittels fwrite in eine Datei geschrieben, muss bei fread die
gleiche Präzision verwendet werden. Ansonsten sind die eingelesenen Daten
üblicherweise unbrauchbar.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
15 / 32
Formatierung für einen Import
Command Window
Arbeiten mit Dateien
Das Importieren von Daten in MATLAB kann eine sehr komplizierte
Angelegenheit sein. Dies hängt sehr stark von den zu importierenden Daten ab.
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
M. Liedlgruber
Beherzigt man folgende Ratschläge, 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 für 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).
Anwendungssoftware III (MATLAB) – SS 2014
16 / 32
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Der einfachste Weg, Daten auf robuste Art und Weise in MATLAB zu importieren,
ist der Import von Excel-Dateien.
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Dazu müssen 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 ähnlich):
1.
2.
3.
4.
M. Liedlgruber
Datumswerte auswählen
Rechtsklick auf die Auswahl
Im Kontextmenü “Format” wählen
Beim Format auf “Zahl” umstellen
Anwendungssoftware III (MATLAB) – SS 2014
17 / 32
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Excel-Dateien über den “Import Wizard” importieren
Der Import von Excel-Dateien ist in MATLAB am einfachsten über den
Workspace Browser (Button “Import Data”) zu bewerkstelligen.
Alternativ kann der Import auch über den Current Directory Browser erfolgen:
1.
2.
3.
in das Verzeichnis wechseln, welches die Excel-Datei beinhaltet
Rechtsklick auf die Excel-Datei
im Menü “Import Data...” wählen
In beiden Fällen, erscheint nach der Dateiauswahl der “Import Wizard”.
Im Folgenden importieren wir eine Excel-Datei (temperatures.xls), welche
einen fiktiven Temperaturverlauf für den Jänner 2012 beinhaltet. Dazu haben wir
folgende Spalten:
Datum (bereits in eine Zahl konvertiert)
Mittlere Tagestemperatur
Tagestiefstwerte
Tageshöchstwerte
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
18 / 32
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Wichtig: um die einzelnen Spalten als einzelne Variablen zu importieren
(Vektoren), muss die entsprechende Option im Dialog ausgewählt werden.
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Nach erfolgreichem Import sehen wir die Variablen im Workspace Browser.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
19 / 32
Excel-Dateien importieren
Command Window
Abschließend müssen wir nun noch die Datumswerte korrigieren.
Arbeiten mit Dateien
Import von Daten
MATLAB und Excel interpretieren numerische Datumswerte unterschiedlich:
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
MATLAB: Anzahl der Tage seit dem 1. Jänner 0000
Excel: Anzahl der Tage seit dem 1. Jänner 1900
Daher müssen 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 % K o r r e k t u r e r f o l g r e i c h !
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
20 / 32
Excel-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Import von Excel-Dateien über die Kommandozeile
Alternativ zum “Import Wizard”, kann man auch den Befehl xlsread verwenden,
um Excel-Dateien einzulesen.
Für unsere Testdatei temperatures.xls:
Textdateien
mat-Files
data = xlsread ( ’ t e m p e r a t u r e s . xls ’ );
Bilder
Export von Daten
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 ( ’ t e m p e r a t u r e s . xls ’ , ’ A r b e i t s b l a t t n a m e ’ );
Für xlsread gibt es noch zahlreiche Optionen (z.B. Importbereich wählen oder
Arbeitsblatt wählen). Eine ausführliche Beschreibung dieser Möglichkeiten ist in
der MATLAB-Hilfe zu finden (doc xlsread).
Zusätzliche Informationen zu einer Excel-Datei (z.B. Namen von Arbeitsmappen)
können mit Hilfe des Kommandos xlsfinfo ausgegeben werden (siehe
doc xlsfinfo).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
21 / 32
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
CSV-Dateien (Comma Separated Values) sind Textdateien, welche Werte
enthalten, die durch ein bestimmtes Spaltentrennzeichen getrennt sind
(üblicherweise , oder ;).
Die Temperaturdaten aus Excel könnten im CSV-Format zum Beispiel wie folgt
aussehen:
mat-Files
Bilder
Export von Daten
4 0 9 0 9 , 1 . 1 , 0 . 2 4 0 1 9 43 739 , 1 . 9 5 9 8 0 5626 1
40910 , -3.2 , -4.0770937883 , -2.3229062117
40911 , -3.1 , -3.99331443 , -2.20668557
40912 ,0.1 , -0.8084478088 ,1.0084478088
...
Hinweis: für 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 Möglichkeiten:
über den “Import Wizard”
über den Befehl csvread
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
22 / 32
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import einer CSV-Datei mit dem “Import Wizard”
Die Auswahl der CSV-Datei funktioniert wie beim Import von Excel-Dateien.
Import von Daten
Formatierung
Excel-Dateien
Im Import-Wizard kann man das gewünschte Trennzeichen angeben:
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Ist alles korrekt eingestellt, kann man nach einem Klick auf “Next”, den Namen
der Variable(n) angeben, in welche die Daten importiert werden sollen.
Enthält die CSV-Datei Spaltenbeschriftungen, kann automatisch für jede Spalte
ein Vektor angelegt werden. Ansonsten wird eine Matrix erzeugt.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
23 / 32
CSV-Dateien importieren
Command Window
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Import einer CSV-Datei mit csvread
Mit dem Befehl csvread können 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 ( ’ t e m p e r a t u r e s . csv ’ );
Will man den Import bei einer bestimmten Zelle (Position) starten, erreicht man
dies mittels:
>> A = csvread ( ’ t e m p e r a t u r e s . csv ’ , 4 , 3);
In diesem Beispiel beginnt der Import mit der 5. Zeile und der 4. Spalte (Indizes
starten bei 0 !).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
24 / 32
CSV-Dateien importieren
Command Window
Zudem kann man auch einen Bereich angeben, welcher importiert werden soll.
Arbeiten mit Dateien
Import von Daten
Zum Beispiel:
Formatierung
Excel-Dateien
>> A = csvread ( ’ t e m p e r a t u r e s . csv ’ , 0 , 2 , [0 2 7 3]);
CSV-Dateien
Textdateien
mat-Files
Bilder
In diesem Beispiel werden die 3. und 4. Spalte und die 1. Zeile bis zur 8. Zeile
importiert (Indizes wieder 0-basierend).
Export von Daten
Der zweite und der dritte Parameter (Startzelle) sollten dabei dem Startpunkt des
angegebenen Bereichs entsprechen (in unserem Beispiel [0 2]).
Hinweis: für mehr Kontrolle über den Import existiert noch das Kommando
dlmread (siehe doc dlmread).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
25 / 32
Textdateien importieren
Command Window
Arbeiten mit Dateien
Liegen Daten in einer Textdatei vor, kann der Import auch mit Hilfe des
Kommandos textread erfolgen:
Import von Daten
Formatierung
>> A = t e x t r e a d ( ’ t e m p e r a t u r e s . txt ’ );
Excel-Dateien
CSV-Dateien
Textdateien
mat-Files
Bilder
Export von Daten
Dieses Kommando liest den Inhalt der Datei in die Matrix A ein.
Das Format der Textdatei sollte dabei so einfach wie möglich gehalten werden (in
unserem Beispiel wurde ein Leerzeichen als Spaltentrenner benutzt):
40909
40910
40911
40912
...
1.1 0 . 2 4 0 1 9 4 3 7 3 9 1 . 9 5 9 8 0 5 6 2 6 1
-3.2 -4.0770937883 -2.3229062117
-3.1 -3.99331443 -2.20668557
0.1 -0.8084478088 1 . 0 0 8 4 4 7 8 0 8 8
Das Kommando textread unterstützt aber noch viele andere Formate (über
eine Formatanweisung). Nähere Informationen dazu findet man in der
MATLAB-Hilfe doc textread.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
26 / 32
MATLAB mat-Files importieren
Command Window
MATLAB hat auch ein eigenes Dateiformat um Daten zu speichern (mat-Files).
Arbeiten mit Dateien
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
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.
Textdateien
mat-Files
Bilder
Geladen wird ein mat-File mit dem Befehl load. Das folgende Beispiel lädt die
Datei test.mat und erstellt alle darin enthaltenen Variablen im Workspace:
Export von Daten
>> 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.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
27 / 32
Bilder importieren
Command Window
Arbeiten mit Dateien
MATLAB bietet auch Funktionen, um Bilder zu laden. Dabei unterstützt MATLAB
verschiedene Dateiformate, z.B. JPEG, PNG, BMP und TIFF.
Import von Daten
Formatierung
Excel-Dateien
CSV-Dateien
Will man ein Bild laden, verwendet man dazu den Befehl imread (Bild wird in
eine Matrix geladen):
Textdateien
mat-Files
Bilder
>> I = imread ( ’ lena . jpg ’ ); % bild laden
>> imshow ( I );
% bild a n z e i g e n
Export von Daten
Das Ergebnis ist folgende Figure:
imshow ist einer von mehreren MATLAB-Befehlen, um ein Bild anzuzeigen
(siehe doc imagesc, doc image und doc imshow).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
28 / 32
Excel-Dateien exportieren
Command Window
Arbeiten mit Dateien
Viele der Dateiformate, welche MATLAB importieren kann, können in MATLAB
auch exportiert werden.
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
Wir haben gesehen, dass man Excel-Dateien mit dem Kommando xlsread
einlesen kann.
mat-Files
Bilder
Um bestehende Daten in eine Excel-Datei zu exportieren, verwendet man den
Befehl xlswrite.
>> A = rand (100 , 100);
>> x l s w r i te ( ’ random . xls ’ , A );
Wie bei xlsread, gibt es auch bei xlswrite diverse Optionen. Eine
ausführliche Beschreibung dieser Möglichkeiten 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.
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
29 / 32
CSV-Dateien exportieren
Command Window
Arbeiten mit Dateien
Auch für CSV-Dateien gibt es ein Gegenstück zur Funktion csvread – nämlich
die Funktion csvwrite.
Import von Daten
Export von Daten
Das folgende Beispiel zeigt, wie man Daten in eine CSV-Datei exportiert:
Excel-Dateien
CSV-Dateien
mat-Files
>> A = rand (100 , 100);
>> c s v w r i te ( ’ random . csv ’ , A );
Bilder
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 Präzision von fünf Nachkommastellen möglich (für mehr
Präzision siehe doc dlmwrite).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
30 / 32
MATLAB mat-Files exportieren
Command Window
Arbeiten mit Dateien
Natürlich kann man auch Daten in ein mat-File speichern. Dazu wird der Befehl
save verwendet.
Import von Daten
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Bilder
Dabei gilt zu beachten, dass das Kommando save standardmäßig den
kompletten Workspace in die angegebene Datei speichert:
>> A = rand (100 , 100);
>> B = rand (100 , 100);
>> save test . mat
Die Datei test.mat enthält nun die Variablen A und B.
Will man nur bestimmte Variablen speichern, muss man zusätzlich den Namen
der zu speichernden Variable angeben. Zum Beispiel:
>>
>>
>>
>>
M. Liedlgruber
A = rand (100 ,
B = rand (100 ,
C = rand (100 ,
save test . mat
100);
100);
100);
A C
Anwendungssoftware III (MATLAB) – SS 2014
31 / 32
Bilder exportieren
Command Window
Um in MATLAB Bilder zu speichern, gibt es den Befehl imwrite.
Arbeiten mit Dateien
Import von Daten
>> X = peaks ( 2 5 6 ) * 3 0 ;
>> imwrite ( uint8 ( abs ( X )) , ’ peaks . png ’ , ’ png ’ );
Export von Daten
Excel-Dateien
CSV-Dateien
mat-Files
Der erste Parameter gibt die Variable an, welche als Bild gespeichert werden soll
(eine Matrix). Der dritte Parameter gibt das Dateiformat für das Bild an.
Bilder
Das Ergebnis ist folgendes Graustufenbild:
Informationen zu weiteren Parametern und Optionen bei imwrite sind in der
MATLAB-Hilfe zu finden (doc imwrite).
M. Liedlgruber
Anwendungssoftware III (MATLAB) – SS 2014
32 / 32

Documentos relacionados