Sie sind auf Seite 1von 28

Eine Einfu

hrung in Matlab

nter Gramlich
Prof. Dr. Gu
Fachhochschule Ulm
Fachbereich Grundlagen
http://www.rz.fh-ulm.de/gramlich
Ulm, 17. Marz 2003

Inhaltsverzeichnis
1

Matlab

Starten und beenden


2.1 Das help-Kommando . . .
2.2 Demos . . . . . . . . . . . .
2.3 Das lookfor-Kommando .

Matlab zum einfachen Rechnen

Lange Eingabezeilen

16 Logische Operatoren und logische


Funktionen
13
3
16.1 Logische Operatoren . . . .
13
16.2 Logische Funktionen . . . .
13
3
4 17 Steuerstrukturen
13
4
17.1 for-Schleife . . . . . . . . .
14
4
17.2 while-Schleife . . . . . . . .
14
17.3 if-Anweisung . . . . . . . .
14
5
17.4 switch-Anweisung . . . . .
14

Matlab unterbrechen

5 18 m-Files
18.1 Script-Files . . . . . . . . .
5
18.2 Function-Files . . . . . . . .

15
15
16

Zahlen und Formate

5 19 Handle Graphics

17

Variablen und Konstanten

6 20 Graphical User Interface (GUI)

17

Mathematische Funktionen

6 21 Die MathWorks WWW-Seite

17

Eine Sitzung aufzeichnen

10 Visualisieren in Matlab
10.1 2D-Grafik . . . . . . . . . .
10.2 3D-Grafik . . . . . . . . . .

6 22 Ubungsaufgaben
mit (teilweisen)
Losungen
17
7
7
8

11 Matrizen

12 Matrizenoperationen

10

13 Lineare Gleichungssysteme
13.1 Quadratische Systeme . . .

13.2 Uberbestimmte
Systeme . .
13.3 Unterbestimmte Systeme .

11
11
11
12

14 Zeichen und Zeichenketten

12

15 Vergleichsoperatoren,
funktionen

12

Vergleichs-

1 Matlab

riablen auf dem Bildschirm ausgegeben.

Die drei Hauptkomponenten von Matlab Ein Semikolon am Ende des Kommandos
unterbindet die Ausgabe.
sind:
Berechnung
Visualisierung
Programmierung

Matlab kennt die runden ()und die


eckigen Klammern []; diese haben verschiedene Bedeutung.

Berechnung. Matlab verf


ugt u
ber eine
numerische qualitativ hochwertige Programmsammlung. Dem Benutzer bleibt es
dadurch erspart, Standardalgorithmen neu
programmieren zu m
ussen. Er kann auf
grundlegende gut ausgetestete Programme
zur
uckgreifen und darauf aufbauend eigene
Algorithmen realisieren.
Visualisierung. Matlab verf
ugt u
ber
moderne Visualisierungsmoglichkeiten. Dadurch ist der Benutzer in der Lage, Daten
auf die verschiedenste Weise darzustellen.
Programmierung. Matlab verf
ugt u
ber
eine eigene hohere Programmiersprache.
Dadurch stellt Matlab ein offenes System dar. Der Benutzer hat somit die
Moglichkeit, die Funktionalitat von Matlab durch eigene Programme beliebig zu
erweitern. Dies kann dadurch geschehen,
dass er Matlab-Programme schreibt sogenannte m-Files oder C/C++ bzw.
Fortran-Codes einbindet.

Wir geben hier nur eine kleine Einf


uhrung
in die Machtigkeit von Matlab. F
ur eine
ausf
uhrlichere Darstellung bez
uglich Matlab und Mathematik (numerisch und symbolisch) verweise ich Sie auf unser Buch
Numerische Mathematik mit Matlab
G. Gramlich und W. Werner
dpunkt.verlag, 2000

2 Starten und beenden


