Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

M.F. + H.R. MATLAB 1 Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung Elementare Operationen –Matrixoperationen –Elementweise Operationen.

Ähnliche Präsentationen


Präsentation zum Thema: "M.F. + H.R. MATLAB 1 Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung Elementare Operationen –Matrixoperationen –Elementweise Operationen."—  Präsentation transkript:

1 M.F. + H.R. MATLAB 1 Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung Elementare Operationen –Matrixoperationen –Elementweise Operationen auf Matrizen –Vektoren und Matrizen manipulieren –Matrixfunktionen Programmierung –Ablaufkontrolle –M-Files +Scripts +Funktionen Graphik

2 M.F. + H.R. MATLAB 2 Matlab (1) Matrix Laboratory –Matrizen, Vektoren +reell, komplex +Kompakte Vektor- Matrixnotation +lineare Algebra, Gleichungen lösen, Eigenwerte und -Vektoren –Funktionen +math. Standardfunktionen +selbstdefinierte Funktionen –Differentialgleichungen, Integration, Fouriertransformation –Leistungsfähige 2D und 3D Grafik Erweiterung –Simulink. Graphisch orientiertes System zur Simulation dynamischer Systeme

3 M.F. + H.R. MATLAB 3 Matlab (2) Vorteile / Nachteile +Sehr geringer Entwicklungsaufwand –Nützt Maschineneffizienz nicht voll aus –Schlechte Effizienz bei nicht vektorisierbaren Problemen Anwendung: –numerische Probleme ersetzt Fortran oder C –Visualiserung von Lösungen oder Daten ersetzt oft Spezialprogramme –Entwicklung von Lösungsmethoden Prototypentwicklung: erster Schritt zu Fortran/C - Programm

4 M.F. + H.R. MATLAB 4 Matrizen, Vektoren und Skalare Elementares Datenobjekt: m n - Matrix (reell, komplex) Sonderfälle: –Skalar Matrix –Zeilenvektor 1 n - Matrix –Spaltenvektor n 1 - Matrix Alle algebraischen Operationen definiert +,-, *, /, ^, …

5 M.F. + H.R. MATLAB 5 Matrizen eingeben (1) Methoden –Explizit –In M-Files erzeugen –Aus externen Dateien laden –Durch Funktionen erzeugen Explizite Eingabe Eingabe: zeilenweise A = [ ; ; ] ergibt A = ; oder trennt Zeilen in Matrix definiert Variable A als Matrix Leerzeichen oder, trennt Elemente innerhalb Zeile

6 M.F. + H.R. MATLAB 6 Matrizen eingeben (2) Durch M-File Datei gena.m enthalte % cat gena.m A = [ ] % Matlab-Kommando >> gena erzeugt Matrix A Externe Dateien Matlab-Kommando save speichert Daten in Datei. Kann mit load eingelesen werden Durch Matlab-Funktionen erzeugen Besprechung später

7 M.F. + H.R. MATLAB 7 Matrixelemente (2) Matrixindizes Mit runden Klammern ( ) >> A(2,1) ans = 4 Erzeugen neuer Elemente >> x(5) = abs(x(1)) x = Zusätzliche Elemente = 0 nach Bedarf eingeschoben

8 M.F. + H.R. MATLAB 8 Blockmatrizen Aufbau großer Matrix aus kleinen r = [ ]; A = [ A ; r ] A = Submatrix A(1:2,:) ans = ; unterdrückt Ausgabe Ausgabe beliebiger Ausdruck durch Eingabe ohne ;

9 M.F. + H.R. MATLAB 9 Statements, Ausdrücke, Variable Matlab - Statement variable = ausdruck oder ausdruck Ausdruck –Einfache Variable oder Konstante –Komplexer Ausdruck konstruiert mit Operatoren –Lange Ausdrücke: Fortsetzung einer Zeile mit... Beispiel w = exp( i*omega*t)... + exp(-i*omega*t) Syntax –Variablennamen: 19 alphanumerische Zeichen –Groß/Kleinschreibung signifikant

10 M.F. + H.R. MATLAB 10 Information über Variablen Variablen in Workspace gespeichert Info über Workspace: who listet alle Variablen Detailinfo über Workspace whos listet Variablen mit Größe, ob komplex Vordefinierte Variablen bzw. Funktionen eps Maschinengenauigkeit = min{ x>0 | 1+x 1 } ans letztes Ergebnis (Answer) i j imaginäre Einheit pi Zahl realmax realmin größte / kleinste darstellbare Zahl inf Unendlich.z.B. Ergebnis von 1 / 0 NaN Not A Numberz.B. Ergebnis von 0 / 0 u.a.

