Einführung in MATLAB
MATLAB - Eine Einführung Was ist MATLAB? Abkürzung für matrix laboratory reines Numerikprogramm für das Rechnen mit großen Zahlenfeldern (arrays) bzw. Matrizen Interpretersprache Werkzeug zur Erzeugung von graphischen Darstellungen (und -oberflächen) Was ist MATLAB nicht? MATLAB ist eigentlich kein Arithmetikprogramm für symbolisches Rechnen. (Allerdings gibt es inzwischen ein Zusatzpaket, welches symbolische Rechnung durch MAPLE ausführen läßt.) 17.01.2008 Matlab - Eine Einführung 2
Anwendungsgebiete von MATLAB Matrizenrechnung Probleme, die sich in Matrixformulierung lösen lassen: numerische Lösung von Differentialgleichungen Signalverarbeitung Regelungstechnik Statistik Systemidentifikation Neuronale Netze... Für spezielle Anwendungen gibt es Werkzeugkisten (toolboxes). 17.01.2008 Matlab - Eine Einführung 3
Haupt-Arbeitsfenster After the >> symbol, you can type the commands 17.01.2008 Matlab - Eine Einführung 4
Anzeige- Fenster Grafik (Figure) Fenster M-file Editor/Debugger - Fenster Erzeugen und Editieren von Skripts 17.01.2008 Matlab - Eine Einführung 5
Hilfe Hilfe erhalten: MATLAB main menu -> Help -> MATLAB Help 17.01.2008 Matlab - Eine Einführung 6
Hilfe Schreibe eins der folgenden Kommandos ins command window : help lists all the help topics help topic provides help for the specified topic help command provides help for the specified command helpwin opens a separate help window for navigation Lookfor keyword search all M-files for keyword Online resource 17.01.2008 Matlab - Eine Einführung 7
Befehlseingabe in MATLAB Skriptsprache: Eingabe erfolgt durch einen ASCII-Text (sog..m-file) oder über die Tastatur. Skripte mit Parameterübergabe heißen Funktionen. Befehl wird nach dem Enter -Zeichen sofort ausgeführt. Durch den Befehl wird das gleichnamige.m-file gestartet, welches wiederum eine Folge von Befehlen enthält. Also: Jedes selbstgeschriebene Programm erweitert Matlab um einen neuen Befehl! Grundlegende Funktionen sind eingebaut, brauchen also kein.m-file 17.01.2008 Matlab - Eine Einführung 8
Datenstruktur in MATLAB Alle Variablen sind mehrdimensionale Felder von Fließkommazahlen doppelter Präzision (64 Bit). Ausnahme: Strings sind 1xN-Felder vom Typ Character (8-Bit-ASCII-Zeichen). In der Bildverarbeitung werden oft Felder von vorzeichenlosen 8-Bit-Ganzzahlen verwendet. Dimensionierung zu keiner Zeit erforderlich! IEEE-Standard 17.01.2008 Matlab - Eine Einführung 9
Dateneingabe über die Tastatur 1. Eingabe von Skalaren (Testen Sie selbst!): >> a=2 a= 2 >> a=sqrt(-16) a= 0 + 4.0000i Ein Semikolon (;) unterdrückt die Ausgabe des Ergebnisses: >> a=1.2345 * 2; Nachträgliche Abfrage: >> a a= >> 2.4690 17.01.2008 Matlab - Eine Einführung 10
Dateneingabe über die Tastatur 2. Eingabe von Vektoren: >> b=[2,4,6,8] b= 2 4 6 8 Dies ist ein (1x4)-Vektor, also ein Zeilenvektor. Im Unterschied dazu ist >> b2=[2;4;6;8] b2= 2 4 6 8 ein (4x1)-Vektor, also ein Spaltenvektor. >> 17.01.2008 Matlab - Eine Einführung 11
Dateneingabe über die Tastatur 3. Der Doppelpunkt: >> b=2:2:8 b= 2 4 6 8 Der : erzeugt Zeilenvektoren. Die Parameter sind Anfang, Schrittweite und Ende der Folge. Alternative Befehle: linspace logspace Die Parameter sind Anfang, Ende und Anzahl : Vektor mit linear gestaffelten Elementen Vektor mit logarithmisch gestaffelten El. >> b2=linspace(1,3,5) b2 = 1.00 1.50 2.00 2.50 3.00 17.01.2008 Matlab - Eine Einführung 12
Dateneingabe über die Tastatur 4. Eingabe von Matrizen: >> A=[1 2 3; 4 5 6; 7 8 0] A= 1 2 3 4 5 6 7 8 0 Dies ist ein (3x3)-Matrix. Die Transposition erfolgt mit dem Apostroph: >> A2 =[1 2 3; 4 5 6; 7 8 0] A2= 1 4 7 2 5 8 3 6 0 >> 17.01.2008 Matlab - Eine Einführung 13
Teilen von Matrizen; Indices Lineare Indizierung: >> A(6) liefert die 8 (spaltenweise Zählung) Indizierung über Zeile und Spalte: A= 1 2 3 4 5 6 7 8 0 >> A(2,3) liefert die 6: Name(Zeile, Spalte) Indizierung mit Vektoren: >> A([1,3],2) hier ist der Index ein Vektor! >> A(2,:) liefert die gesamte 2. Zeile >> A(:,3) liefert die gesamte 3. Spalte >> A(4:end) liefert alle Elemente ab dem 4. 17.01.2008 Matlab - Eine Einführung 14
Manipulation von Matrizen Die Änderung von Werten erfolgt durch Zuweisung mit Indices: >> A(4,4)=28 A = 1 2 3 0 4 5 6 0 7 8 0 0 0 0 0 28 Beachte: Die Matrixgröße wird zur Laufzeit automatisch angepaßt! Informationen über Matrizen (Variablen): who, whos size(a) length(a) welche Variablen gibt es / Größe Dimension einer Variablen Länge einer Variablen 17.01.2008 Matlab - Eine Einführung 15
Matrizen automatisch erzeugen Weitere hilfreiche Befehle zum Erzeugen spezieller Matrizen: zeros Matrix gefüllt mit Nullen ones Matrix gefüllt mit Einsen eye Einheitsmatrix rand Matrix mit zufälligen Elementen (gleichverteilt in [0,1]) randn Matrix mit zufälligen Elementen (normalverteilt) magic Magisches Quadrat repmat periodische Fortsetzung Probieren Sie: >> x=rand(1,4) >> plot(x) 17.01.2008 Matlab - Eine Einführung 16
Besondere Variable Die folgenden Variablen sind beim Start von Matlab vorhanden, können aber nachträglich überschrieben werden(!): pi =3.14159..., i,j imaginäre Einheit inf unendlich NaN not a number eps Fließkomma-Rechengenauigkeit (IEEE: 2-52) realmax größte Fließkommazahl (IEEE: 2 1024-1) realmin kleinste Fließkommazahl (IEEE: 2-1022 ) flops Anzahl der ausgeführten FK-Operationen computer Computertyp und Betriebssystem 17.01.2008 Matlab - Eine Einführung 17
Der Arbeitsbereich Alle unter dem Prompt >> oder in Skripten erzeugten Variablen liegen im sog. Arbeitsbereich (workspace). Funktionen haben ihren eigenen, lokalen Arbeitsbereich. Abfrage der im Arbeitsbereich befindlichen Variablen: >> who Your variables are: a b b2 c Detailliertere Aufstellung: whos Löschen des Arbeitsbereiches: clear 17.01.2008 Matlab - Eine Einführung 18
Laden und Speichern save speichert den gesamten Arbeitsbereich unter matlab.mat im aktuellen Verzeichnis. save fname speichert den gesamten Arbeitsbereich unter fname.mat im aktuellen Verzeichnis. save fname A b speichert nur die Variablen A und b unter fname.mat im aktuellen Verzeichnis. save A.xyz A -ascii speichert die Variable A unter A.xyz als ASCII-Tabelle. load lädt alle Variablen aus matlab.mat in den Arbeitsbereich. load fname lädt alle Variablen aus fname.mat in den Arbeitsbereich. load A.xyz lädt die ASCII-Tabelle A.xyz in die Variable A. 17.01.2008 Matlab - Eine Einführung 19
Arithmetische Ausdrücke Verknüpfungszeichen für Matrizen: + Addition - Subtraktion * Matrix-Multiplikation ^ Matrix-Potenzierung / Matrix-Division \ Matrix-Linksdivision komplex-konjugierte Transposition Elementweise Verknüpfungen:.* elementweise Multiplikation.^ elementweise Potenzierung./ elementweise Division 17.01.2008 Matlab - Eine Einführung 20
Geben Sie bitte jetzt ein:»clear»load Loading from: matlab.mat»who Your variables are: x y A»x x= -1 02»A A=» 1 2 3 4 5 6 7 8 0 17.01.2008 Matlab - Eine Einführung 21
»B=A? 17.01.2008 Matlab - Eine Einführung 22
»B=A B=» 1 4 7 2 5 8 3 6 0 17.01.2008 Matlab - Eine Einführung 23
»B=A B=»C=A+B 1 4 7 2 5 8 3 6 0? 17.01.2008 Matlab - Eine Einführung 24
»B=A B= 1 4 7 2 5 8 3 6 0»C=A+B C= 2 6 10 6 10 14 10 14 0» A und B wurden addiert. 17.01.2008 Matlab - Eine Einführung 25
»B=A B= 1 4 7 2 5 8 3 6 0»C=A+B C= 2 6 10 6 10 14 10 14 0»D=A*B? 17.01.2008 Matlab - Eine Einführung 26
»B=A B= 1 4 7 2 5 8 3 6 0»C=A+B C= 2 6 10 6 10 14 10 14 0»D=A*B D=» 14 32 23 32 77 68 23 68 113 D ist das Matrixprodukt von A und B. 17.01.2008 Matlab - Eine Einführung 27
»F=A.*B F= 1 8 21 8 25 48 21 48 0 elementweise Multiplikation von A und B»G=A./B Warning: Divide by zero. G = 1.0000 0.5000 0.4286 2.0000 1.0000 0.7500 2.3333 1.3333 NaN elementweise Division von A und B»w=x.*x w= 1 0 4 elementweise Multiplikation zweier Vektoren 17.01.2008 Matlab - Eine Einführung 28
»x x=»y=x-1-1 0 2? 17.01.2008 Matlab - Eine Einführung 29
»x x= -1 0 2»y=x-1 y= -2-1 1» Von jedem Element von x wurde 1 subtrahiert. 17.01.2008 Matlab - Eine Einführung 30
»x x= -1 0 2»y=x-1 y= -2-1 1»x * y? 17.01.2008 Matlab - Eine Einführung 31
»x x= -1 0 2»y=x-1 y= -2-1 1»x * y ans=» 4 Das Skalarprodukt von x und y ist gleich 4. 17.01.2008 Matlab - Eine Einführung 32
Außerdem gibt es zwei äußere Produkte von x und y:»x * y ans=»x * y 4?»y * x? 17.01.2008 Matlab - Eine Einführung 33
Außerdem gibt es zwei äußere Produkte von x und y:»x * y ans=»x * y ans=»y * x ans=» 4 2 1-1 0 0 0-4 -2 2 2 0-4 1 0 2-1 0 2 17.01.2008 Matlab - Eine Einführung 34
Natürlich kann man einen Vektor mit einem Skalar multiplizieren:»pi * x ans=» -3.1416 0 6.2832 17.01.2008 Matlab - Eine Einführung 35
Natürlich kann man einen Vektor mit einem Skalar multiplizieren:»pi * x ans=»b=a * x ans= 5 8-7» -3.1416 0 6.2832... oder mit einer Matrix: 17.01.2008 Matlab - Eine Einführung 36
Matrix- Division Es gibt zwei Arten von Matrixdivision in MATLAB: X = A \ B bedeutet X = inv(a) * B Hier ist X die Lösung von A * X = B. Diese Linksdivision ist definiert, wenn A genauso viele Zeilen hat, wie B. Falls die Matrix A quadratisch ist, wird sie nach dem Gaußschen Eliminationsverfahren berechnet. Hat A mehr oder weniger Zeilen als B, dann ist X die Lösung des überoder unterbestimmten Gleichungssystems A*X=B im Sinne kleinster Quadrate. X = A / B ist definiert durch A/B = (B \A ). Hier ist X die Lösung von X * A = B. 17.01.2008 Matlab - Eine Einführung 37
Lösen Sie nun das folgende Gleichungssystem: 1 z 1 + 2 z 2 + 3 z 3 = 5 4 z 1 + 5 z 2 + 6 z 3 = 8 7 z 1 + 8 z 2 + 0 z 3 = - 7» Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 b= 5 8-7 17.01.2008 Matlab - Eine Einführung 38
Lösen Sie nun das folgende Gleichungssystem: 1 z 1 + 2 z 2 + 3 z 3 = 5 4 z 1 + 5 z 2 + 6 z 3 = 8 7 z 1 + 8 z 2 + 0 z 3 = - 7»z= A\b Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 b= 5 8-7? 17.01.2008 Matlab - Eine Einführung 39
Lösen Sie nun das folgende Gleichungssystem: 1 z 1 + 2 z 2 + 3 z 3 = 5 4 z 1 + 5 z 2 + 6 z 3 = 8 7 z 1 + 8 z 2 + 0 z 3 = - 7»z= A\b z= -1 0 2» Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 b= 5 8-7 17.01.2008 Matlab - Eine Einführung 40
Lösen Sie nun das folgende Gleichungssystem: 1 z 1 + 2 z 2 + 3 z 3 = 5 4 z 1 + 5 z 2 + 6 z 3 = 8 7 z 1 + 8 z 2 + 0 z 3 = - 7»z= A\b z= -1 0 2» Es ist z gleich x. Das überrascht uns kaum, weil wir x über x = A*b berechnet haben. Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 b= 5 8-7 17.01.2008 Matlab - Eine Einführung 41
Vergleichsoperatoren: Logische Ausdrücke = = gleich? ~ = nicht gleich? > größer? >= größer gleich? usw. Logische Verknüpfungen: & logisches UND logisches ODER ~ logisches NICHT xor logisches EXKLUSIV-ODER 17.01.2008 Matlab - Eine Einführung 42
Boolesche Variable Ergebnisse von Logik-Operationen werden in 0-1-Matrizen gespeichert: >> L=(A>=5) L = 0 0 0 0 1 1 1 1 0 Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 17.01.2008 Matlab - Eine Einführung 43
Boolesche Variable Ergebnisse von Logik-Operationen werden in 0-1-Matrizen gespeichert: >> L=(A>=5) L = 0 0 0 0 1 1 1 1 0 Diese Boole-Matrix kann zur Indizierung verwendet werden: >> B=A(L) B = 7 5 8 6 >> Zum Gedächtnis: A= 1 2 3 4 5 6 7 8 0 17.01.2008 Matlab - Eine Einführung 44
Graphische Darstellung MATLAB verfügt über umfangreiche Funktionen zum Erzeugen von graphischen Darstellung: einfache Darstellung von Meßreihen in kartesischen Koordinaten Polarplots 3-dimensionale, farbcodierte Pixelbilder 3D-Flächen mit Höhenlinien beleuchtete 3D-Flächen mit Schatten und Glanzlichtern 17.01.2008 Matlab - Eine Einführung 45
Graphische Darstellung Matlab hat die Funktion plot( ), die Werte in der xy-ebene zeichnet Allgemeines Format: plot(x,y, symbols ) Die Symbole repräsentieren die Farbe, die Punktform und den Linien-Typ. 17.01.2008 Matlab - Eine Einführung 46
Plot Symbole Farben Symbole Linien y yellow. point - solid line m mag o circle : dots c cyan x xmark -. line dot r red + plus - - dashes g green * star b blue s square w white d diamond k black v triangle down ^ triangle up < left < right p pentagram h hexagram 17.01.2008 Matlab - Eine Einführung 47
Plot Beispiel t = linspace(0, 2*pi); y1 = cos(t); y2 = sin(t); y3 = y1.* y2; plot(t,y1, - ) ; plot(t,y3, r: ) 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7 0.5 0.4 0.3 0.2 0.1 0-0.1-0.2-0.3-0.4 - results in 100 data points - cosine of the points - sine of the points - cos(t)*sin(t) - plots cosine verse t with a straight line. - plots cosine*sine verse t with red dots. -0.5 0 1 2 3 4 5 6 7 17.01.2008 Matlab - Eine Einführung 48
Der plot-befehl Den Verlauf von y1 zeigt man mit plot an:»plot(t,y1) Wendet man dann plot auf y3 an:»plot(t,y3) 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7 0.5 0.4 0.3 0.2 0.1 0-0.1-0.2-0.3-0.4-0.5 0 1 2 3 4 5 6 7 so stellt man fest, dass der erste Graph überschrieben wurde! Um dies zu verhindern, muss man nach dem ersten plot die Eigenschaft hold auf on setzen: 1»hold on»plot(t,y3)»hold off 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7 17.01.2008 Matlab - Eine Einführung 49
Beispiel: plot(t,y1, -,t,y2, g*,t,y3, r-. ) - plots all 3 axis( [0 2*pi -1.5 1.5]) - adds axes legend( cos(t), sin(t), cos(t)*sin(t) ) - legend Beachte: [ ] Feld ( ) Funktion Symbole. 1.5 1 0.5 0-0.5 cos(t) sin(t) cos(t)*sin(t) -1-1.5 0 1 2 3 4 5 6 17.01.2008 Matlab - Eine Einführung 50
Funktion Gestaltung des Plots Das Graphikfenster wird mit»clf zurückgesetzt. Wenden Sie plot jetzt wie folgt an:»plot(t,y1, r--,t,y2, ro ) Anschließend kann man z.b. Titel und Achsenbeschriftung hinzufügen:»title( Sinus und Cosinus )»xlabel( Zeit t [s] )»ylabel( Funktion ) Sinus und Cosinus 1 0.5 0-0.5-1 0 1 2 3 4 5 6 7 Zeit t [s] 17.01.2008 Matlab - Eine Einführung 51
Speichern des Plots MATLAB besitzt Hardcopy-Routinen für viele Formate. Sinnvoll ist z.b. das PostScript-Format:»print meinbild -depsc speichert das aktuelle Graphikfenster als farbige Encapsulated Postscript -Datei meinbild.eps. Solche Dateien können mit dem Programm GhostView betrachtet und ausgedruckt oder in LATEX-Dokumente eingebunden werden. 17.01.2008 Matlab - Eine Einführung 52
Speichern des Plots»print -dbitmap kopiert das aktuelle Graphikfenster in das Windows-Clipboard. Von dort kann man es sofort mit Strg-V in Powerpoint importieren: 17.01.2008 Matlab - Eine Einführung 53
»print -dbitmap Speichern des Plots kopiert das aktuelle Graphikfenster in das Windows-Clipboard. Von dort kann man es sofort mit Strg-V z.b. in Powerpoint importieren: 17.01.2008 Matlab - Eine Einführung 54
Übungsaufgabe Erzeugen Sie einen Vektor y, dessen Komponenten die Abtastwerte zweier überlagerter Schwingungen repräsentieren! Zeitintervall: t=1..5 s Abtastrate: fa=50hz Sinusfrequenzen f 1 =1Hz und f 2 =2,5Hz Erzeugen Sie einen weiteren Vektor z, der zusätzlich (additiv) weißes Rauschen der Leistung p=0,2 enthält.» t=1:0.02:5;» y=sin(2.*pi.*1.*t)+sin(2.*pi.*2.5.*t); 3 2 1» r=randn(1,length(t)).*sqrt(0.2);» z=y+r; 0-1 -2-3» plot(t,z,t,y) 1 1.5 2 2.5 3 3.5 4 4.5 5 17.01.2008 Matlab - Eine Einführung 55
Gestaltung des Plots Das Graphikfenster wird mit»clf zurückgesetzt. Wenden Sie plot jetzt wie folgt an:»plot(t,y, r--,t,z, ro ) 17.01.2008 Matlab - Eine Einführung 56
Gestaltung des Plots Das Graphikfenster wird mit»clf zurückgesetzt. Wenden Sie plot jetzt wie folgt an:»plot(t,y, r--,t,z, ro ) Fügen Sie anschließend Titel, Achsenbeschriftung und Legende hinzu:»title( Überlagerte Schwingungen )»xlabel( Zeit t [s] )»ylabel( Auslenkung [willk. Einh.] )»legend('theorie','meßwerte') 17.01.2008 Matlab - Eine Einführung 57
Speichern des Plots MATLAB besitzt Hardcopy-Routinen für viele Formate. Sinnvoll ist z.b. das PostScript-Format:»print meinbild -depsc speichert das aktuelle Graphikfenster als farbige Encapsulated Postscript -Datei meinbild.eps. Solche Dateien können mit dem Programm GhostView betrachtet und ausgedruckt oder in LATEX-Dokumente eingebunden werden. 17.01.2008 Matlab - Eine Einführung 58
»print -dbitmap Speichern des Plots kopiert das aktuelle Graphikfenster in das Windows-Clipboard. Von dort kann man es sofort mit Strg-V in Powerpoint importieren: 17.01.2008 Matlab - Eine Einführung 59
Auslenkung [willk. Einh.]»print -dbitmap Speichern des Plots kopiert das aktuelle Graphikfenster in das Windows-Clipboard. Von dort kann man es sofort mit Strg-V in Powerpoint importieren: 3 2 Überlagerte Schwingungen Theorie Meßwerte 1 0-1 -2-3 1 1.5 2 2.5 3 3.5 4 4.5 5 Zeit t [s] 17.01.2008 Matlab - Eine Einführung 60
Polynome The polynomials are represented by their coefficients in MATLAB Consider the following polynomial: A(s) = s ^ 3 + 3 * s ^ 2 + 3 * s + 1; If s is scalar: use scalar operations A = s ^ 3 + 3 * s ^ 2 + 3 * s + 1; If s is a vector or a matrix: use array or element by element operation A = s.^ 3 + 3 * s.^ 2 + 3.* s + 1; Function polyval(a,s): evaluate a polynomial with coefficients in vector a for the values in s 17.01.2008 Matlab - Eine Einführung 61
Polynomials MATLAB: A(s) = s ^ 3 + 3 * s ^ 2 + 3 * s + 1 >> s = linspace(-5,5,100); >> coeff = [1 3 3 1]; >> A = polyval(coeff,s); >> plot(s,a) >> xlabel('s') >> ylabel('a(s)') 17.01.2008 Matlab - Eine Einführung 62
Polynome Operation MATLAB Command Description Addition C = A + B Sum of polynomial A and B, the coefficient vectors must have the same length. Scalar Multiple B = 3 * A Multiply the polynomial A by 3. Polynomial Multiplication Polynomial Division Derivatives C = conv(a, B) [q,r] = deconv(a,b) polyder(a) polyder(a,b) [n,d] = polyder(b,a) Returns the coefficient vector for the resulting from the product of polynomial A and B. Returns the long division of A and B. q is the quotient polynomial coefficient, and r is the remainder polynomial coefficient. Returns the coefficients of the derivative of the polynomial A. Returns the coefficients of the derivative of the product of A and B. Returns the derivative of ratio B/A, represented as N/D. Find Roots roots(a) Returns the roots of the polynomial A in column vector form. Find Polynomials Poly(r) Returns the coefficient vector of the polynomial having roots r 17.01.2008 Matlab - Eine Einführung 63
Programmieren in Matlab Ein Programm ist eine Folge von Anweisungen. Matlab Programs werden in scripts gespeichert. Ein script ist ein File mit der Endung.m 17.01.2008 Matlab - Eine Einführung 64
Bedingung If-Anweisung if condition End statements condition ist ein Boolscher Ausdruck 17.01.2008 Matlab - Eine Einführung 65
Bus-Fahrscheine Given the following bus fare schedule: Regular fare $1.50 Children under 5 free Youth fare (ages 5-17) $0.85 Senior fare (age 65+) $0.85 Goal: write a piece of code that determines a passenger's fare 17.01.2008 Matlab - Eine Einführung 66
Code for bus fare example %suppose age contains the passenger's age fare = 1.50; if age < 5 fare = 0; disp('under 5, free') end if (age >= 5 & age <= 17) age >= 65 fare = 0.85; disp('discount fare') end 17.01.2008 Matlab - Eine Einführung 67
Schleifen Allgemeine Form einer while Schleife while condition end statements 17.01.2008 Matlab - Eine Einführung 68
Summe der Quadrate von 1 bis 20 sum = 0; n = 1; while n <= 20 sum = sum + n^2; n = n + 1; end disp([ Die Summe ist ', num2str(sum)]) 17.01.2008 Matlab - Eine Einführung 69
for Schleifen for counter = first : last end statements oder for counter = first : incr : last end statements 17.01.2008 Matlab - Eine Einführung 70
Beispiel einer for Schleife: Summe der Quadrate von 1 bis 20 sum = 0; for n = 1 : 20 sum = sum + n^2; end disp([ Die Summe ist ', num2str(sum)]) 17.01.2008 Matlab - Eine Einführung 71
Beispiel: Fibonacci Zahlen 1, 1, 2, 3, 5, 8, Die ersten beiden Fibonacci Zahlen sind 1, 1. Jede weitere Fibonacci Zahl ist die Summe ihrer beiden Vorgänger. Aufgabe: Erzeuge in Matlab die ersten N Fibonacci Zahlen 17.01.2008 Matlab - Eine Einführung 72
Fibonacci Zahlen N = 10; fib = [1 1]; for k = 3 : N fib(k) = fib(k-1) + fib(k-2); end disp([ Die ersten ', num2str(n), ' Fibonacci Zahlen sind: ']) disp(fib) 17.01.2008 Matlab - Eine Einführung 73
Programmflusssteuerung: break zum vorzeitigen verlassen einer for- bzw. while-schleife continue zum Sprung in die nächste Iteration
Funktionen: Matlab bietet die Möglichkeit umfangreiche Aufgaben in Unterprogramme aufzuteilen dazu Definition von Funktionen, die jeweils in einer eigenen Datei abgelegt werden aber auch Definition von Funktionen innerhalb von Unterprogrammen möglich
Funktionen: Dateiname testfunktion.m Dateikopf function [A, B] = testfunktion(c,d,e); A =... B =... Aufruf der Funktion im eigentlichen Programm durch [M, N] = testfunktion (A,B,C);
Beispiel: Bisektion function [xvect,xdif,fx,nit] = bisect (a,b,toll,nmax,fun) err=toll+1; nit=0; xvect=[]; fx=[]; xdif=[]; while (nit < nmax & err > toll) nit=nit+1; c=(a+b)/2; x=c; fc=eval(fun); xvect=[xvect;x]; fx=[fx;fc]; x=a; if (fc*eval(fun) > 0) a=c; else b=c; end; err=abs(b-a); xdif=[xdif;err]; end return 17.01.2008 Matlab - Eine Einführung 77
Befehle zum Filemanagement Files können (in beliebigem Editor) geschrieben und in den Speicher geladen werden. echo on/off Echo aktiver m-files what Anzeige der Files im aktuellen Verzeichnis type - Anzeige des Fileinhalts 17.01.2008 Matlab - Eine Einführung 78
Matlab Files Es gibt verschiedene Typen von Files: Daten Files Matlab Files haben ihr eigenes Format Ascii-Files sind Standard Textfiles, die ausgedruckt werden können. m-files Programm Files. function files sind Funktionen ähnlich wie sin(x), cos(x), etc. 17.01.2008 Matlab - Eine Einführung 79
Daten Files Es gibt zwei Typen von Daten Files : Matlab Format ascii Format 17.01.2008 Matlab - Eine Einführung 80
Matlab Datenformat MatLab erzeut ein Datenfile mit der Bezeichnung filename.mat File kann geladen werden mit: load filename t = linspace(0, 2*pi) x = cos(t) save data1 t x clear what data1.mat load data1 17.01.2008 Matlab - Eine Einführung 81
ASCII Format Erzeugen mit save filename.dat ascii Laden mit load filename.dat ascii t = linspace(0 2*pi) x = sin(t) save data2.dat t x -ascii dir data2.dat clear load data2.dat -ascii 17.01.2008 Matlab - Eine Einführung 82