Bei vielen kommandoorientierten Rechnersystemen wird Matlab durch das Kommando matlab gestartet. Oder bei grafischen Oberflachen klickt man nach dem
Start auf ein entsprechendes Matlab-Icon.
Bei manchen Installationen ist es auch
moglich, dass Sie Matlab aus einem Men
u
heraus aufrufen konnen. In jedem Fall sollten Sie den Matlab-Prompt >> sehen
(bzw. EDU>>. Mit dem Kommando quit
verlassen Sie Matlab. Weitere Hinweise
finden Sie in den Matlab-Handb
uchern.
Gegebenenfalls m
ussen Sie Ihren Systemmanager nach lokalen Installationseigenschaften befragen.

Wenn Sie nun beginnen mit Matlab zu


arbeiten, so sollten Sie stets folgendes beachten.
Es wird zwischen Klein- und Grobuchstaben unterschieden.
Geben Sie den Namen einer Variablen
ein, so wird der aktuelle Wert der Va-

2.1 Das help-Kommando

>> help inverse

Das help-Kommando ist eine einfache


folgende:
Moglichkeit, Hilfe u
ber eine MatlabFunktion im Kommandofenster zu erhalten. Hierzu gibt man help und den Funkti- inverse.m not found.
onsnamen, das Kommando oder das SymAber der Aufruf
bol ein.
Das folgende Beispiel zeigt, wie man sich
Informationen u
ber die eingebaute Mat- >> lookfor inverse
lab-Funktion sqrt verschafft.
liefert in Abhangigkeit der installierten
Toolboxen folgendes:

>> help sqrt


SQRT
Square root.
SQRT(X) is the square ...

INVHILB Inverse Hilbert matrix.


IPERMUTE Inverse permute array dimensions.
ACOS
Inverse cosine.
ACOSH Inverse hyperbolic cosine.
ACOT
Inverse cotangent.
ACOTH Inverse hyperbolic cotangent.
ACSC
Inverse cosecant.
ACSCH Inverse hyperbolic cosecant.
ASEC
Inverse secant.
ASECH Inverse hyperbolic secant.
ASIN
Inverse sine.
ASINH Inverse hyperbolic sine.
ATAN
Inverse tangent.
ATAN2 Four quadrant inverse tangent.
ATANH Inverse hyperbolic tangent.
ERFCINV Inverse complementary error function.
ERFINV Inverse error function.
INV
Matrix inverse.
PINV
Pseudoinverse.
IFFT Inverse discrete Fourier transform.
usw...

2.2 Demos
Durch den Aufruf
>> demo
erhalten wird das Hilfe-Fenster geoffnet
und Sie konnen sich Demonstrationen u
ber
Matlab und seine Toolboxen anschauen.
Weitere Info erhalten Sie mit help demo
oder help demos.

2.3 Das lookfor-Kommando


Basierend auf einem Schl
usselwort konnen
Sie mit dem lookfor-Kommando nach
Funktionen suchen. Dabei wird die erste Zeile des help-Textes jeder MatlabFunktion zur
uckgegeben, die das entsprechende Schl
usselwort enthalt. Zum Beispiel
gibt es in Matlab keine Funktion mit dem
Namen inverse. Somit ist die Antwort auf

Will man, da alle help-Zeilen durchsucht


werden, so mu man im Aufruf die Option
-all verwenden:
>> lookfor inverse -all

6 Zahlen und Formate

3 Matlab zum einfachen


Rechnen

Matlab verarbeitet Zahlen in der u


blichen
Dezimalschreibweise,
wobei
wahlweise
ein
Zusammen mit den Klammern () sind + Dezimalpunkt
und
ein
positives
oder
nega* / und ^ die grundlegenden Rechenoperatives Vorzeichen verwendet werden konnen.
tionen.
In der wissenschaftlichen Notation bezeich>> 3+4/5*6
net der Buchstabe e eine Skalierung um
ans =
Zehnerpotenzen. Zulassige Zahlen sind zum
7.8000
Beispiel:
Wie wird hier gerechnet: So 3+4/(5*6)
oder so 3+(4/5)*6? Die Antwort geben die
Vorrang-Regeln:
1.
2.
3.
4.

4
101
0.0001
9.84757 1.5e-12 8.997
3i
-3.4j
4e3i

Groen in Klammern (),


Potenzen ^,
* / von links nach rechts,
+ - von links nach rechts.

Alle Zahlen werden intern im doubleFormat (Langformat) gema der Spezifikation durch die Gleitpunktnorm der Ieee abgespeichert. Matlabs ZahlenausgaFolglich gilt 3 + 4/5 6 = 3 + (4/5) 6 = be folgt mehreren Regeln. Ist das Ergeb3 + (0.8 6) = 3 + 4.8 = 7.8.
nis ganzzahlig, so wird eine ganze Zahl
ausgegeben. Wenn das Ergebnis eine reelle
Zahl ist, dann gibt Matlab das Resultat
4 Lange Eingabezeilen
standardmaig auf 4 Dezimalen gerundet
aus. Ist das Matrixelement groer als 103
Ist Ihre Eingabezeile lang, so konnen Sie
oder kleiner als 103 , so wird es in expodiese mit drei Punkten beenden ... und in
nentieller Form auf dem Bildschirm dargeder nachste Zeile fortfahren.
stellt. Sollen Zahlen in einem anderen Format ausgegeben werden, so hilft das Mat>> s = 1+1/2+1/3+1/4+1/5+...
lab-Kommando format. Die Tabelle 1 gibt
1/6+1/7+1/8+1/9+1/10
mogliche numerische Zahlenformate an.
s =
2.9290
Kommando
format short
format long
format bank

5 Matlab unterbrechen

Beispiel: pi
3.1416
3.14159265358979
3.14

Tabelle 1: Zahlenausgabe in Matlab

Mit ctrl-c konnen Sie Matlab jederzeit


unterbrechen.

7 Variablen und Konstanten

8 Mathematische Funktionen

Ein Variablenamen muss mit einem Buchstaben beginnen und darf aus maximal 31
Buchstaben, Zahlen und Untersrichen bestehen. Ist ein Name lange, so sind nur die
ersten 31 Stellen signifikant. Umlaute sind
nicht erlaubt! Erlaubt sind zum Beispiel

Matlab verf
ugt u
ber viele mathematische
Funktionen. Trigonometrische Funktionen
sind zum Beispiel sin, cos oder tan. Ihre Arumente m
ussen in Radian angegeben
werden. Will man zum Beispiel die Koordinaten (x, y) des Punktes auf dem Kreis
um den Ursprung mit Radius 3 und Winkel 30 = /6 berechnen, so ist folgendes
zu tun

MeineVariable Anna x1 X3
z23c1 My_Var

>> x = 3*cos(pi/6), y = 3*sin(pi/6)


x =
2.5981
y =
1.5000

Nicht erlaubt sind


Meine-Variable 2Var $2 &x

Dar
uber hinaus gibt es vordefinierte Va- Andere Funktionen sind zum Beispiel sqrt,
riablen. Die Tabelle 2 zeigt ein paar. exp oder log.
Achtung! Sie konnen diese spezielle Va>> sqrt(4), exp(4), log(x^2+1)
ans =
Spezielle Variable
Bedeutung
2
ans
Resultat (Default)
ans =
computer
Identifiziert
54.5982
eps
Maschinengenauigkeit
ans =
i
Imaginare Einheit
2.8332
Inf
Infinity
j
Imaginare Einheit

Ein komplette Ubersicht


u
ber die grundNaN
Not-a-Number
legenden und speziellen mathematischen
pi
Kreiszahl 3.14
Funktionen von Matlab findet man mit
Hilfe der Kommandos help elfun und
Tabelle 2: Spezielle Variablen
help specfun.
riablen u
berschreiben; vermeiden Sie dies
aber, wenn immer moglich.

9 Eine Sitzung aufzeichnen

Weitere Infos unter help elmat bzw. help


lang.
Das Kommando

Zeitpunkt in min
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0

>> diary MeineSitzung


sorgt daf
ur, dass der nachfolgende
Bildschirmtext komplett in der Datei
MeineSitzung aufgezeichnet wird. Die
Aufzeichung konnen Sie anhalten, wenn
Sie diary off eingeben. MeineSitzung ist
nur eine Beispieldatei; sie konnen selbstverstandlich jeden zulassigen Dateinamen
angeben.

Temperatur in 0 C
62
55
48
46
42
39
37
36
35

Tabelle 3: Abk
uhlung einer Fl
ussigkeit

10 Visualisieren in Matlab
>> plot(x,y)
Matlab verf
ugt u
ber moderne und
machtige
Visualisierungsmoglichkeiten.
Dies ist einer der Gr
unde f
ur den Erfolg
von Matlab. Das Visualisieren von Daten
ist typisch im praktischen Einsatz von
Matlab, wahrend das Zeichnen von
explizit bekannten Funktionen sehr von
Nutzen in der Lehre ist.

erzeugt ein Grafikfenster und zeichnet die


Elemente von x gegen die Elemente von y
und verbindet diese Punkte geradlinig. Die
Abbildung 1 zeigt das Ergebnis. Wir zeich65

60

55

10.1 2D-Grafik
50

Ein einfaches Beispiel soll die erste Situation erlautern. Hierzu nehmen wir an,
dass die Messung des zeitlichen Verlaufs
der Abk
uhlung einer Fl
ussigkeit die Werte
aus der Tabelle 3 ergab. Wir wollen dieses
Meergebnis nun grafisch darstellen. Hierzu speichern wir die Zeitpunkte im Vektor
x und die Temperaturwerte in y, also

45

40

35
0

0.5

1.5

2.5

3.5

Abbildung 1: Abk
uhlung einer Fl
ussigkeit
nen nun den Graph der explizit gegebenen
Funktion f (x) = sin(x) auf dem Intervall
[0, 2]. Dazu m
ussen drei Dinge getan werden:

>> x=[0 0.5 1 1.5 2 2.5 3 3.5 4];


>> y=[62 55 48 46 42 39 37 36 35];

1. Einen Vektor x erzeugen, der das Inter-

Der Befehl

vall [0, 2] diskretisiert:

Die Sinusfunktion im Intervall [0,2]


1
0.8

0 = x1 < x2 < < xn = 2

0.6
0.4

2. Die Funktion mu an jedem Diskretisierungspunkt ausgewertet werden:


yk = f (xk )

0.2
0
0.2

k=1:n

0.4
0.6

3. Ein Polygonzug mu gezeichnet werden, der die Punkte (x1 |y1 ), . . . , (xn |yn )
verbindet.

0.8
1
0

Das folgende Script zeigt die Realisierung:


>>
>>
>>
>>

Abbildung 2: Ein einfacher Plot

n = 20;
x = linspace(0,2*pi,n);
y = sin(x);
plot(x,y)

Funktionswerte auf einem zweidimensionalen Gitter in der x, y-Ebene auswerten. Das


Gitter kann mit der Funktion meshgrid
erzeugt werden; anschlieend kann man
den Graph mit mesh, surf usw. zeichnen.
Als Beispiel soll der Graph der Funktion
2
2
f (x, y) = xye2(x +y ) u
ber dem Bereich
[2, 2] [2, 2] gezeichnet werden.

Hierzu haben wir das Intervall [0, 2] in


20 aquidistante Punkte eingeteilt und die
Werte dem Vektor x zugeordnet. Die Sinusfunktion ist eine eingebaute MatlabFunktion, die Vektoren als Argumente verarbeiten kann. Dadurch wird der Vektor y
erzeugt. Mit grid zeichnen wir noch ein
Gitter und geben mit title der Abbildung

noch eine Uberschrift.

>> [X,Y] = meshgrid(-2:0.1:2,


-2:0.1:2);
>> f = -X.*Y.*exp(-2*(X.^2+Y.^2));
>> xlabel(x), ylabel(y),
zlabel(f(x,y)), grid

>> grid
>> title(Die Sinusfunktion im
Intervall [0,2\pi])

Die Abbildung 3 zeigt das Ergebnis.


Die Funktionen ezplot und ezmesh erlauben es, explizit gegebene Funktionen einfacher zu zeichnen. Weitere Grafikfunktionen
findet man in der Tabelle 4

Die Abbildung 2 zeigt das Ergebnis.

10.2 3D-Grafik

Mehr Informationen u
ber VisualisieWill man den Graph eines Funktionsterms rungsmoglichkeiten findet man mit
f (x, y) mit den beiden unabhangigen Va- help graph2d, help graph3d und help
riablen x, y zeichnen, so muss man die specgraph.

11 Matrizen
Ein rechteckiges Zahlenschema mit m Zeilen und n Spalten heit (m, n)-Matrix. Es
ist u
blich, eine Matrix in eckige oder runde
KLammern zu setzen; wir wahlen eckige.
Ist m = 2 und n = 3, so liegt eine (2, 3)Matrix vor, zum Beispiel



1
2 2
A=
.
7 3

0.1

f(x,y)

0.05
0
0.05
0.1
2
2

1
1

1
y

Abbildung 3: f (x, y) = xye2(x


(x, y) [2, 2]2

Name
loglog
semilogx
semilogy
polar
hist
bar
stem

Die Matrix A konnen wir nun Zeile f


ur Zeile wie folgt in Matlab eingeben

1
2

2 +y 2 )

f
ur
>> A = [1 sqrt(2) -2; 7 -3 pi]
A =
1.0000
1.4142
-2.0000
7.0000
-3.0000
3.1416
Die Zeilen werden durch ein Semikolon und
die Spalten durch ein Leerzeichen getrennt.
Spalten konnen auch durch ein Komma
getrennt werden. Besteht eine Matrix nur
aus einer Zeile, so liegt eine Zeilenmatrix
bzw. ein Zeilenvektor vor. Analog spricht
man von einer Spaltenmatrix bzw. von einem Spaltenvektor, wenn die Matrix nur eine Spalten hat. Eine Zeilenmatrix hat die
Groe (1, n) und eine Spaltenmatrix (m, 1).
Mit der Funktion size konnen Sie stets die
Groe einer Matrix bestimmen.

Beschreibung
Logarithmisches KO-System
x-Achse logarithmisch
y-Achse logarithmisch
polare Darstellung
Histogramm
Balkendiagramm
Punkte mit Linien

>> size(A)
ans =
2
3

Tabelle 4: Weitere Grafikfunktionen

Macht man bei einer Matrix A aus den


Zeilen Spalten und aus den Spalten Zeile,

so entsteht die transponierte Matrix AT . >> eye(3)


In Matlab erreicht man dies mit dem - ans =
Operator.
1
0
0
0
1
0
>> A = [1 2 3; 4 5 6], A
0
0
1
A =
1
2
3
Diagonalmatrizen werden mit der Funktion
4
5
6
diag erzeugt.
ans =
>> D = diag([1 2 3])
1
4
D =
2
5
1
0
0
3
6
0
2
0
N
utzliche und haufig verwendete Matrizen
0
0
3
stellt Matlab als eingebaute Funktionen
zur Verf
ugung; man muss nur die Groe Ist A eine (m, n)-Matrix und x ein nangeben. Die Funktion ones erzeugt eine Spaltenvektor, so ist das Matrix-VektorProdukt Ax definiert.
Matrix mit lauter Einsen.
>> ones(2,3)
ans =
1
1
1
1

>> A = [1 -2; 3 2]; x = [3; 1];


>> A*x
ans =
1
11

1
1

Die Nullmatrix wird mit der Funktion


zeros erzeugt.
Die Operatoren + und - konnen eingesetzt
werden, um Matrizen miteinander zu ad>> Z1 = zeros(3,2), Z2 = zeros(size(A))
dieren bzw. zu subtrahieren.
Z1 =
Mit help elmat erhalten Sie viel Infos
0
0
rund um Matrizen; unter help ops sind die
0
0
Operatoren zu finden.
0
0
Z2 =
0
0
0
12 Matrizenoperationen
0
0
0
Eine (n, n)-Matrix heit quadratische Matrix ; dann gen
ugt ein Argument, um zum
Beispiel die (3, 3)-Einheitsmatrix mit der
Funktion eye zu erzeugen.

Beachten Sie im folgenden stets, dass Vektoren und Skalare spezielle Matrizen sind!
Die Tabelle 5 zeigt Matrizenoperationen in
Matlab.

10

Symbol
+
*
^

13 Lineare Gleichungssysteme

Operation
Addition
Subtraktion
Multiplikation
Potenzieren

In vielen Anwendungen muss man lineare


Gleichungen losen. Daher ist es in Matlab besonders einfach, Losungen zu finden.
Hierzu dient der \-Operator (BackslashTabelle 5: Matrizenoperationen in MatOperator).
lab
Wenn Sie zwei Matrizen multiplizieren, so
geht geht das nat
urlich nur dann, wenn die
Mulitplikation definiert ist, das heit die
Matrizen die entsprechenden Groen haben.

13.1 Quadratische Systeme

Ist A eine regulare (quadratische) Matrix,


so gibt es genau eine Losung des linearen
Systems Ax = b und zwar f
ur jede rechte
Seite b. Zum Beispiel ist die Matrix


>> A = [1 2 4; 2 6 0];
1 2
A=
>> B = [4 1 4 3; 0 -1 3 1; 2 7 5 2];
3
2
>> A*B
ans =
regular und daher gibt es f
ur b = (1, 11)
12
27
30
13
genau eine Losung; diese ist x = (3, 1). In
8
-4
26
12
Matlab lost man dies in einem Einzeiler,
nachdem man A und b eingegeben hat.
Analog f
ur die anderen Operationen.
Manchmal ist es notwendig, Matrizen ele- >> A = [1 -2; 3 2];
mentweise zu multiplizieren Hadamard- >> b = [1; 11];
>> x = A\b
Produkt, dann hilt der .*-Operator.
x =
>> C = [1 2; 3 4];
3
>> D = [5 6; 7 8];
1
>> C.*D
Ist die Koeffizientenmatrix A singular, so
ans =
erhalt man eine Fehlermeldung, auch dann
5
12
wenn b im Spaltenraum von A liegt.
21
32
Andere Operatoren, die elementweise ar
13.2 Uberbestimmte
Systeme
beiten, sind ./ (rechte Division), .\ (rechte
Division) und (Potenzieren).
Gibt es mehr Gleichungen als Unbekannte, so nennt man Ax = b u
Weitere Infos mit help ops.
berbestimmt.

11

Das System Ax = b hat in der Regel keine Losung, aber das Ersatzproblem
Ax b (die lineare Ausgleichsaufgabe) ist
stets losbar. Entweder hat das Ersatzproblem genau eine oder aber unendlich viele
Losungen, je nachdem ob die Spalten von
A lineare unabhangig sind oder nicht. Im
Fall, dass es unendlich viele Losungen gibt
erhalt man durch A\b eine Basisl
osung.

Die Variable s ist eine Matrix (Array, Feld)


der Groe (1, 25) vom Typ char. Mit dieser Variablen konnen Sie nun mit allen erlaubten Feldoperationen manipulieren. Sie
konnen zum Beispiel Zeichenketten zusammenf
ugen oder trennen. Mit den Funktionen str2num oder num2str konnen Sie Zeichen in Zahlen oder umgekehrt konvertieren.

13.3 Unterbestimmte Systeme

F
ur weitere Informationen siehe help
strfun.

Ein lineares System Ax = b heit unterbestimmt, wenn weniger Gleichungen als Unbekannte vorliegen; in der Regel hat Ax =
b dann unendlich viele Losungen. In diesem Fall wird durch A\b die Losung kleinster Lange berechnet, das heit von allen
Losungen x wird diejenige ermittelt, wo die
Lange von x am kleinsten ist. Hat das System Ax = b keine Losung, so wird eine
Basislosung des Ersatzproblems Ax b
berechnet.
Weitere
Informationen
backslash.

siehe

help

14 Zeichen und Zeichenketten


Auer dem double-Datentyp (Klasse)
kennt Matlab auch noch andere, zum Beispiel Zeichen bzw. Zeichenketten (char).
Zeichenketten werden durch Hochkommata begrenzt
>> s = Ich bin eine Zeichenkette
s =
Ich bin eine Zeichenkette

15 Vergleichsoperatoren,
Vergleichsfunktionen
Vergleichsoperatoren und Vergleichsfunktionen dienen dazu, zwei Matrizen elementweise hinsichtlich einer bestimmten Eigenschaft zu vergleichen. In Abhangigkeit davon, ob diese Eigenschaft besteht oder
nicht, geben sie dann einen entsprechenden Wahrheitswert zur
uck, der in Bedingungen f
ur Schleifen oder Verzweigungen
weiterverwendet werden kann. In Matlab
gibt es wie auch in C/C++, aber anders
als etwa in Pascal keinen expliziten Datentyp, der die Wahrheitswerte wahr und
falsch speichern kann. Statt dessen wird
ein numerischer Wert ungleich 0 als wahr
und der Wert 0 als falsch betrachtet. Vergleichsoperatoren haben, hinter den arithmetischen, vor den logischen Operatoren,
die zweithochste Prioritat bei der Abarbeitung von Ausdr
ucken.

12

16 Logische Operatoren und


logische Funktionen

16.2 Logische Funktionen

Logische Operatoren existieren im Prinzip in allen allgemein verwendbaren Programmiersprachen. Sie dienen dazu, Wahrheitswerte miteinander zu verkn
upfen. In
den meisten Sprachen haben sie Namen
wie and, or und not und sind damit
Schl
usselworter f
ur den Compiler. In Matlab wie auch in C/C++ ist dies nicht
der Fall; die logischen Operatoren sind hier
aus Sonderzeichen aufgebaut.

Verkn
upft man zwei Matrizen mit einem
exklusiven oder, so ist die entsprechende
Ergebniskomponente 1 (wahr), wenn eine der beiden Komponenten von Null verschieden ist. Andererseits ist die Ergebniskomponente 0 (falsch), wenn beide Komponenten 0 oder beide ungleich 0 sind.
>> x = [1 0 2 3 0 4];
>> y = [5 6 7 0 0 8];
>> xor(x,y)
ans =
0
1
0

16.1 Logische Operatoren

Dar
uber hinaus gibt es zusatzliche Funktionen, die die Existenz spezieller Werte oder
Werden Matrizen mit logischen Operatoren Bedingungen testen und ein logisches Reverkn
upft, so geschieht dies komponenten- sultat zur
uckgeben. Die logische Funktion
weise. Die Tabelle 6 zeigt die logischen Ope- isieee testet Ihren Computer, ob er den
ratoren.
Ieee-Standard erf
ullt.
Logische Operatoren
&
|
~

Beschreibung
logisches und
logisches oder
logisches nicht

Tabelle 6: Logische Operatoren

>> isieee
ans =
1
Mein Rechner unterst
utzt diesen Standard und deswegen wird 1 (wahr)
zur
uckgegeben.

Verkn
upft man zwei Matrizen mit einem Weitere Informationen u
ber logische Opelogischen und, so ist die entsprechende ratoren und Funktionen findet man mit
Ergebniskomponente 1, wenn die beiden help ops.
Komponenten von Null verschieden sind.
>> x = [1 0 2 3 0 4];
>> y = [5 6 7 0 0 8];
>> x & y
ans =
1
0
1

17 Steuerstrukturen

Programmiersprachen und programmierbare Taschenrechner erlauben es, den Ab1 lauf eines Programms zu steuern. Man

13

spricht von Steuerstruktur. Matlab bietet Summe =


5050
vier Moglichkeiten, den sequentiellen Ablauf durch Verzweigungen und Schleifen zu
andern. Dies sind:
Der nachfolgende Matlab-Code berechnet
die ersten sieben Vektoren Au mit Start for-Schleifen
vektor u = (1, 0) und der Markov-Matrix
while-Schleifen


Verzweigungen mit if
0.8 0.3
A=
.
Verzweigungen mit switch
0.2 0.7

17.1 for-Schleife

Anschlieend werden die Vektoren gezeichnet.

Das folgende Beispiel erzeugt in einer


for-Schleife die ersten 20 Fibonacci- u = [1;0]; A = [0.8 0.3; 0.2 0.7];
x = u; k = 0:1:7;
Folgenglieder.
while length(x) <= 7
u = A*u;
>> f(1) = 0; f(2) = 1;
x = [x u];
>> for i=3:20
end
f(i) = f(i-1)+f(i-2);
plot(k,x)
end
Der Zeilenvektor f beinhaltet die Zahlenwerte. Bekannterweise nahern sich die Quo- 17.3 if-Anweisung
tienten zweier benachbarter
Fibonacci
Im folgenden Beispiel wird die AnweiZahlen der Zahl ( 51)/2. Sie konnen das
sung disp(a ist gerade) nur dann
mit f(1:19)./f(2:20) nachvollziehen.
ausgef
uhrt, wenn a durch 2 teilbar ist.

17.2 while-Schleife

>> if ( rem(a,2) == 0 )
disp(a ist gerade)
In einer while-Schleife berechnen wir die
end
Summe der ersten 100 Zahlen.
>> n = 1; Summe = 0;
>> while n <= 100
Summe = Summe+n;
n = n+1;
end
>> Summe

17.4 switch-Anweisung
Hat im folgenden Beispiel die Variable x
den Wert -1, so wird x ist -1 auf dem
Bildschirm ausgegeben. Entsprechendes geschieht bei den anderen Fallen.

14

switch x
case -1
disp(x ist
case 0
disp(x ist
case 1
disp(x ist
otherwise
disp(x ist
end

Script-File sind global. Auch kann ein


Script-File einen anderen m-File aufrufen.
-1);
0);
1);
ein anderer Wert);

Das folgende Beispiel zeigt ein EigenwertRoulette, welches darauf beruht, abzuzahlen wieviele Eigenwerte einer reellen
Zufallsmatrix reell sind. Ist die Matrix A
reell und von der Ordnung 8, dann gibt es
0,2,4,6 oder 8 reelle Eigenwerte (die Anzahl
mu gerade sein, weil komplexe Eigenwerte
in komplex-konjugierten Paaren auftreten).
Die beiden Zeilen

Weitere Informationen u
ber Steuerstrukturen findet man mit help lang.
A = randn(8);
sum((abs(imag(eig(A))) < 0.0001));

18 m-Files

erzeugen eine zufallig normalverteilte 88Matrix und zahlen, wieviel Eigenwerte reell sind. Dies ist so realisiert, dass gepr
uft
wird, ob der Imaginarteil dem Betrag nach
kleiner als 104 ist. Jeder Aufruf erzeugt
nun eine andere Zufallsmatrix und man
erhalt somit unterschiedliche Ergebnisse.
Um ein Gef
uhl daf
ur zu bekommen, welche der f
unf Moglichkeiten am wahrscheinlichsten ist, kann man folgenden Script
ausf
uhren.

Bisher wurden Anweisungen zeilenweise


eingegeben und von Matlab verarbeitet. Diese interaktive Arbeitsweise ist unzweckm
aig f
ur Algorithmen, die mehrere
Programmzeilen benotigen und wieder verwendet werden sollen. Hierf
ur eignen sich
sogenannte m-Files, die mit einem Editor
erzeugt werden und unter einem Filenamen
mit dem K
urzel .m abgespeichert werden.
Es gibt zwei Arten von m-Files: die Script%-Script-File: EIGENWERTROULETTE
Files und die Function-Files.
n = 1000;
Anzahl = zeros(n,1);
18.1 Script-Files
for k=1:n
A = randn(8);
Ein Script-File ist eine Folge von
Anzahl(k) = sum(abs(imag
gewohnlichen
Matlab-Anweisungen.
(eig(A))) < 0.0001);
Die Anweisungen in einem Script-File wer- end
den ausgef
uhrt, wenn man den File-Namen hist(Anzahl,[0 2 4 6 8]);
ohne das K
urzel angibt. Ist zum Beispiel
der File-Name versuch.m, so gibt man Dieser Script-File erzeugt 1000 Zufallszaheinfach versuch ein. Variablen in einem len und zeichnet ein Histogramm der Ver-

15

teilung der Anzahl der reellen Eigenwerte. grammiersprache Fortran, function in


Die Abbildung 4 zeigt ein mogliches Re- C/C++ und procedure bzw. functisultat. Wollen Sie sehen, wie Ihr Script- on in Pascal. Haben Sie eine Funktion
in Form eines Function-Files geschrieben,
600
so konnen Sie diesen genauso aufrufen, wie
die eingebauten Matlab-Funktionen. F
ur
500
das Erzeugen eines Function-Files sind ver400
schiedene Dinge zu beachten.
Damit ein File ein Function-File ist, mu
er mit dem Schl
usselwort function beginnen, dann folgen die Ausgabeargumente,
der Funktionsname und schlielich die Eingabeargumente. Die Form aller FunctionFiles ist

300

200

100

Abbildung 4: Histogramm zum Script

function [Out_1,...,Out_n] =
Name(In_1,...,In_m)
File den von Ihnen geschriebenen Code abIrgendwelche Anweisungen
arbeitet, so geben Sie echo on ein. Mit
echo off konnen Sie den Vorgang wieder wobei Name der vom Anwender anzuger
uckgangig machen.
bende Funktionsname ist. Es ist moglich,
da keine Ausgabe- oder Eingabeargumente vorhanden sind.
18.2 Function-Files
Wenn Sie intensiver mit Matlab arbeiten, dann werden Sie bald feststellen, da
es nicht f
ur alle ihre W
unsche eingebaute Funktionen oder Kommandos gibt. In
diesem Fall konnen Sie sich aber Ihre eigene Funktion schreiben und damit die
Funktionalitat von Matlab erweitern. Mit
Hilfe von Function-Files konnen Sie den
Matlab-Funktionsvorrat erweitern. Variablen in Function-Files sind lokale Varia
blen. Die Ubergabe
einzelner Variablen erfolgt u
ber eine Parameterliste im Funktionsaufruf. Ein Function-File entspricht der
subroutine bzw. function in der Pro-

Die folgende Funktion ist ein Beispiel f


ur
einen Function-File.
function [V,D,r] = MatrixEig(A)
[m,n] = size(A);
if m==n
[V,D] = eig(A);
r = rank(A);
else
disp(Fehler: Die Matrix muss
quadratisch sein!)
end
Schreiben Sie sich die obigen Anweisungen
in eine Datei mit dem Namen MatrixEig.m

16

und definieren Sie eine Matrix A im Mat- zu generieren. Hierzu steht eine GUIEntwicklungsumgebung zur Verf
ugung, sielab-Workspace. F
uhren Sie
he guide. F
ur weitere Einzelheiten siehe
help uicontrol.
>> [V,D,r] = MatrixEig(A)
aus, dann erhalten Sie in der Matrix V die
Eigenvektoren, in D die Eigenwerte und in 21 Die MathWorks WWW-Seite
r den Rang der Matrix A. V,D,r sind die
ber das
Ausgabe- und A die Eingabeargumente der Die Firma MathWorks kann u
World
Wide
Web
(WWW)
erreicht
werden.
Funktion MatrixEig.
1
Die URL-Adresse lautet:
http://www.mathworks.com

19 Handle Graphics
Das Grafiksystem von Matlab stellt
sogenannte Low-Level-Funktionen zur
Verf
ugung, mit denen alle Aspekte des
Grafiksystems kontrolliert werden konnen.
Damit besteht die Moglichkeit, detaillierte
Grafiken zu generieren. Die Kommandos
set und get erlauben, jedes Grafikobjekt
anzusprechen. Mit help graphics erhal
ten Sie eine komplette Ubersicht
u
ber alle
zur Verf
ugung stehenden Kommandos und
Funktionen.

20 Graphical User Interface


(GUI)

Der Deutsche Web Mirror (Spiegel) ist


http://www.mathworks.de
Von hier aus findet man verschiedene Informationen u
ber Matlab und Simulink
sowie deren Toolboxen. Auerdem findet
man Hinweise u
ber Blocksets, eine Liste
von B
uchern u
ber
Matlab sowie m-Files

von anderen Benutzern. Es empfiehlt sich,


hin und wieder die Homepage aufzusuchen,
da dort die aktuellen Informationen u
ber
Matlab zu finden sind.

22 Ubungsaufgaben
mit
(teilweisen) Losungen

Das Matlab-Grafiksystem verf


ugt auer
der Handle-Graphics u
ber eine weitere ob- 1 (Grafik) Zeichnen Sie den Graph des
jektorientierte Grafikkapazitat: Graphical
Funktionsterms
User Interface (GUI). Damit hat man
die Moglichkeit, Sliders, Buttons, Men
us
f (x) = sin(x2 ) 2 cos(x)
und andere Grafikobjekte zu erzeugen,
um so interaktive Benutzerschnittstellen 1 URL: Uniform Resource Locator.

17

ur 0 t 4.
u
ber dem Intervall (0, 5) mit den Funktio- in der xy-Ebene f
nen plot, fplot und ezplot.
5 (Grafik, 3D) Zeichnen Sie den Graph des
Lo
sung:
Funktionterms
1
x = linspace(0,5);
f (x, y) = cos(x) + y exp(x2 y 2 )
f = sin(x.^2)-2*cos(x);
5
plot(x,f)
mit den Funktionen mesh und ezmesh u
ber
fplot(sin(x^2)-2*cos(x),[0,5])
dem Quadrat 3 x 3, 3 y 3.
ezplot(sin(x^2)-2*cos(x),[0,5])
L
osung:
2 (Grafik) Erzeugen Sie mit einem einzigen
plot-Befehl die Graphen der Funktionsterme sin(kx) u
ur
ber dem Intervall [0, 2] f
k = 1 : 5.
3 (Grafik, st
uckweise definierte Funktion)
Zeichnen Sie den Graph der Funktion
(
1 |x| 0.5
rect(x) =
0 sonst

[X,Y] = meshgrid(-3:0.1:3);
Z = 1/5*cos(X)+Y.*exp(-X.^2-Y.^2);
mesh(X,Y,Z)
oder als Einzeiler mit ezmesh.
ezmesh(1/5*cos(x)+y*exp(-x^2-y^2),
[-3,3])
6 (Grafik, 3D) Gegeben sei der Funktionterm

u
ber dem Intervall [3, 3].
f (x, y) = x2 8x + y 2 6y 0.1xy + 50.
L
osung: Wir definieren zunachst die
Funktion rect in einem Function-File und Benutzen Sie die mesh-Funktion, um das
zeichnen dann mit plot den Graph der Minimum und den minimalen Wert der
Funktion f im Bereich 0 < x < 5, 0 <
Funktion.
y < 5 zu schatzen.
function y = rect(x)
7 (Variablennamen) Wieviel verschiedene
n = length(x);
Matlab Variablenamen stehen in folgeny = zeros(n,1);
der Zeile?
y = (x<0.5)-(x<-0.5);
anna ANNA anNa aNna_anna
Die folgenden Befehle zeichnen den Graph.
Lo
sung: Vier verschiedene Variablennax = linspace(-3,3,1000);
men.
y = rect(x);
8 (Rundungsfunktionen) In Matlab finplot(x,y)
det man folgende eingebaute Funktionen:
axis([-3 3 -0.5 1.5])
4 (Grafik, Kurve) Zeichnen Sie die Kurve

ceil(x) Rundet x zur nachsten ganzen


Zahl auf.

x = sin(t) + t

fix(x) Wahlt von x den ganzzahligen Anteil.

y = 1 cos(t)

18

floor(x) Rundet x zur nachsten ganzen 10 (Function-File, St


uckweise definierte
Zahl ab.
Funktion) Schreiben Sie jeweils einen
round(x) Rundet x zur nachsten ganzen Function-File, um folgende Funktionen zu
berechnen:
Zahl.
(
1 |x| 0.5
Berechnen Sie die folgenden Ausdr
ucke per (a) rect(x) =
0 sonst
Hand und u
ufen Sie Ihre Ergebnisse
berpr
(
0 x<0
mit Matlab.
(b) step(x) =
1 sonst
(a) round(-2.6)
(
0 x<0
(b) fix(-2.6)
(c) ramp(x) =
x sonst
(c) floor(-2.6)

(d) ceil(-2.6)

x<0
0
x
(e) floor(ceil(10.8))
(d) g(x) = sin( 2 ) 0 x 1

1
x>1
Zeichnen Sie die Funktionen im Intervall
[3, 3]!
Zeichnen Sie die Funktionen u
ber dem In9 (Function-File, St
uckweise definierte tervall [2, 2]!
Funktion) Schreiben Sie einen Function- 11 (Function-File,
Funktionsgraph)
File, um folgende Funktion zu berechnen: Schreiben Sie einen Function-File, um die
1
Funktion f (t) = t 3 t R zu berechnen.

x x < 0
Benutzen Sie diesen, um die Funktion f
f (x) = x2 0 x < 2
im Intervall [0, 1] zu zeichnen.

L
osung: Mit dem Function-File
4
x2
Testen Sie Ihre Funktion f
ur die Werte x =
2, 1.5, 2 und 6. Zeichnen Sie die Funktion
f mit fplot u
ber dem Intervall [3, 3]!
L
osung: Der folgende Function-File definiert die Funktion f .

function y = f(t)
y = t.^(1/3);

kann
man
den
Graph
mit
fplot(f,[0,1]) zeichnen.
12 (Funktionsgraph) Zeichnen Sie den
Funktionsterm f (x) = 5 im Intervall [0, 2].
function y = f(x)
Bemerkung: Zunachst empfindet man diese
y1 = x.*(x<0);

Ubung
schwieriger als sie tatsachlich ist. In
y2 = x.^2.*( (x<2)-(x<0) );
Matlab ist es zwar leichter, eine nicht kony3 = 4*(x>=2);
stante Funktion zu zeichnen als eine Kony = y1+y2+y3;
stante. Es gibt aber eine Reihe von Tricks,
Der Aufruf fplot(f,[-3,3]) zeichnet dies zu tun. Hilfreich sind hierbei die Matden Graph im Intervall [3, 3].
lab-Funktionen size und ones.

19

13 (Matrizenoperationen) Es seien zwei und


Vektoren a und b wie folgt definiert:
a = [2,4,6]

b = [1,2,3]

1
3
5 .
B = 1
2 2

F
uhren Sie die folgenden Matlab- 16 (Matrizen, Matrizenoperationen) Es
Operationen durch. Welche sind definiert seien A, B, C und D nachfolgend definierund welche nicht? Erklaren Sie! Was sind te Matrizen.
die Resultate?

1 3
1
2
a + b
a + b
A = 2 4 B = 4 2
a + b
a + b
3 1
7 1
a - b
a - b


a - b
a - b
1 5
C=
a * b
a * b
5 3
a * b
a * b
und

a \ b
a \ b
4
3 2
a \ b
a \ b
0
5 .
D= 1
a .* b
a .* b
2 1
6
a .* b
a .* b
Berechnen Sie zunachst per Hand folgende
a .\ b
a .\ b
Matrizenalgebra. Geben Sie die Matrizen
a .\ b
a .\ b
dann in Matlab ein und vergleichen Sie
14 (Matrizen) Erzeugen Sie mit der Mat- die jeweiligen Resultate.
lab-Funktion rand eine 55-Zufallsmatrix
(a) A + B
A. Welches sind die Werte der folgenden

Ausdr
ucke? Uberlegen
Sie sich die Resul- (b) B + C
tate, bevor Sie die Rechnung am Computer (c) DA
durchf
uhren.
(d) 2A 3B
(e) AT
A(2,:)
A(:,1)
(f) C 2
A(:,5)
A(1,1:2:5)
A([1,5])

A(4:-1:1,5:-1:1)

L
osung:

15 (Matrizen, direktes Produkt) Berech- (a) >> A+B


ans =
nen Sie in Matlab das direkte Produkt
0
5
von

6
2
1
2
3
10
0

1 2
A= 3
(b) B + C ist nicht definiert.
5 1
0

20

(c) >> D*A


ans =
4
22
16
8
18
8
(d) >> 2*A-3*B
ans =
5
0
-8
14
-15
5
(e) >> A
ans =
1
2
3
4
(f) >> C^2
ans =
-24
20
-20
-16

18 (Matrizen, Diagonalmatrizen) Erzeugen Sie eine Diagonalmatrix mit 1, 2, 3, 4


und 5 auf der Diagonalen!
L
osung:
>> diag([1
ans =
1
0
0
0
0
3
1

17 (Matrizen, Matrizenoperationen) Die


nachfolgenden Regeln der Matrizenalgebra
sehen so aus wie die der reellen Zahlen.
Trotzdem sind einige davon falsch. Benutzen Sie Matlab, um die falschen herauszufinden, und geben Sie f
ur jede falsche Regel
ein Gegenbeispiel.
(a) A + B = B + A
(b) AB = BA
(c) Falls AB = O ist, dann ist A = O
oder B = O.
(d) Falls A2 = O ist, dann ist A = O.
(e) (A + B)2 = A2 + 2AB + B 2
(f) (A B)(A + B) = A2 B 2
(g) A(B + C) = AB + AC
(h) (A + B)C = CA + CB
(i) (AB)2 = A2 B 2

2 3 4 5])
0
2
0
0
0

0
0
3
0
0

0
0
0
4
0

0
0
0
0
5

19 (Matrizen, Dreiecksmatrizen) Erzeugen


Sie eine 66 obere (untere) Dreiecksmatrix
mit Zufallszahlen zwischen 0 und 1!
20 (Matrizen, symmetrische Matrizen) Erzeugen Sie eine 10 10 symmetrische Matrix S mit Zufallswerten zwischen 0 und 8!
21 (Matrizen, Zufallsmatrizen) Die Matlab-Funktion rand(n) erzeugt eine n nMatrix, deren Eintrage gleichmaig verteilte Zufallszahlen aus dem Intervall (0, 1)
sind. Schreiben Sie einen Function-File, der
n n-Matrizen erzeugt, deren Eintrage
Zahlen aus {1, 2, 3, 4, 5, 6} sind.
22 (Matrizen,
Matrizenoperationen)
Warum gibt es in Matlab kein .+ Operator?
L
osung: Die Matrizenaddition ist bereits
elementweise definiert.
23 (Matrizen) Wir betrachten die folgende
Matrix A:

5.5
0.4
3.1
9.4
5.5
3.3

4.6 4.3
A = 0.3
.
0.4 4.6
9.0
5.0
5.5
7.7

21

Geben Sie die Ordnung (Groe) dieser Matrix an! Wie kann man in Matlab die
Groe von A bestimmen? Geben Sie alle
Indizes an, deren Matrixelemente 5.5 sind.
L
osung: Die Ordnung der Matrix A ist
(5, 3). Mit der Funktion size kann man die
Ordnung in Matlab bestimmen. Die Indizes sind: 1, 1, 2, 2 und 5, 2.
24 (Matrizen) Gegeben sei die folgende
Matrix A:

5.5
0.4
3.1
9.4
5.5
3.3

4.6 4.3
A = 0.3
.
0.4 4.6
9.0
5.0
5.5
7.7
Was ist A(:,2), A(3,:), A(4:5,2:3)?

Uberpr
ufen Sie Ihr Resultat in Matlab.
L
osung: A(:,2) ist die zweite Spalte
und A(3,:) ist die dritte Zeile von A.
A(4:5,2:3) ist die Untermatrix


4.6 9.0
.
5.5 7.7

26 (Polynomfunktionen) Gegeben seien


die folgenden Polynomfunktionsterme
f1 (x) = x3 3x2 x + 3
f2 (x) = x3 6x2 + 12x 8
f3 (x) = x3 8x2 + 20x 16
f4 (x) = x3 5x2 + 7x 3
f5 (x) = x 2
Zeichnen Sie die Polynome im Intervall
[0, 4]. Benutzen Sie eingebaute MatlabFunktionen, um nachfolgende Polynome
in den Punkten 0 und 1 auswerten zu
konnen.
(a)
(b)
(c)
(d)

f2 (x) 2f4 (x)


3f5 (x) + f2 (x) 2f3 (x)
f1 (x)f3 (x)
f4 (x)/(x 1)

Lo
sung: Das folgende Script lost die Aufgabe.

p1 = [1 -3 -1 3];
p2 = [1 -6 12 -8];
25 (Matrizen, Vektoren) Geben Sie jeweils p3 = [1 -8 20 -16];
den Vektor c an, nachdem Sie die folgenden p4 = [1 -5 7 -3];

Operationen ausgef
uhrt haben. Uberpr
ufen p5 = [0 0 1 -2];
pa = p2-2*p4;
Sie Ihre Ergebnisse in Matlab.
pb = 3*p5+p2-2*p3;
a = [2 -1 5 0];
pc = conv(p1,p3);
b = [3 2 -1 4];
pd = deconv(p4,[1 -1]);
x = linspace(0,4);
(a) c = b+a-3;
ypa = polyval(pa,x);
(b) c = a./b;
ypb = polyval(pb,x);
(c) c = 2*a+a.^b;
ypc = polyval(pc,x);
(d) c = 2.^b+a;
ypd = polyval(pd,x);
(e) c = 2*b/3.*a;
plot(x,ypa,x,ypb,x,ypc,x,ypd)

22

27 (Polynomfunktionen) Bestimmen Sie


die reellen Nullstellen nachfolgender Polynome. Zeichnen Sie diese Polynome dann in
einem geeigneten Intervall, um diese Nullstellen geometrisch u
ufen zu konnen
berpr
(x R).
(a) g1 (x) = x3 5x2 + 2x + 8
(b) g2 (x) = x2 + 4x + 4
(c) g3 (x) = x5 3x4 + 4x3 4x + 4
28 Gegeben seien die Vektoren
x = [0 3 -2 7];
y = [3 -1 5 7];
und die Matrix
A = [1 3 7;2 8 4;6 -1 -2];

>> median(x)
ans =
1.5000
>> cumprod(A)
ans =
1
3
7
2
24
28
12
-24
-56
>> sort(2*x+y)
ans =
1
3
5
>> sort(A)
ans =
1
-1
-2
2
3
4
6
8
7

21

29 Gegeben seien die Variablen a=5.5,


Bestimmen Sie folgende Ausdr
ucke,
b=1.5 und k=-3. Bestimmen Sie die Ergebzunachst mit Bleistift und Papier, danach

nisse der folgenden Ausdr


ucke. Uberpr
ufen
mit Matlab.
Sie Ihre Resultate dann in Matlab.
max(x);
min(A);
(a) a < 10.0
min(x,y);
mean(A);
(b) a+b >= 6.5
median(x);
cumprod(A);
(c) k = 0
sort(2*x+y); sort(A);
(d) b-k > a
L
osung: Es ist
(e)
(a == 3*b)
>> max(x)
(f) -k <= k+6
ans =
(g) a<10 & a>5
7
(h) abs(k)>3 | k<b-a
>> min(A)
ans =
30 Bestimmen Sie die Werte der folgenden
1
-1
-2

Ausdr
ucke. Uberpr
ufen Sie Ihre Ergebnisse
>> min(x,y)
dann in Matlab.
ans =

1 0 4
0
-1
-2
7
B= 0 0 3
>> mean(A)
8 7 0
ans =
3.0000
3.3333
3.0000

23

(a) any(B)
(b) find(B)
(c) all(any(B))
(d) any(all(B))
(e) finite(B(:,3))
(f) any(B(1:2,1:3))
L
osung:
>> any(B)
ans =
1
1
1
>> find(B)
ans =
1
3
6
7
8
>> all(any(B))
ans =
1
>> any(all(B))
ans =
0
>> finite(B(:,3))
ans =
1
1
1
>> any(B(1:2,1:3))
ans =
1
0
1

(b) zwischen -1 und 1.


(c) zwischen -20 und 10.
(d) zwischen und .
Lo
sung: Dies kann wie folgt erreicht werden.
(a)
(b)
(c)
(d)

10*rand(10,1).
-1+2*rand(1,10).
-20+30*rand(1,10).
-pi+2*pi*rand(1,10).

32 (Zufallsmatrizen) Erzeugen Sie tausend


normalverteilte Zufallszahlen
(a) mit Mittelwert 1.0 und Varianz 0.5.
(b) mit Mittelwert -5.5 und Standardabweichung 0.25.
(c) mit Mittelwert -5.5 und Standardabweichung 1.25.
33 (Matrizen) Gegeben seien die folgenden
Matrizen:

0 1 0 3
3 5 0
A= 4
1
2 3 0
und

1
3
B=
4
1

3
6
3
2

5 0
9 12
.
2 1
3 4

Bestimmen Sie die R


uckgabewerte und
u
ufen Sie diese dann in Matlab.
berpr

31 (Zufallsmatrizen) Erzeugen Sie zehn (a) rot(B)


gleichm
aig verteilte Zufallszahlen im je- (b) rot90(A,3)
weils angegebenen Intervall
(c) fliplr(A)
(d) reshape(A,4,3)
(a) zwischen 0 und 10.

24

(e) triu(B)
(f) diag(rot90(B))
34 (Matrizenoperationen) Was ist 00 in
Matlab?
L
osung: Es ist 00 = 1 in Matlab.

25

Stichwortverzeichnis
Symbole
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 5
* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 11
+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 10, 11
- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 10, 11
-all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
.* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
.+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
./ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
.\ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
/.....................................5
[] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 11
\ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

demos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
diag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
diag(rot90(B)) . . . . . . . . . . . . . . . . . . . . 25
diary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
diary off . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
double . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 12
E
echo off . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
echo on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
eps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
exp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
eye . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
ezmesh . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 18
ezplot . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 18
F
Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . 14
find(B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
finite(B(:,3)) . . . . . . . . . . . . . . . . . . . . 24
fix(-2.6) . . . . . . . . . . . . . . . . . . . . . . . . . . 19
fix(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
fliplr(A) . . . . . . . . . . . . . . . . . . . . . . . . . . 24
floor(-2.6) . . . . . . . . . . . . . . . . . . . . . . . . 19
floor(ceil(10.8)) . . . . . . . . . . . . . . . . . 19
floor(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
format bank . . . . . . . . . . . . . . . . . . . . . . . . . 5
format long . . . . . . . . . . . . . . . . . . . . . . . . . 5
format short . . . . . . . . . . . . . . . . . . . . . . . . 5
Fortran . . . . . . . . . . . . . . . . . . . . . . . . . 3, 16
fplot . . . . . . . . . . . . . . . . . . . . . . . . . . . 18, 19
function . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Function-Files. . . . . . . . . . . . . . . . . . . . . . .15

A
all(any(B)) . . . . . . . . . . . . . . . . . . . . . . . . 24
ans. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
any(all(B)) . . . . . . . . . . . . . . . . . . . . . . . . 24
any(B(1:2,1:3)) . . . . . . . . . . . . . . . . . . . 24
any(B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
B
bar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
C
C/C++ . . . . . . . . . . . . . . . . . . 3, 12, 13, 16
ceil(-2.6) . . . . . . . . . . . . . . . . . . . . . . . . . 19
ceil(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
char . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
cos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
D
demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

26

G
get . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Graphical User Interface (GUI) . . . . . 17
grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

M
m-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Markov . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
mesh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8, 18
meshgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

H
Hadamard . . . . . . . . . . . . . . . . . . . . . . . . . 11
help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
help backslash . . . . . . . . . . . . . . . . . . . . 12
help demo . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
help demos . . . . . . . . . . . . . . . . . . . . . . . . . . 4
help elfun . . . . . . . . . . . . . . . . . . . . . . . . . . 6
help elmat. . . . . . . . . . . . . . . . . . . . . . .6, 10
help graph2d . . . . . . . . . . . . . . . . . . . . . . . . 8
help graph3d . . . . . . . . . . . . . . . . . . . . . . . . 8
help graphics . . . . . . . . . . . . . . . . . . . . . 17
help lang . . . . . . . . . . . . . . . . . . . . . . . . 6, 15
help ops . . . . . . . . . . . . . . . . . . . . 10, 11, 13
help specgraph . . . . . . . . . . . . . . . . . . . . . 8
help strfun . . . . . . . . . . . . . . . . . . . . . . . . 12
help uicontrol . . . . . . . . . . . . . . . . . . . . 17
hist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

N
NaN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
num2str . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
O
ones. . . . . . . . . . . . . . . . . . . . . . . . . . . . .10, 19
P
Pascal. . . . . . . . . . . . . . . . . . . . . . . . . .12, 16
pi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 6
plot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
polar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Q
quit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
R
rand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
rand(n) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
reshape(A,4,3) . . . . . . . . . . . . . . . . . . . . 24
rot(B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
rot90(A,3) . . . . . . . . . . . . . . . . . . . . . . . . . 24
round(-2.6) . . . . . . . . . . . . . . . . . . . . . . . . 19
round(x) . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

I
i.....................................6
Ieee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Inf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
isieee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

S
Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Script-Files . . . . . . . . . . . . . . . . . . . . . . . . . 15
semilogx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
semilogy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

J
j.....................................6
L
log. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
loglog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
lookfor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

27

sin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
size . . . . . . . . . . . . . . . . . . . . . . . . . . 9, 19, 22
Spaltenmatrix . . . . . . . . . . . . . . . . . . . . . . . . 9
Spaltenvektor . . . . . . . . . . . . . . . . . . . . . . . . 9
sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 6
stem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Steuerstruktur . . . . . . . . . . . . . . . . . . . . . . 14
str2num . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
surf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
T
tan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
title . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
triu(B) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
V
Verzweigungen . . . . . . . . . . . . . . . . . . . . . . 14
W
while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Z
Zeilenmatrix . . . . . . . . . . . . . . . . . . . . . . . . . 9
Zeilenvektor . . . . . . . . . . . . . . . . . . . . . . . . . . 9
zeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

28