In Matlab können Zahlen sehr einfach eingegeben und berechnet werden. Z.B.
79.8000
In diesem Dokument sind die Matlab
EINGABEN grün und die AUSGABEN blau dargestellt.
Die Ausgabe wird in der Matlabvariablen ans gespeichert. Der wichtigste Datentyp in Matlab ist die Matrix (eine Zahl ist eine 1x1-Matrix). Matrizen können Variablen zugeordnet werden, z.B. die Magische-Dürer-Matrix:
A=[16
3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A
=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Bei der Eingabe werden die Zahlen in einer Zeile mit Blanks oder Kommta
getrennt, die einzelnen Zeilen mit Semikolon. Um z.B. die Summe aller Elemente
der ersten Spalte zu erhalten, geben wir
A(1,1)+A(2,1)+A(3,1)+A(4,1)
ans
=
34
ein. Viel schneller geht die Benutzung des Doppelpunkt-Operators (:). Z.B.
also finden wir das obige Ergebnis mit der sum-Funktion
Noch kürzer ist die automatische Nutzung des kleinsten und größten Indexes
sum(A(:,1))
ans
=
34
bzw. die Summation über alle Spalten auf einmal:
Um desgleichen mit den Zeilen zu veranstalten, benutzen wir einfach die transponierte Matrix:
B=A'
B
=
16
5 9 4
3
10 6 15
2
11 7 14
13
8 12 1
Oder für die Diagonale mit dem diag-Kommando
sum(diag(A))
ans
=
34
Wenn die Matrix um die Mittelachse gespiegelt wird ,können wir
auch die Summe der Gegendiagonalen berechnen.
B=fliplr(A)
B
=
13 2 3 16
8 11 10 5
12 7 6 9
1 14 15 4
Magische Quadrate lassen sich im übrigen ganz einfach in Matlab z.B. mit
B=magic(4)
B
=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
erzeugen. Dies entspricht nicht ganz unserer Eingangsmatrix. Dies läßt sich leicht korrigieren:
C=B(:,[1,3,2,4])
C
=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Matrix-Element kann jeder gültiger Matlabausdruck sein.:
x=[-1.3
sqrt(3) (1+2+3)*4/5]
x
=
-1.3000 1.7321 4.8000
Auf Matrixelemente wird mit der Angabe des Indexes in Klammern zugegriffen
x(5)=42
x
=
-1.3000 1.7321 4.8000 0 42.0000
(Beachten Sie, daß x(5) vorher noch nicht definiert war!)
Komplexe Zahlen werden einfach mit einem i oder j als imaginärer Einheit eingegeben. Z.B.:
A=[1
2 ;3 4]+i*[5 6; 7 8]
A
=
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
Z.B. finden wir für die bekannte Euler-Formel
exp(i*(1+i))
ans
=
0.1988 + 0.3096i
und
cos(1+i)+i*sin(1+i)
ans
=
0.1988 + 0.3096i
Wie erwartet!
Am einfachsten benutzt man das help-Kommando. Z.B.
SUM Sum
of elements.
For vectors,
SUM(X) is the sum of the elements of X. For
matrices,
SUM(X) is a row vector with the sum over each
column.
For N-D arrays, SUM(X) operates along the first
non-singleton
dimension.
SUM(X,DIM) sums along the dimension DIM.
Example:
If X = [0 1 2
3 4 5]
then sum(X,1)
is [3 5 7] and sum(X,2) is [ 3
12];
See also PROD, CUMSUM, DIFF.
Komfortabler ist ab dem Release 5 die helpwin-Funktion, die ein eigenes Hypertextsystem startet. Am schönsten ist allerdings die neue helpdesk-Funktion, die eine vollständige online-Dokumentation im HTML- oder PDF-Stil für Netscape startet.
Um sich den Zustand der definierten Variablen anzusehen, kann man das who bzw. whos-Kommando benutzen.
who
Your
variables are:
A B C ans x
whos
Name
Size Bytes Class
A 2x2 64 double array (complex)
B 4x4 128 double array
C 4x4 128 double array
ans 1x1 16 double array (complex)
x 1x5 40 double array
Grand total is 42 elements using 376 bytes
Um alle definierten Variablen zu löschen geben wir
In Matlab sind grundsätzlich alle Rechenoperationen wie +-*/ und ^ für Matrizen definiert. Einige Beispiele:
A=[1 2 3;4 5 6]; B=[0 1 2; 4 5 6];
(Hier dient das Semikolon zwischen den Definitionen zum trennen der Eingaben und unterdrücken der Ausgaben.)
A/B
ans
=
0.7500 0.2500
0.0000 1.0000
A\B
ans
=
2.0000 1.5000 1.0000
0 0 0
-0.6667 -0.1667 0.3333
Hierbei entspricht der /-Operator
der Rechts- und der
\-Operator der Links-Division. D.h. das Ergebnis
von X=B/A
entspricht der Lösung der Gleichung X*A=B
und X=A\B
der Gleichung A*X=B
.
Die Matrix-Links-Divison A\B
ist immer definiert, wenn B
soviele Zeilen hat wie A.
Für die Rechts-Divison gilt A/B=(B'/A')'
. Für über- bzw. unterbestimmte Systeme wird dann ein
Ausgleichsverfahren (Least Squares) angewendet.
D=[1,2,3;3,5,6;7,8,9]
D
=
1 2 3
3 5 6
7 8 9
D^2
ans
=
28 36 42
60 79 93
94 126 150
x=[1
2 3]; y=[4 5 6]';
x*y
ans
=
32
Wird eine komponentenweise Multiplikation, Division oder Exponentation gewünscht, ist der Operation ein Punkt (.) voranzustellen.
A./B
Warning:
Divide by zero.
ans =
Inf 2.0000 1.5000
1.0000 1.0000 1.0000
D.^2
ans
=
1 4 9
9 25 36
49 64 81
Für Matrizen sind viele weitere Funktionen, wie Eigenwerte (eig) , LU-Zerlegung (lu), Matrix-Exponential (expm), usw. definiert. Für dünn besetzte große Matrizen (sparse) gibt es in Matlab spezielle Verfahren, die sehr viel Speicher und Rechenzeit sparen.
Skripte sind einfache ASCII-Textfiles, die Matlabbefehle enthalten. Zeilen, denen ein %-Vorangestellt ist, werden als Kommentar verarbeitet. Aus einer Matlab-Session heraus kann das Skript durch Aufrufen des Dateinmens aufgerufen werden. Hierzu muß allerdings der Pfad zu der Datei vereinbart werden. Dieses geschieht mit dem path-Kommando, oder im Release 5 in der Windowsversion mit dem Pathbrowser.
help
path
PATH
Get/set search path.
p = PATH
returns a string containing the path in P.
PATH(P)
changes the path to P. PATH(PATH) forces the path cache
to be
rebuilt.
PATH(P1,P2)
changes the path to the concatenation of the two path
strings
P1 and P2. Thus PATH(PATH,P) appends a new directory to
the current
path and PATH(P,PATH) prepends a new path. If P1 or
P2 are
already on the path, they are not added.
For example,
the following statements add another directory
to MATLAB's
search path on various operating systems:
See also WHAT, CD, DIR, ADDPATH, RMPATH.
%fibscript.m
%Fibonacci-Zahlen
f=[1 1]; n=1;
while
f(n) + f(n+1)<80
f(n+2)=f(n)+f(n+1);
n=n+1;
end;
f
Dieses Textfile sollte dann unter dem Namen fibscript.m abgespeicht werden.
!Achtung Windows-Editoren neigen dazu ein nicht sichtbares ".txt" an die Datei anzuhängen. Man vergewissere sich mit der rechten Maustaste und "Eigenschaften" und benutze ggf. den Befehl "umbenennen", um das ".txt" zu entfernen.
Ausgeführt wird das Skript mit
fibscript
f
=
1 1 2 3 5 8 13 21 34 55
Eleganter ist allerdings die Formulierung mit Hilfe einer Funktion. Diese könnte so aussehen:
function
f=fibfun(n)
%FIBFUN
berechnet die n-te Fibonacci Zahl
if
n>2
f=fibfun(n-1)+fibfun(n-2);
else
f=1;
end
Jetzt können wir die 10-te Fibonacci-Zahl einfach mit
aufrufen. Ein Hilfesystem wird durch die Kommentar-Zeile gleich mitgeliefert:
help
fibfun
FIBFUN
berechnet n-te Fibonacci Zahl
Polynome werden in Matlab sehr einfach durch die Angabe des Koeffizientenvektors definiert., z.B. wird das Polynom y=x3-30x+30 in Matlab mit
dargestellt. Jetzt muß noch ein Wertebereich für x definiert werden:
(-8 bis 8 mit der Schrittweite 0.1). Die Funktionswerte y bekommen wir dann (alle auf einmal) mit der Funktion polyval :
Das kann geplottet werden:
Nullstellen finden wir mit roots :
x0=roots(p)
x0
=
-5.9217
4.8845
1.0372
Test:
polyval(p,x0)
ans
=
1.0e-012 *
0.2309
0.2345
0.0107
Matlab bietet viele weitere Funktionen zum numerischen Auswerten von Daten oder zum Lösen von Gleichungen. Insbesondere zum Lösen von gewöhnlichen Differentialgleichungen liegen viele Methoden vor. Siehe. z.B.
help
funfun
Function
functions and ODE solvers.
Optimization and root finding.
fmin - Minimize function of one variable.
fmins - Minimize function of several variables.
fzero - Find zero of function of one variable.
Numerical integration (quadrature).
quad - Numerically evaluate integral, low order method.
quad8 - Numerically evaluate integral, higher order method.
dblquad - Numerically evaluate double integral.
Plotting.
ezplot - Easy to use function plotter.
fplot - Plot function.
Inline function object.
inline - Construct INLINE function object.
argnames - Argument names.
formula - Function formula.
char - Convert INLINE object to character array.
Utilities.
vectorize - Vectorize string expression or INLINE function object.
Ordinary differential equation solvers.
(If unsure about stiffness, try ODE45 first, then ODE15S.)
ode45 - Solve non-stiff differential equations, medium order method.
ode23 - Solve non-stiff differential equations, low order method.
ode113 - Solve non-stiff differential equations, variable order method.
ode15s - Solve stiff differential equations, variable order method.
ode23s - Solve stiff differential equations, low order method.
odefile - ODE file syntax.
ODE Option handling.
odeset - Create/alter ODE OPTIONS structure.
odeget - Get ODE OPTIONS parameters.
ODE output functions.
odeplot - Time series ODE output function.
odephas2 - 2-D phase plane ODE output function.
odephas3 - 3-D phase plane ODE output function.
odeprint - Command window printing ODE output function.
Matlab kennt viele Befehle zur Visualisierung von Daten. Die plot-Funktion haben wir bereits kennen gelernt. Es gibt eine besondere Funktion, um Funktionen zu plotten, die noch keinen definierten Wertebereich haben.

Die Funktion muß in Apostrophs eingeschlossen sein. Wählen
ein etwas komplizierteres Beispiel und schalten wir noch das Gitter ein:
fplot('sin(x)+exp(-x)',[0
12])
grid
on
Für die Visualisierung von Matrizen als 3-dimensionale Daten definieren wir uns einen Wertebereich mit der meshgrid-Funktion:
Jetzt kann x bzw. y in einer Formel wie eine normale Variable verwendet werden. Z.B. der Eierkarton
Alls Sammlung von 2-D Kurven
Oder als Kontur-Plot
Oder als Kombination von Kontur- und Flächenplot
surfc([-3:1/8:3],[-3:1/8:3],z)
Es gibt viele weitere Plotfunktionen und –Optionen, sehen
Sie sich die entsprechenden Hilfen z.B. zu
plot3,
contour3, pcolor, mesh, surfl, image, movie usw. an