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