anwendungssoftware iii (matlab) - computer sciencesmliedl/data/matlab_inputoutput_vi.pdf · m....

32
M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III (MATLAB) VI – Eingaben und Ausgaben in MATLAB Michael Liedlgruber Fachbereich Computerwissenschaften Universit ¨ at Salzburg Sommersemester 2014

Upload: lamkhanh

Post on 06-Feb-2018

228 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 2: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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’);

Page 3: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 4: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 5: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 6: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 7: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 8: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 9: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 10: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 11: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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);

Page 12: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 13: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 14: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 15: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 16: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 17: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 18: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 19: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 20: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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!

Page 21: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 22: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 23: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 24: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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 !).

Page 25: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 26: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 27: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 28: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 29: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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.

Page 30: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).

Page 31: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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

Page 32: Anwendungssoftware III (MATLAB) - Computer Sciencesmliedl/data/matlab_inputoutput_VI.pdf · M. Liedlgruber Anwendungssoftware III (MATLAB) – SS 2014 1 / 32 Anwendungssoftware III

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).