Matlab Syntax
Der Name MATLAB kommt von “matrix laboratory”. Damit wird die spezielle Bedeutung von Matrizen bei der Arbeit mit MATLAB klar. Die Darstellung von Datenfeldern erfolgt grundsätzlich als Matrix bzw. Vektor. Daraus ergeben sich einige Besonderheiten bei Rechnungen mit Variablen.
Inhaltsverzeichnis |
Eingabe von Skalaren, Vektoren und Matritzen
| Befehl | Resultat | Funktionsweise |
| n=7 | n=7 | Variable (1x1-Matrix) n wird erzeugt und mit 7 belegt |
| n=5; | n=5 | wie n=7, jedoch ohne Ausgabe |
| Zeilenvektoren | ||
| x=[1 2 3 4 5 6] | x=(1 2 3 4 5 6) | Zeilenvektor |
| x=[1,2,3,4,5,6] | x=(1 2 3 4 5 6) | Zeilenvektor, alternative Eingabe |
| t=1:10 | t=(1 2 3 4 5 6 7 8 9 10) | Zeilenvektor von 1 bis 10, Schrittweite 1 |
| t=10:1 | t=(10 9 8 7 6 5 4 3 2 1) | Zeilenvektor von 10 bis 1, Schrittweite -1 |
| t=1:0.5:4 | t=(1 1.5 2 2.5 3 3.5 4) | Zeilenvektor von 1 bis 4, Schrittweite 0.5 |
| t=2:-.2:1 | t=(2 1.8 1.6 1.4 1.2 1) | Zeilenvektor von 2 bis 1, Schrittweite -0.2 |
| x=linspace(3,4,11) | x=(3 3.1 3.2 3.3 ... 3.8 3.9 4) | Zeilenvektor mit 11 äquidistanten Einträgen von einschliesslich 3 bis 4. |
| Spaltenvektoren | ||
| x=[1;2;3] | /1\ x=| 2 | |
Spaltenvektor |
| Matrizen | ||
| x=[1 2 ;3 4 ;5 6] | /1 2 \ x=| 3 4 | |
Matrix |
| y=x' | y=/1 3 5\ \2 4 6/ |
Transposition |
| x(1,1)=9 | /9 2 \ x=| 3 4 | |
Elementweiser Matrixzugriff |
| x(3,:) | ans=(5 6) | Zugriff auf 3.Matrixzeile |
| x(:,2) | ans=(2 4 6)' | Zugriff auf 2.Matrixspalte |
| x(2:3,1:2) | ans=(3 4;5 6) | Zugriff auf Untermatrizen |
| B=[x x] | / 1 2 1 2 \ x=| 3 4 3 4 | |
Zusammensetzen von Matrizen |
| nullmatrix=zeros(3,2) | / 0 0 \ nullmatrix=| 0 0 | |
3x2 Nullmatix |
| eins=ones(3,2) | / 1 1 \ nullmatrix=| 1 1 | |
3x2 Matrix, jedes Element =1 |
| einheitsmatrix=eye(2) | einheitsmatrix=(1 0;01) | 2x2 Einheitsmatrix |
| rand(3) | mal so, mal anders | Erzeugen einer 3x3 Zufallsmatrix mit reellen Maschinenzahlen aus dem Intervall [0 1] |
| a='hallo' | a=hallo | 1x5 Matrix mit Zeichen als Elemente |
Allgemeine Befehle und Hilfe
| help help | Hilfe zur Verwendung der Online-Hilfe |
| help | Hilfethemen (topics) anzeigen |
| help topic (zum Beispiel help elmat) | Hilfethema anzeigen (hier elmat: Elementare Matrizen und Matrixfunktionen) |
| help befehl (zum Beispiel help size) | Befehlserläuterung |
| lookfor xyz | Zeigt die Befehle an, die in der ersten Zeile ihres Hilfetextes xyz enthalten. |
| more on / more off | Seitenweise Ausgabe ein- / ausschalten |
| who | Anzeigen der schon definierten Variablen |
| clear / clear x | alle oder einzelne Variablen löschen |
| flops(0) / flops | flops(0) setzt den Rechenoperationszähler auf 0, flops gibt die Anzahl der Rechenoperationen seit Beginn der Sitzung bzw. seit flops(0) an. |
| format long /format short | Umschalten des Ausgabeformats (nicht der Rechengenauigkeit) |
| diary on / diary off | diary protokolliert eine Matlabsitzung. Das Protokoll wird in ein file namens diary abgelegt. Der Befehl diary on startet die Protokollierung und der Befehl diary off beendet diese. Die dann entstandene Datei diary kann in einem Editor betrachtet werden (zum Beispiel emacs). |
Elementare Operationen
| 2+3 | Addition |
| x+y | Elementweise Addition von Matrizen (Dimensionen müssen übereinstimmen) |
| x*y | Matrixmultiplikation |
| x' | Transposition von Matrizen |
| x.*y | Elementweise Multiplikation von Matrizen |
| 3+x | Addition von 3 zu jedem Matrixelements |
| x^2 | Potenzierung der Matrix (x*x) |
| x^-1 | Inversenbildung |
| x=a\b | Berechnet die Lösung von a*x=b, bei Skalaren normale Division |
| x=b/a | Berechnet die Lösung von x*a=b, bei Skalaren normale Division |
| b./a | Elementweise Division |
| max(a) | Grösstes Element von a |
| size(a) | Dimension von a |
| length(a) | Länge eines Vektors a bzw. bei Matrizen max(size(a)) |
Ein- und Ausgabe
| disp('hello world') | Ausgabe des Strings auf dem Bildschirm |
| disp(x) | Ausgabe des Inhalts der Variablen x auf dem Bildschirm |
| textvar=sprintf('Dies ist der Inhalt von x: %0.5g',x) | Die Variable textvar wird mit einem Textstück (string) belegt. An die Stelle des Platzhalters %10.5g wird der Inhalt der Variable x gesetzt. Hierbei ist 10 die Anzahl der freigehaltenen Stellen, 5 die Anzahl der Nachkommastellen und g das Ausgabeformat. |
| n=input('Geben Sie bitte n ein: ') | Eingabe von Zahlen mittels Tastatur |
| pause(n) | Pause von n Sekunden |
Farben
| b | Blau |
| g | Grün |
| r | Rot |
| c | Cyan |
| m | Magenta |
| y | Gelb (Yellow) |
| k | Schwarz |
Punkttyp
| . | Punkt |
| ° | Kreis |
| x | x-Marker |
| + | Plus |
| * | Stern |
| s | Quadrat |
| d | Raute |
| v | Dreieck (nach unten) |
| ^ | Dreieck (nach oben) |
| < | Dreieck (nach links) |
| > | Dreieck (nach rechts) |
| p | Pentagramm |
| h | Hexagramm |
Linientyp
| - | Solid |
| : | Dotted |
| -. | Dash dot |
| -- | Dashed |
Bedingte Verzeigungen und Schleifen
| Logische Vergleichsoperatoren: < > <= >= == ~= | kleiner / grösser / kleinergleich / grössergleich / gleich / ungleich |
| if c==3 c=c+1; |
Bedingte Anweisung: Falls c=3 erhöhe c um 1. |
| if c==3 c=c+1; |
Bedingte Verzweigung: Falls c=e erhöhe c um 1, sonst erniedrige c um 1. |
| if c==3 c=c+1; |
Bedingte Verzweigung: Falls c=3 wird c um 1 erhöht, ansonsten wird folgendermassen vorgegangen: Falls c>0 wird c um 1 ernierdrigt, sonst auf 100 gesetzt. Ergebis: |
| for k=1:10 l(k)=2*k; |
For-Schleife k läuft von 1 bis 10, der k. Eintrag von l wird auf das doppelte von k gesetzt. Ergebnis: k=10, l=[2 4 6 ....20] |
| n=4; while n>1 |
While-Schleife solange die Bedingung n>1 erfüllt ist, werden die Anweisungen ausgeführt: Zu Beginn ist n=4, das heisst l(4):=8, dann wird n um 1 erniedrigt, also n=3. n ist immer noch grosser als 1, das heisst l(3):=6, n:=2. Im letzten Druchlauf wird l(2)=4, n:=1 gesetzt. |
| break | break bricht Schleifen ab |
Visualisierung
| x=0:0.1:2*pi; y=sin(x); |
Plot der Sinuskurve von 0 bis pi |
| plot([0 1 4],[5 3 7]) | Plot durch die Punkte (0,5),(1,3),(4,7) |
| x=0:0.1:2*pi; y=sin(x); |
Mehrere Plots in einer figure (Fenster der graphischen Ausgabe): hold Schalter auf on stellen. Durch Angabe von Parametern können verschiedene Farben und Strichtypen gewählt werden (siehe help plot). |
| close / close all | Aktuelle figures schiessen / Alle |
| figure / figure(3) | Graphisches Fenster Nummer 3 öffnen oder anzeigen (falls es schon existiert. Ab jetzt beziehen sich alle graphischen Befehle auf dieses Fenster. |
| xlabel('x-Achse') | Beschriftung der 1. Achse |
| ylabel('y-Achse') | Beschriftung der 2. Achse |
| legend('Kurve 1', 'Kurve 2') | Fügt Legende hinzu, pro gezeichnetem Element eine Stringkonstante. |
| axis([0 10 -2 2]) | Grösse des angezeigten Ausschnitts: x-Werte zwischen 0 und 10, y-Werte zwischen -2 und 2. |
| z=peaks(25); surf(z) |
3D-Graphiken erzeugen. Zunächst wird ein Datensatz erzeugt (vordefinierte Funktion peaks), dann mit surf dargestellt. Mit colormap werden die Farben definiert. |
| title('Dies ist der Titel der Graphik') | Titel der Graphik erstellen. |
| subplot(m,n,p) | Verschiedene kleinere Plots in ein Fenster plazieeren. m x n-Matrix aus Teilgraphiken wird gebildet. p wählt die p. Gra]phik aus. Diese ist dann aktuell, alle graphischen Befehle beziehen sich dann darauf. |
Funktionen
| g=inline('t^2') | Definition einer Inline-Funktion g(t)=t^2. Durch Eingabe von g(3) wird g an der Stelle 3 ausgewertet. |
| g=inline('x+2*y') | Analog, mit 2 Parameter: g(x,y)=x+2*y |
| g=inline('x+2*y','y','x') | Analog, nur mit expliziter Angabe der Reihenfolge der Parameter: g(x,y)=x+2*y |
| Funktionsdateien: Bilden einer Funktion in einer Datei funkname.m: function [ausg1, ausg2]=funkname(eing1, eing2) |
Beispiel: Die Datei mit dem Namen rechteck.m enthält folgenden Inhalt: function [inhalt,umfang]=rechteck(seite1,seite2) Die Funktion kann nun von direkt im Matlabeingabefenster, von einer Skriptdatei oder einer anderen Funktionsdatei aufgerufen werden zum Beispiel mit dem Befehl Beachte:
|
Eingabe und Darstellung von Polynomen
|
» num=[2 1 0] num = 2 1 0 » den=[3 2 1 ] den = 3 2 1 |
Polynome, z.B. 1 0 n an × s + ... + a × s + a werden als Zeilenvektoren bestehend aus den Koeffizienten in absteigender Reihenfolge dargestellt. |
|
» Gs=tf(num,den) Transfer function: 2 s^2 + s 3 s^2 + 2 s + 1 |
Für eine Übertragungsfunktion bestehend aus Zähler und Nenner werden Zähler (engl. „numerator“) und Nenner (engl. „denumerator“) als separate Zeilenvektoren eingegeben. Mit der Funktion tf(Zähler,Nenner) (tf für engl. „transfer function“) wird eine Übertragungsfunktion in der bekannten Form definiert. |
|
» Ks=5;Ts=3; Gs2=tf(Ks,[Ts 1]) Transferfunction: 5 3 s + 1 |
Die Zeilenvektoren können allerdings auch direkt innerhalb der runden Klammern des tf-Befehls eingegeben werden, wie hier in diesem Beispiel des PT1-Glieds. |
|
» num=conv([1 5],[1 6]) num = 1 11 30 » den=conv([1 6 10], [1 3]) den = 1 9 28 30 » Gs=tf(num,den) Transfer function: s^2 + 11 s + 30 s^3 + 9 s^2 + 28 s + 30 |
Eingabe einer Übertragungsfunktion als Multiplikation von mehreren Polynomen, z.B. wenn Pol- und Nullstellen des Systems bekannt sind. Mit dem Befehl conv(Polynom1,Polynom2) können jeweils zwei Polynome einfach multipliziert werden. Die Polynome werden dazu wieder als Zeilenvektoren der Koeffizienten in absteigender Reihenfolge eingegeben, um dann folgendes Ergebnis zu erhalten. |