11 M.F. + H.R. MATLAB 11 Hilfe On-line-Hilfe help ergibt... matlab/general - General purpose commands. matlab/ops - Operators and special characters. matlab/lang - Language constructs and debugging.... help general ergibt... Managing variables and the workspace. who - List current variables. whos - List current variables, long form.... help who gibt Detailbeschreibung zu who-Kommando

12 M.F. + H.R. MATLAB 12 Beenden, Abspeichern der Sitzung Beenden quit oder exit Sitzung speichern save name speichert alle lokalen Variablen in name.mat save temp x speichert nur Variable x in temp.mat Einlesen von MAT-File load name lädt in name.mat gespeicherte Daten

13 M.F. + H.R. MATLAB 13 Zahlen Dezimalnotation, mit Zehnerexponenten Beispiele 3.14, -12, e-19, 6.022e23 Imaginäre Zahlen 3i, -3e5i Eigenschaften –Wertebereich: ca bis –Relative Genauigkeit: eps, d.h. ca. 16 Dezimalstellen –Spezielle Werte an IEEE-Maschinen inf Infinity: z.B. 1/0 NaN Not A Number: Undefiniertes Ergebnis, z.B. 0/0

14 M.F. + H.R. MATLAB 14 Arithmetische Ausdrücke Ausdrücke: Operatoren + Addition - Subtraktion * (Matrix-) Mulitplikation / Division \ Division nach links: x = A \ b ist Lösung von A x = b ^ Potenz

15 M.F. + H.R. MATLAB 15 Komplexe Zahlen und Matrizen Komplexe Zahlen z = 3+4*i w = r*exp(i*phi) Komplexe Matrizen A = [1 2 ; 3 4] + i*[5 6 ; 7 8] A = [1+5i, 2+6i ; 3+7i, 4+8i] Achtung: Kein Leerzeichen! Falls i undefiniert wurde: Wiederherstellung i = sqrt(-1)

16 M.F. + H.R. MATLAB 16 Ausgabeformat (1) Format für alle weiteren Ausgaben: format - Befehl Normales Format: 4 Dezimalstellen: short-Format >> format short >> x = [ e-6 0 ] x = >> format short e, x x = e e >> format long, x x = >> format long e, x x = e e exakt Null Voreinstellung gerundet Null

17 M.F. + H.R. MATLAB 17 Funktionen (1) Matlab: umfangreiche Ausstattung mit Funktionen –Eingebaut und M-Files –Anwender kann selbst Funktionen definieren (M-Files) –Übersicht: Siehe Kurzreferenz. u.a.: +Elementare mathematische (min, abs, sin, exp...) +Spezielle Funktionen (bessel, erf...) +Matrixfunktionen (zeros, eye...) +Lineare Gleichungen ( /, \, inv,...) +Differentialgleichungen lösen +Integration Argumente: runde Klammern ( ) x = sqrt(log(z)) Mehrere Argumente durch, getrennt z = gammainc(1.3,0.8)

18 M.F. + H.R. MATLAB 18 Funktionen (2) Rückgabewert –ein Rückgabewert (Skalar, Vektor, Matrix) x = max(A) Zeilenvektor mit Spaltenmaxima –mehrere Rückgabewerte: Eckige Klammern [V,D] = eig(A) Spalten von V: Eigenvektoren D: Diagonale Matrix mit Eigenwerten Funktionen wissen, wieviele Ein/Ausgabeargumente sie haben (Überladen) [x,i] = max(A) i enthält Indices der Maxima Regel: Matlab modifiziert nie Eingabeargumente Eingabeargumente Ausgabeargumente

19 M.F. + H.R. MATLAB 19 Matrixoperationen Grundregel: Syntax und Bedeutung entspricht zumeist mathematischen Konventionen Einschränkungen: Numerische Genauigkeit Zeichensatz Übersicht –Transponieren –Addieren, Subtrahieren –Multiplizieren –Dividieren: Gleichung lösen –Potenzen

20 M.F. + H.R. MATLAB 20 Transponieren Apostroph: Transponierte Matrix (reell) >> A = [1 2 3 ; ; ], B = A' A = B = Spaltenvektor >> x = [ ]' oder x = [ -1; 0; 2 ] x =

21 M.F. + H.R. MATLAB 21 Adjungierte Matrix Komplexe Matrix: Apostroph bedeutet in Wirklichkeit Adjungierte Matrix >> k = [ 1 i ; 0 1 ] k = i >> k' ans = i Transponierte: verwende.' >> k.' ans = i

