MATLAB Befehle Martin Züger März 2007 ===================================================================================================== Allgemeines: Bildschirm löschen clc | Unendlich Inf Variablen, etc. löschen clear all | Undefiniert NaN Ausgabe unterdrücken ; | 14 Nachkommastellen anz. format long Kommentar: % | 5 Nachkommastellen anz. format short Einfache Operationen: Potzenzieren x^y Quadrat-Wurzel sqrt() Exponentialfunk. (zur Basis e) exp() Logarithmus (zur Basis e) log() Logarithmus zur Basis 10 log10() Logarithmus zur Basis 2 log2() Betrag abs() Vorzeichen (Signum-Funk.) sign() Auf nächste ganze Zahl runden round() Runden: gegen 0 / nach unten / nach oben fix() ceil() floor() Regeln für Grundoperationen x+y geht immer x-y geht immer x*y wenn x oder y eine Zahl ist x/y wenn y eine Zahl ist x.*y wenn x und y beides Vekoren/Matrizen sind x./y wenn y eine Matrix oder ein Vektor ist x^y wenn x und y Zahlen sind x.^y wenn x oder y ein Vektor/Matrix ist Winkelfunktionen: (Winkel in rad) Beispiele: Sinus / Arkus-Sinus sin() asin() Sinus von 10° sin(10/180*pi) Cosinus / Arkus-Cosinus cos() acos() Cosinus von 15° cos(15/180*pi) Tangens / Arkus-Tangens tan() atan() Winkel von 8% Steigung atan(0.08)/pi*180 Cotangens (1/tan()) cot() Winkel im Ko.Sys.: atan2(y,x) Winkel im Ko.Sys. atan2(y,x)/pi*180 Vekoren und Matrizen (Allgemeines): Vektor eingeben b = [1 2 3 4 5] oder c = [0,9,8] Matrizen eingeben A = [2 7;1 8; 3 6] (oder mit Return anstelle von ; Grösse einer Matrix size() (Ausgabe: erst Zeilen, dann Spalten) Länge eines Vektors length() Transponieren ("Umklappen") ' Zugriff auf Element Z(y,x) Zugriff auf Zeile Z(y,:) Zugriff auf Spalte Z(:,x) Grösster Wert jeder Spalte max() Kleinster Wert jeder Spalte min() Summe aller Elemente je Spalte sum() Mittelwert aller Elemente je Spalte mean() Elem. eines V. nach Gr. sort. sort(v) Beispiele: Grösse der Matrix A size(A) Zeilen in r, Spalten in c [r c] = size(A) Länge des Vektors b length(b) A transponieren: A' 2. Zeile, 3. Spalte von A A(2,3) 2. Zeile von A A(2,:) Grösster Wert und Stelle in x [wert stelle] = max(x) Grösster Wert in einer Matrix max(max(A)) Summe aller Elemente in Matrix sum(sum(A)) Grundoperationen mit Matrizen und Vektoren: Matrix mit Matrix adieren: [1 2] + [8 9] Matrix von Matrix subtrahieren: [7 8 9] - [1 2 3] Skalar mit j. Element addieren: 9 + [1 2 3 4 5] Skalar von j. Element subtr.: [9 8 7] - 3 Skalar mit j. Element multipl.: 5 * [1 2 3 4 5] j. Element dividiert d. Skal.: [2 4 6] / 2 Skalar div. durch j. Element: 12 ./ [2 3 4 6] Matrix-Element mal Matrix-E.: [5 4 3 2 1] .* [9 8 7 6 5] Matrix-E. dividiert d. Matrix-E.: [9 8 7] ./ [2 3 4] Potenz von jedem Element: [2 4 6] .^ 2 Skalar hoch jedes Element: 2 .^ [2 3 4] Grafik-Ausgabe (Graph zeichnen): Grafische Darstellung plot(x,y) Vektor zw. x1 & x2 mit Abstand d x1:d:x2 100 Werte zwischen x1 und x2 linspace(x1,x2) Beliebige Anzahl Werte zw. x1 & x2 linspace(x1,x2,ANZAHL) Gitternetz anzeigen/ausblenden grid on grid off Horiz. & Vert. gleicher Massstab axis equal Bildausschnitt wählen axis([xmin xmax ymin ymax]) kleine Kreise bei Werte plot(x,y,'o') gepunktete Linie ':' rot / blau / grün / cyan / schw. 'r' 'b' 'g' 'c' 'k' kleine Vierecke 's' grüne Sterne 'g*' x-Achsen-Beschriftung xlable('TEXT') y-Achsen-Beschriftung ylable('TEXT') Titel setzen title('TEXT') Beispiele: Rote druchgezogene Linie & grüne gestrichelte Linie & schwarzer kleiner Kreis bei Berührungspunkt (0,1) --> plot(x,y1,'r',x,y2,g'g--'0,1,'ko') Merke: Keine Strichpunkte nach plot, grid und axis Bei Funktionen mit Polstellen, Teil vor und nach Polstelle einzeln zeichnen, da sonst eine senkrechte Linie gezeichnet wird! Skripte erstellen: Eingabe input(..) Ausgabe output(..) Beispiele: File kreiskegel.m: r=input('Grundkreisradius='); h=input('Hoehe='); Volumen=pi*r^2*h/3; disp(['Das Volumen ist: ' num2str(Volumen)]) File quadratische Loesung.m: a=input('Koeffizient a='); a=input('Koeffizient b='); a=input('Koeffizient c='); loesung(1)=(-b+sqrt(b*b-4*a*c))/(2*a); loesung(2)=(-b-sqrt(b*b-4*a*c))/(2*a); loesung Merke: Mit einem Strichpunkt nach dem Befehl kann wie sonst auch die Ausgabe des Resultates unter- drückt werden. Auch Kommentare können ganz normal mit dem %-Zeichen eingeleitet werden. Lineare Gleichungssysteme lösen (Gauß-Elimination): Auf Stufenform bringen rref(Ab) Lösen (wenn nur eine Lösung) A\b Beispiele: Ab=[1 -1 -1 0 ; 10 12 0 51.6 ; 0 12 -18 0] rref(Ab) oder A=[1 -1 -1 ; 10 12 0 ; 0 12 -18] b=[0 51.6 0] x=A\b Komplexe Zahlen: Imaginäre Einheit j Realteil real(z) Imaginärteil imag(z) Beispiele: Eingabe kartesisch z=3-7j Eingabe exponential z=sqrt(2)*exp(j*pi/4) Eingabe trigonometrisch z=sqrt(2)*(cos(pi/4)+j*sin(pi/4)) von kartesisch -> trigo z=-5+7j; abs(z) % gibt 8.6 angle(z) % gibt 2.19 (im Bogenmass) komplexe Gleichungssys. A=[1+j 2-3j ; 4+2j 5-j]; b=[1+j ; 3-2j]; Ab=[A b]; rref(Ab) % gibt x=0.75-1.00*j y=-0.40+0.02*j Merke: Matlab gibt komplexe Zahlen immer im kartesischen System aus! i und j NIE als Variablen verwenden! Bei Komplexen Gleichungssystemen werden bei Verwendung von ' die Vorzeichen gekehrt! Funktionen (Programmierung von Methoden): Rückgabewert res Rarameter z und s Vergleichsoperatoren <, <=, >, >=, ==, ~= Logische Operatoren &, |, ~ Kontrollstrukturen if ... end ef ... else ... end while ... end for ... end Merke: Name der Funktion muss mit dem Dateinamen übereinstimmen! Beim Aufruf von help(NAME_DER_FUNKTION) werden die Kommentare Angezeigt! Beispiele: IF-Anweisung if x < y disp('X ist kleiner als Y') end While-Schlaufe while i < 10 disp('Ich zähle bis 9') i = i+1; end For-Schleife for n=0:10 disp(['Das Quadrat von ' num2str(n) ' ist ' num2stri(n^2)]) end Funktion kreiskegel.m function res=kreiskegel(r,h) % Diese Funktion berechnet das Volumen eines Kreiskegels res=pi*r^2*h/3; Funktion mmax.m function res=mmax(A) % Diese Funktion gibt das grösste Element einer Matrix aus res=max(max(A));