Diese Seite beinhaltet Grundlegende
Befehle von Matlab.
Zusammengestellt für das Mathematische Praktikum 2001
Prof. Dr. Angelika Bunse-Gerstner, Barbara Lang
Ziel
Diese Seite stellt grundlegende Befehle von Matlab zusammen. Die Befehle werden nicht umfassend behandelt, sondern beispielhaft vorgestellt. Deshalb empfiehlt es sich, die informative Online-Hilfe vom Matlab parallel zu konsultieren. Eine ausführlichere Einführung zu Matlab kann man sich zum Beispiel an folgender Stelle vom Netz ziehen: http://www-m3.ma.tum.de/m3/NLA/teaching/NumPra1/begleit.html
Starten von Matlab durch Eingabe von matlab in einem unix/linux-Terminal. Nach dem Erscheinen des Matlab-Prompt-Zeichen ">>" können Matlabbefehle eingegeben werden. Beenden von Matlab durch die Eingabe von quit.
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 | \3/ |
Spaltenvektor |
Matrizen | ||
x=[1 2 ;3 4 ;5 6] | /1
2 \ x=| 3 4 | \5 6/ |
Matrix |
y=x' | y=/1 3 5\
\2 4 6/ |
Transposition |
x(1,1)=9 | /9
2 \ x=| 3 4 | \5 6/ |
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 | \ 5 6 5 6 / |
Zusammensetzen von Matrizen |
nullmatrix=zeros(3,2) |
/ 0 0 \ nullmatrix=| 0 0 | \ 0 0 / |
3x2 Nullmatix |
eins=ones(3,2) |
/ 1 1 \ nullmatrix=| 1 1 | \ 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 |
Es empfiehlt sich, die folgenden Topics mal anzuschauen:
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). |
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)) |
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 |
Logische Vergleichsoperatoren: < > <= >= == ~= | kleiner / grösser / kleinergleich / grössergleich / gleich / ungleich |
if c==3 c=c+1; end |
Bedingte Anweisung: Falls c=3 erhöhe c um 1. |
if c==3 c=c+1; else c=c-1; end |
Bedingte Verzweigung: Falls c=e erhöhe c um 1, sonst erniedrige c um 1. |
if c==3 c=c+1; elseif c>0; c=c-1; else c=100; end |
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; end |
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 l(n)=2*n; n=n-1; end |
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. Ergebnis: n=1, l=[0 4 6 8] |
break | break bricht Schleifen ab |
x=0:0.1:2*pi; y=sin(x); plot(x,y) |
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); plot(x,y) hold on plot(x,2*y,':r') |
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) colormap(hsv) |
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. |
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:
|