22 M.F. + H.R. MATLAB 22 Addieren, Subtrahieren Plus, Minus : normale Matrixaddition/subtraktion –Matrixdimensionen müssen übereinstimmen –Ausnahme: ein Operand ist Skalar wird auf alle Elemente angewandt Seien A, B 3 3-Matrizen, x 3 1 Spaltenvektor C = A + B Definiert 3 3-Matrix C y = x - 1 y 3 1, y(i) = x(i)-1, i=1,3 k = A + x verboten Funktion sum Für Vektoren: Summe der Elemente Für Matrizen: Zeilenvektor, der Spaltensummen enthält

23 M.F. + H.R. MATLAB 23 Matrixmultiplikation Stern: Multiplikation (im algebraischen Sinn) Skalares (inneres) Produkt von x,y >> x' * y 4 Äußere Produkte: x*y' und y*x' Matrix-Vektorprodukt >> b = A * x b = Multiplikation mit Skalar (c-Zahl): Auf jedes Element angewandt A * c

24 M.F. + H.R. MATLAB 24 Division von Matrizen Zwei Matrixdivisionszeichen \ Division nach links / Division nach rechts Bedeutung X = A \ B heißt formal: X = inv(A)*B implementiert effizient als Lösung des Gleichungssystems A*X = B x = A / B heißt formal: X = A*inv(B) implemtiert als Lösung von X*A = B Es gilt: B/A = (A'\B')' Anwendung: Lösen von Gleichungssystemen Sei A n n und b n 1 Erhalten Lösung x von A x = b als x = A \ b k Simultane Gleichungssysteme: b ist n k, Spalten von k sind Inhomogenitäten Spalten von x sind Lösungen

25 M.F. + H.R. MATLAB 25 Lösung von Gleichungssystemen: Hinweise Effizienz, Genauigkeit Für Gleichungssysteme immer Matrixdivision, nie Inversion! Vergleich: Division: x = A \ b Inversion: x = inv(A) * b ZufallsmatrixFlopsGenauigkeit Division Inversion Division Inversion Schwach besetzte Matrizen Sparse Matrices (Matrizen mit vielen Null-Elementen) können in Matlab definiert und sollten verwendet werden. Beispiel: Partielle Differentialgleichung mit Finiten Differenzen (z.B. Poissongleichung aus Teil 1: SOR-Verfahren überflüssig)

26 M.F. + H.R. MATLAB 26 Potenzen von Matrizen Zirkumflex: Matrixpotenz Definiert für quadratische Matrizen Natürliche Exponenten A^n A * A *... * A (n-mal) Reelle Exponenten: Definiert über Spektraldarstellung Ist [V,D] = eig(A) dann gilt A^p V * D.^p / V Elementweise Potenzierung (nächster Abschnitt)

27 M.F. + H.R. MATLAB 27 Weitere Matrixfunktionen Analytische Matrixfunktionen: Definition über Spektraldarstellung Achtung: Elementare Funktionen (exp, log,...) operieren elementweise Vordefinierte Matrixfunktionen expm, logm, sqrtmMatrix-Exponential, -Logarithmus, -Wurzel funm(A,'fun')Matrix-Funktion fun Weitere Funktionen det, invDeterminante, Inverese traceSpur polyCharakteristisches Polynom

28 M.F. + H.R. MATLAB 28 Elementweise Matrixoperationen Array-Operationen: Matrixelemente werden einzeln verknüpft Notation: Punkt (. ) vor Operator Übersicht –Addition, Subtraktion, Multiplikation, Division –Vergleichsoperationen –Logische Operationen –Mathematische Funktionen

29 M.F. + H.R. MATLAB 29 Binäre elementweise Operationen Addition, Subtraktion Matrixoperation elementweise definiert Multiplikation, Division.* bedeutet elementweise Multiplikation./.\ elementweise Division nach rechts / links Beispiel x = [ ] ; y = [ ] z = x.* y z = Potenzierung.^ bedeutet elementweise Potenzierung (ein oder beide Operanden Skalar oder Vektor) z = x.^ y z = z = x.^ 2 z = z = 2.^ x z = 2 4 8

30 M.F. + H.R. MATLAB 30 Vergleichsoperationen (1) Sechs Operatoren vergleichen Matrizen mit gleicher Dimension < kleiner als <= kleiner oder gleich > größer als >= größer oder gleich == gleich ~= ungleich Bedeutung Matrixelemente paarweise verglichen Ergebnis: Matrix gleicher Dimension mit Elementen... 1"wahr" 0"falsch"

31 M.F. + H.R. MATLAB 31 Vergleichsoperationen (2) Beispiele >> ~= 4 ans = 0 Erkennen von Regelmäßigkeiten >> a=magic(3) a = >> p=(rem(a,3)==0) p = Anwenden von Operationen auf ausgewählte Matrixelemente i = find(Y > 3.0); Gibt Indizes von Elementen > 3 Y(i) = 10 * ones(i); Indexvektor nächster Abschnitt Ersetzt alle Elemente von Y größer als 3 durch 10

32 M.F. + H.R. MATLAB 32 Logische Operationen Drei logische Operatoren & und (binär) | oder (binär) ~ nicht (unär) Bedeutung Matrixelemente werden paarweise mit null verglichen Ergebnis & Ergebnis 1, wenn beide Elemente 0, sonst 0 | 0, wenn beide Elemente 0, sonst 1 ~ 1, wenn Element 0, sonst 0 Funktionen all und any all(x) Ergebnis 1, wenn alle Elemente von x 0, sonst 0 any(x) 0, wenn alle Elemente 0, sonst 1 Anwendung in Programmen if ( all(a > 3) )..... end

33 M.F. + H.R. MATLAB 33 Logische Funktionen Vektorargumente: Ergebnis ist Skalar Matrixargumente: Ergebnis ist Zeile mit Ergebnissen spaltenweiser Operationen Zweimalige Anwendung gibt immer Skalar Unter anderem... any - Quantor all - Quantor find gibt Array-Indices von Elementen 0 isnan entdeckt NaN isinf entdeckt Unendlich isempty Matrix ist leer (0 0)

34 M.F. + H.R. MATLAB 34 Leere Matrizen Leere (0 0) Matrizen –gültige Werte für Variablen –Viele Operationen liefern plausible Werte Erzeugung: Leere eckige Klammern [] x = [] Definiert Variable x als 0 0 Matrix (gültig) Unterscheide clear(x) Löscht Variable x aus Workspace Entfernen von Teilen einer Matrix A(:,[2 4]) = [] Entfernt Spalten 2 und 4 Entstehen leerer Matrix (Beispiele) n=0; x=1:n x=input('Wert x eingeben ') und Leereingabe des Benutzers Entdecken leerer Matrix isempty(x)

35 M.F. + H.R. MATLAB 35 Spezielle Matrizen Wichtig in Erzeugung von Matrizen Spezielle Matrixfunktionen (Argumente s.u.): zeros Nullmatrix ones Einsmatrix (alle Elemente 1) eye Identitäts- (Einheits-)matrix rand Zufallsmatrix (gleichverteilt) Argumente: zeros(size(A)) Nullmatrix mit Dimension von A eye(n) n n Einheitsmatrix rand(m,n) m n Zufallsmatrix Weitere: diag(V,k) Erzeuge Diagonalmatrix: Matrix, deren k-te Diagonale Elemente von V sind, sonst 0 linspace(a,b,n) Zeile mit n zwischen a und b linear verteilten Elementen meshgrid(u,v) In Funktionen von zwei Variablen verwendet

36 M.F. + H.R. MATLAB 36 Matrizen manipulieren Größere Matrizen Mit Blockmatrixnotation erzeugen. Beispiel: Sei A quadratisch C = [ A A' ; ones(size(A) A.^2 ] erzeugt doppelt so große Matrix Rotieren, Spiegeln, Form ändern, Teil extrahieren rot90 Rotieren fliplr An vertikaler Achse spiegeln flipud An horizontaler Achse spiegeln diag Extrahiere (oder erzeuge) Diagonale tril Untere Dreiecksmatrix triu Obere Dreieckmatrix reshape Form ändern ' transponieren : Allgemeineres Umarrangieren

37 M.F. + H.R. MATLAB 37 Matrixfunktionen (Auswahl) Spektralzerlegung Sei A n n - Matrix Eigenwerte und Eigenvektoren x, definiert durch A x = x werden berechnet als [X,D] = eig(A) i-te Spalte von X ist Eigenvektor x i zu Eigenwert i = D(i,i) Norm, Rang, Konditionszahl cond Konditionszahl in 2-Norm (falls >> 1 Matrix singulär) norm 1-, 2-, F- und -Norm rank Rang rcond Schätzung reziproke Kondition (LINPACK) (falls 0 singulär)

38 M.F. + H.R. MATLAB 38 Integraltransformationen Faltung und Kovarianz conv Faltung deconv Entfaltung cov Kovarianz 1-dimensionale Fouriertransformation fft Fouriertransformation ifft Fourierrücktransformation fftshift Vertausche Quadranten 2-dimensionale Fouriertransformation fft2 2-D Fouriertransformation ifft 2-D Fourierrücktransformation fftshift Vertausche Quadranten Siehe auch Signal Processing Toolbox

39 M.F. + H.R. MATLAB 39 Automatisierung Matlab: Programmiersprache Anwendung: in M-Dateien Ablaufkontrolle forSchleifen whileSchleifen if Bedingungen breakAusprung M-Dateien Scripts Funktionen Eigene Programme echo, disp, input, pause, keyboard: Interaktion mit Benutzer Globale Variablen Zeichenketten eval : Text als Befehl ausführen Effizienz

40 M.F. + H.R. MATLAB 40 for - Schleifen Syntax for variable = vektor... Matlab Statements... end Bedeutung variable durchläuft Elemente von vektor und Schleifeninhalt wird ausgeführt. Genauer: Rechte Seite ist Matrix, variable erhält nacheinander Spalten der Matrix zugewiesen Beispiel for i = 1:n, x(i) = 0, end Verschachteln: Beispiel Hilbertmatrix for i = 1:m for j=1:n A(i,j) = 1/(i+j-1); end end Unterdrückt Ausgabe unvollständiger Matrizen

41 M.F. + H.R. MATLAB 41 while - Schleifen Syntax while ausdruck... Matlab Statements... end Bedeutung ausdruck (Vergleichsausdruck) wird ausgewertet. Falls 0 (wahr), wird Schleifeninhalt ausgeführt. Solange Wiederholung, bis ausdruck = 0 Beispiel: Iteration delta = 1.e-5; err = realmax; oldy = realmax; while err > delta... berechne y... err = abs ( y - oldy ); end

42 M.F. + H.R. MATLAB 42 if - elseif - else - Bedingungen Syntax if ausdruck1... Matlab Statements 1... elseif ausdruck2... Matlab Statements 2... else... Matlab Statements 3... end Bedeutung ausdruck1 (Vergleichsausdruck) wird ausgewertet. Falls 0, werden Statements 1 ausgeführt. Sonst wird ausdruck2 ausgewertet etc. Ist kein Ausdruck wahr, wird else - Block ausgeführt, falls vorhanden. Beispiel if rem (k,2) == 0 coeff = (a-1)^k else coeff = a^k end elseif optionell else optionell

43 M.F. + H.R. MATLAB 43 break - Schleife abbrechen Syntax for oder while break... end Bedeutung Schleife wird verlassen. Meist ist break in einer if-Bedingung Beispiel (3n+1 - Problem) while 1 n = input (' Eingabe n '); if isempty(n), break, end while n > 1 if rem(n,2) == 0 n = n/2 else n = 3*n+1 end end end Bei Leereingabe Aussprung

44 M.F. + H.R. MATLAB 44 Programmierung von Matlab Matlab = Interpreter –Interaktive Verwendung: Benutzer gibt Kommandos ein Matlab führt sie aus –Matlab - Programme Matlab führt Kommandos in Datei aus M-Datei –Dateiname mit Endung.m –Erstellung mit Texteditor –Enthält Folge von Matlab-Kommandos –M-Dateien können andere und sich selber rekursiv aufrufen –Datei name.m definiert Kommando name –Zwei Arten +Script +Funktion

45 M.F. + H.R. MATLAB 45 Matlab - Scripts Script –M-Datei mit Matlab-Kommandos –Kommandos wirken auf Daten im Workspace –Oft: Hauptprogramm Beispiel Fibonaccizahlen >> type fibo.m % fibo.m : erzeuge Fibonaccizahlen < 1000 f = [ 1 1 ]; i = 1; while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i + 1; end plot(f) >> fibo Datei fibo.m Dateiname als Kommando: führt Kommandos in Datei aus Danach sind f und i im Workspace %-Zeichen: Kommentar

46 M.F. + H.R. MATLAB 46 Start-Scripts Beim Start von Matlab matlabrc.m Zentrale Initialisierungsdatei startup.m Benutzerdefinieres Script startup.m Gesucht an zwei Stellen:./startup.m Falls nicht vorhanden: $HOME/matlab/startup.m Anwendung: Initialisierung von Konstanten etc.

47 M.F. + H.R. MATLAB 47 Funktionen (1) Funktion –M-Datei, die mit Wort function in erster Zeile beginnt –Funktionsdatei name.m definert neue Funktion name –Hat Ein- / Ausgabeparameter –Wirkt auf Daten in eigenem (lokalem) Workspace –Anwendung +Großer Teil von Matlab = M-Dateien +Erweiterung von Matlab

48 M.F. + H.R. MATLAB 48 Funktionen (2) Beispiel: Datei mean.m function y = mean(x) %MEAN Mittelwert % Für Vektoren gibt mean(x) Mittelwert % Für Matrizen gibt mean(x) Zeilenvektor % mit Spaltenmittelwerten [m,n] = size(x) if m == 1, m = n, end y = sum(x) / m >> mean(1:99) 50 mean.m = Funktions-M-Datei y = Ausgabeparameter mean = Funktionsname x = Eingabeparameter Kommentar: Hilfstext ( help mean ) Variablen m,n, y lokal in mean

49 M.F. + H.R. MATLAB 49 Funktionen (3) Mehrfache Ein- / Ausgabeparameter function [aus1, aus2] = fun (ein1, ein2, ein3) Beispiel function [mean, stdev] = stat (x) [m,n] = size(x); if m == 1, m = n ; end mean = sum(x)/m; stdev = sqrt(sum(x.^2)/m - mean.^2);

50 M.F. + H.R. MATLAB 50 Interaktion mit Benutzer echo, disp, input, pause, keyboard echo Gib Kommandos am Schirm aus disp Gib Wert am Schirm aus disp (x) Falls x Text enthält, wird dieser ausgegeben input Erwarte Wert von Benutzer n = input('Eingabe n ') pause Halte an und warte auf Tastendruck. pause(n) wartet n Sekunden keyboard Nimm Benutzereingabe als Script

51 M.F. + H.R. MATLAB 51 Globale Variablen Jede Matlab-Funktion hat eigene Variablen Manchmal: mehrere Funktionen - gemeinsame Variablen Definiere globale Variablen Syntax global VAR1 VAR2 Heißt, daß VAR1 und VAR2 einem speziellen globalen Workspace angehören Global-Definitionen erforderlich in: +Allen Funktionen, die globalen Wert von VAR1 und VAR2 verwenden +Falls nötig: Basisworkspace Beachte: +Funktionen, die VARi nicht global definieren, verwenden lokale Variable ( 3.5) Konvention: +Globale Variablen werden oft in Großbuchstaben geschrieben

52 M.F. + H.R. MATLAB 52 Zeichenketten Zeichenketten zwischen Einfachapostrophen >> s = 'Hallo'; Abspeicherung: Zeilenvektor von ASCII-Werten >> size(s) 1 5 >> abs(s) Konkatenieren: Blockmatrixnotation >> s = [ s, ' da!' ] s = Hallo da! Zeichenkettenbezogene Funktionen dispAn Schirm ausgeben isstrStelle fest, ob Zeichenkette strcmpVergleiche Zeichenketten num2str, int2str, sprintf Verwandle Zahl in Zeichenkette

53 M.F. + H.R. MATLAB 53 Die Eval-Funktion Leistungsfähige Makrofunktion Funktion Sei t Zeichenkette mit Matlab-Kommando. eval(t) führt Text in t als Kommando aus Beispiel: Hilbertmatrix t = '1/(i+j-1)' for i = 1:n for j = 1:n a(i,j) = eval(t) end end Beispiel: Funktionen numerieren spiele = ['schach'; 'dame '; 'mühle '; 'go ']; k = input('Spielnummer eingeben: '); eval(spiele(k,:)) Beachte Leerzeichen (Matrix rechteckig!)

54 M.F. + H.R. MATLAB 54 Effizienz (1) Geschwindigkeit –Eingebaute Funktionen mehr als 1 Größenordnung schneller als Interpreter –Vektorisiere Algorithmen wenn Effizienz nötig ist! Beispiel: statt i = 0; for t = 0:0.01:10 i = i + 1; y(i) = sin(t); end verwende t = 0:0.01:10; y = sin(t)

55 M.F. + H.R. MATLAB 55 Effizienz (2) Vektoren –Falls Vektorisierung unmöglich: reserviere Platz für Resultatsmatrizen/vektoren Beispiel: verwende y = zeros(1,100); for i = 1:100 y(i) = det(X^i); end viel schneller als wenn erste Zeile fehlte (und y wachsen müßte) Speicher –Löschen von Variable fragmentiert Speicher (außer der letzten Variablen) –Vergrößern von Vektoren führt zu Neuzuweisung Fragmentierung –Funktionsargumente werden erst in lokalen Workspace kopiert, wenn man sie ändert Kein Speicherproblem mit großen Argumentvariablen

56 M.F. + H.R. MATLAB 56 Funktionale Funktionen mit Funktionen als Argumente –Numerische Quadratur (Integration) quadBestimmtes Integral von Funktion einer Variable quad8- " -, höhere Ordnung –Nichtlineare Gleichungen, Optimierung fminMinimiere Funktion einer Variable fminsMinimiere Funktion mehrerer Variablen (umbeschränkt) fzeroNullstelle Funktion einer Variable –Numerische Integration von Differentialgleichungen ode232. u. 3. Ordnung Runge-Kutta Integration ode454. u. 5. Ordnung Runge-Kutta-Fehlberg Integration –Optimization Toolbox weitere Optimierungsfunktionen

57 M.F. + H.R. MATLAB 57 Quadratur Numerische Integration Beispiel: >> type kreis.m function k = kreis(x) k = sqrt(1 - x.^2); Integriere >> 4*quad('kreis',0,1) - pi Recursion level limit reached in quad. Singularity likely. ans = e-05 Methode höherer Ordnung >> 4*quad8('kreis',0,1) - pi ans = e-07 Funktionsname als Zeichenkette

58 M.F. + H.R. MATLAB 58 Optimierung, Nullstellen Suche nach Minima einer Funktion Beispiel >> type ord4.m function s = ord4(x) s = x.^4 - 4 * x.^2 + x; >> x = linspace(-2.5,2.5); >> plot(x,ord4(x)); >> fmin('ord4',-3,3) ans = Suche nach Nullstellen >> fzero('ord4',0.1) ans = e-017 Schätzwert

59 M.F. + H.R. MATLAB 59 Differentialgleichungen (1) Lösung eines expliziten Systems gekoppelter Differentialgleichungen (Anfangswertproblem) y '( t ) = f ( t, y ) ode23 und ode45 [t, y] = odexy(F, t0, tend, y0, tol) Ableitung f ystrich = fun(t,y) wobei F == 'fun' Anfangswert von t Endwert von t Anfangswert von y Genauigkeit

60 M.F. + H.R. MATLAB 60 Differentialgleichungen (2a) Beispiel: Mathieu-Differentialgleichung Pendel mit periodisch bewegter Aufhängung " = ( a - b sin( t ) ) sin( ) >> type pendel.m function phip = pendel(t,phi) % Gleichung für Pendel mit % beweglicher Aufhängung: % phi" = ( a - b sin(t) ) sin(phi) % phi = [ phi; phi' ] global a b phip = [ phi(2) (a-b*sin(t)).*sin(phi(1)) ]; >> global a b, a = 1; b = 0.5; >> [t,phi] = ode23('pendel', 0, 100, [0;0.1]);

61 M.F. + H.R. MATLAB 61 Differentialgleichungen (2b) Beispiel: Mathieu-Differentialgleichung Pendel mit periodisch bewegter Aufhängung " = ( a - b sin ( t ) ) sin ( ) >> type pendel.m function phip = pendel(t,phi) % Gleichung für Pendel mit % beweglicher Aufhängung: % phi" = ( a - b sin(t) ) sin(phi) % phi = [ phi; phi' ] global a b phip = [ phi(2) (a-b*sin(t)).*sin(phi(1)) ]; >> global a b, a = 1; b = 0.5; >> [t,phi] = ode23('pendel',... 0, 100, [0;0.1]); >> plot(t,phi) >> plot(phi(:,1),phi(:,2)) Besitzt chaotische Lösungen

62 M.F. + H.R. MATLAB 62 Graphik (1) Übersicht Struktur: Graphikobjekte (Linien, Oberflächen) Manipulation der Objekte möglich, nicht erforderlich 2-D-Graphik Zeichnen plot2-D-Plot von Vektoren oder Spalten von Matrizen Beschriften title, xlabel, ylabel, textTitel, Achsenbeschriftung, bel. Text Wertebereiche axisEinstellen der Wertebereiche für Achsen

63 M.F. + H.R. MATLAB 63 Graphik (2) 3-D-Graphik Wertepaare erzeugen meshgrid Höhenlinien zeichnen contour, contour3 3-D-Plots mesh, meshc, meshz3-D-Linienplot, mit Höhenlinien, mit Nullebene surf, surfc3-D-Oberfläche, mit Höhenlinien Beschriften title, xlabel, ylabel, zlabel, textTitel, Achsenbeschriftung, bel. Text clabelHöhenlinienbeschriftung Wertebereiche axisEinstellen der Wertebereiche für Achsen

64 M.F. + H.R. MATLAB 64 2-D-Plot plot - Funktion plot(y) Zeichnet Spalten von Matrix y gegen Index plot(x,y) Zeichnet Vektor y gegen Vektor x x oder y Matrix: Zeilen oder Spalten werden gegen Vektor gezeichnet Beispiel: t = linspace(0,2*pi); x = sin(t); y1 = sin(t+0.25); y2 = sin(t+0.5); plot(x,y1,'r-',x,y2,'g--'); Linie rot, durchgezogen Linie grün, strichliert

65 M.F. + H.R. MATLAB 65 Beschriften, Linienstil Plots beschriften (nach Plot-Kommando!) title('Phasenverschiebung') ylabel('y = sin(t+phi)') xlabel('x = sin(t)') Linienstile plot(x,y,stil) stil ist 1-3 Zeichen. Bedeutung: Farben: y m c gelb, magenta, cyan r g b rot, grün, blau w k weiß, schwarz Punkte markieren:. o x Punkt, Kreis, X + * Kreuz, Stern Linienart - durchgezogen : punktiert -. strichpunktiert -- strichliert

66 M.F. + H.R. MATLAB 66 Neue Linien zu bestehender Zeichnung Das hold-Kommando plot(x) hold on plot(y1,'--') plot(y2,'-.') hold off

67 M.F. + H.R. MATLAB 67 Wertebereiche ändern 2- und 3-D-Plots finden Wertebereiche automatisch Ändern: axisWertebereich für aktuelle Zeichnung erfragen und setzen Anwendung: nach Plot-Kommando zu geben axis([xmin, xmax, ymin, ymax]) Setze Limits explizit axis([xmin, xmax, ymin, ymax, zmin, zmax]) (für 3-D-Plots) axis('auto') Schalte automatische Skalierung wieder ein v = axis Merke aktuelle Limits in v. Später... axis(v) Setze Limits auf gemerkten Wert axis(axis) Friere Achsen auf aktuellen Wert ein axis('ij') Matrixmodus: Urprung links oben, i-Achse, j-Achse axis('xy') Kartesisch (Voreinstellung): Ursprung links unten. axis('square') Beide Achsen gleich lang axis('equal') Beide Achsen selber Maßstab axis('off') Schalte Achsenbeschriftung aus axis('on') Schalte Beschriftung wieder ein (Voreinstellung)

68 M.F. + H.R. MATLAB 68 Funktionen zeichnen Direkte Methode: plot x=(0:1/200:1)'; plot(x,cos(tan(pi*x))) Problem: Funktion oszilliert schnell Werte werden ausgelassen Funktion plotten: fplot Erzeuge Datei osz.m mit Funktion function y = osz(x) y = cos(tan(pi*x)); und verwende fplot fplot('osz',[0 1],... 25,20,10) Max. Subunterteilungen Max. Knickwinkel Min. Unterteilungen optionell

69 M.F. + H.R. MATLAB 69 3-D-Graphik Beispiel: sin(r)/r x = -8:0.5:8; y = x; [X,Y] = meshgrid(x,y); R = sqrt(X.^2+Y.^2+eps); Z = sin(R)./R; mesh(X,Y,Z)

70 M.F. + H.R. MATLAB 70 Animation Für schnelle Wiedergabe kurzer Sequenzen: Movie-Funktion Sonst: Anwendung objektorientierter Graphik % Lissajou-Figuren clf; m=input('m= '); n=input('n= '); x=linspace(0,2*pi,1000); p=plot(sin(m*x),sin(n*x),'k','EraseMode','None'); axis([-1.1,1.1,-1.1,1.1]); while 1 for delta=linspace(0,2*pi,40*max(m,n)) y=sin(n*x-delta); set(p,'Color','k'); set(p,'Ydata',y); set(p,'Color','y'); drawnow; end end Kurve bleibt in Schirmspeicher stehen Lösche Kurve: Setze Farbe schwarz Ändere Daten Mache neuen Graph sichtbar Merke Graphikobjekt "Kurve"

71 M.F. + H.R. MATLAB 71 Beispiel zur Numerik Endliche Genauigkeit der Zahlendarstellung Stelle ( x ) 3 im Intervall [ 100 -, ] ( = ) auf drei Arten berechnet graphisch dar: 1. In faktorisierter Form function y = yfac(x) y = ( x ).^ 3; 2. Hornerschema function y = yhor(x) y = x.*(x.*(x - 300) ) ; 3. Ausmultipliziert function y = yexp(x) y = x.^ * x.^ * x ; Erkläre Effekt und Größenordnung Wie wirkt dieser sich z.B. auf Nullstellensuche aus?


Herunterladen ppt "M.F. + H.R. MATLAB 1 Überblick Exzerpt aus Matlab User's Guide (Version 4.0) Einführung Elementare Operationen –Matrixoperationen –Elementweise Operationen."

Ähnliche Präsentationen


Google-Anzeigen