Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Blockkurs:
27.1.-31.1. und 10.2.-14.2.
9:00-12:00 oder 13:00-16:00
Organisation
Projekt:
Zuteilung 1. Woche,
Matlab
Matrix Laboratory
Verwendungszweck: Hauptschlich rechenintensive
Datenverarbeitung mit Gleitkommazahlen
Viele Toolboxen fr Spezialanwendungen:
PDE, Neural Network, Image processing, Financial
toolbox etc. etc.
Symbolisches Rechnen und exakte Arithmetik
mglich (Symbolic Math Toolbox), aber
Mathematica besser geeignet
Ziele
Funktionsweise verstehen
Material
Diese Slides
http://www.math.uzh.ch/?ve_vo_det&key2=1990
zu Hause:
Thinlinc Client
Ablauf
Computer
Sehr stark (!) vereinfachtes Modell:
I/O
Grafikkarte/Monitor
Tastatur/Maus
Arbeitsspeicher
(RAM)
Bus(se)
CPU
Festplatte
Programmiersprachen
Matlab
Matlab starten:
Applications > Science > Matlab
Passwort eingeben
Beachte:
Dateinavigation links
Kommandozeile mitte
Men oben
Matlab
Eingabe von Befehlen:
32 * 3+5
32*(3+5)
sin(3 * pi)
help sin
doc sin
sin
si (+TAB, autocomplete)
(+F1 )
Aufgaben
Ausdrcke
Klammern ()
Arithmetische Operationen
* ,+,-, /, ^
Vergleichsoperationen
==, ~=,<=,>=
Logische Operationen
&, |,~
Kein true/false in Matlab.
False=0, True=1 (bzw. nicht 0)
Operatorprzedenz
Ausdrcke (2)
Numerische Ausdrcke
1
0.23, .23
23e-2 = 23*10^-2
5+4i, 5+4j
Funktionen
funktionsname(parameter1,parameter2,...)
Hufig gebrauchte Funktionen:
sin, cos, tan, sqrt, exp, log, log2,
log10, floor, ceil, round, abs
Variablen
Vordefinierte Variablen
ans
pi
eps
Maschinengenauigkeit
i,j
sqrt(-1)
nan
inf
Aufgaben
(op1,op2) = (-,-)
(op1,op2) = (+,-)
(op1,op2) = (|,&)
(op1,op2) = (&,>=)
Aufgaben
Aufgabe
Welchen Wert hat ans jeweils nach jedem
Befehl?
>>
>>
>>
>>
>>
>>
23;
ans
x =
x^2
x^2
ans
^2;
sqrt(ans);
ans;
ans;
- x ^2;
Skripte
Skripte
Kommentare
Kommentare
help eintest
eintest + F1
fr Windowser
Preferences>Matlab>Keyboard>Shortcuts>
Windows Default Set
Funktionen
Funktionen
Funktionen
Funktionen
Variablenscope
function y=power8(x)
% kein ; erscheint in der Ausgabe
y=x^8
% die nchste Zeile erzeugt keine
% Variable im Workspace
meine_variable =5;
end
Variablenscope (2)
function y=power8(x)
y=x^8;
% die nchste Zeile erzeugt eine
% globale Variable
global globaaal
globaaal=x
end
anonyme Funktionen
anonyme Funktionen
Tips&Tricks
function y=power8(x)
y= % Mehrzeiler
x^8;
disp(x) zeigt den Wert der Variablen/des
Ausdrucks x an (ohne x=, ans=)
return verlsst das Skript oder die Funktion
error('meine Nachricht') gibt dem Nutzer
eine Fehlermeldung aus und beendet die
Funktion oder das Skript
Tips&Tricks
Closures
Aufgaben
Debugger
if
if x == 5
% wird ausgefuehrt, falls x=5
% sonst nicht
y=1;
end
if
if x == 5
% wird ausgefuehrt, falls x=5
y=1;
elseif x==6
z=2;
else
y=3;
end
for
for k=1:10
disp(k^2)
end
for (2)
while
Aufgabe
Variablenscope (3)
Aufgaben
Aufgaben
n=1
1 2
=
2
6
n
Aufgaben
Matrizen
Alles ist eine Matrix (oder Synom ein array), d. h., Zahlen sind
1x1 Matrizen, Vektoren nx1 oder 1xn Matrizen.
Erzeugung mit []:
A=[1 2 3; 4 5 6]
A=[1, 2, 3; 4, 5, 6]
Leerzeichen oder , trennt Spalten und ; Zeilen
Zugriff auf Werte
A(2,3) % 2. Zeile, 3. Spalte (=6)
Werte verndern
A(2,3)=7
Matrizen
Matrizen
5x5 Einheitsmatrix
eye(5)
3x8 Matrix aus 1en
ones(3,8)
4x6 Matrix aus 0en
zeros(4,6)
Zufallsmatrix
rand(5)
randn(3,4)
Magic square
magic(5)
Leere Matrix
[]
Matrizenoperationen
+,-
', .'
.*, ./,.\
Elementweise Multiplikation/Division
.^
Elementweise Potenz
|,&,~
Inverse Matrix
/, \
Matrizenoperationen
Untermatrix:
A3(1:3, 2:4)
A3(1:3, [1 4 3])
A3(1:3, 1:2:6)
A3(1:5)
A3(1, 1:end)
A3(1, 1:end-1)
A3(:,1:3)
A3(:)
Genauer: der Ausdruck
a:b:c
erzeugt einen Vektor (Zeilenmatrix) mit Werten von a bis c, Schrittgrsse b
1:3:10
.1:.2:5
plot(sin(0:.01:2*pi))
Tricks
Hilfreiche Funktionen
Hilfreiche Funktionen 2
linspace(0,2*pi, 100)
for (3)
Generell wird in
for ttt=A
% do something with ttt
end
der Code in der Schleife einmal aufgerufen fr
jedes Element von A (falls eindimensional) oder
fr jede Spalte von A (falls zweidimensional)
Aufgaben
Aufgaben
Aufgaben
Aufgaben
n=1
1 2
=
2
6
n
Aufgaben
A'.'.^A;
Aufgaben
f(x) = exp(i*x/10)
Aufgaben
Aufgabe
plot
plot (2)
Legende:
legend('sin', 'cos')
Titel
title('Mein plot');
Farben und Linien
plot(x,y1,'r*-', x,y2, 'k:')
Achsenbeschriftung
xlabel('das ist x')
ylabel('und das y')
plot (3)
plot (4)
mehr plots
Aufgabe
3D plots
3D Linie
plot3(x,y1,y2)
3D Oberflche
[xx,yy]=meshgrid(x,x);
surf(xx,yy,sin(xx).*cos(yy))
Frage: Was passiert, wenn man * statt .*
schreibt?
mesh(peaks)
contour(peaks)
pcolor(peaks)
Aufgabe
Animation
Animation (2)
Aufgabe
Datentypen
logical
0 oder 1
Gleitkommazahlen
Ganzzahlen (integers)
char
cell
table
struct
function_handle
object, map, graphics
handle, time series etc.
nicht behandelt
Datentypen
Typ berprfen
a= 1==0
class(a)
b=rand(5)
class(b)
Konvertierung mit gleichnamigen Funktionen
a=1.5
b=int8(a)
class(b)
char(1:1000)
Achtung: Kombination verschiedener Typen nur zum Teil erlaubt, und
unerwartete Ergebnisse
c=b*2.7
class(c)
b*single(2.7)
Gleitkommazahlen
s m2
mit
Vorzeichen s=+1 oder -1
52
52
m=1+
x
2
,
x
{0,...
,
2
1}
Mantisse
Exponent e=-1022,..., 1023
Maschinengenauigkeit eps
Gleitkommazahlen
Aufgabe
Char
String-Funktionen
Konversion Zahl<->string
num2str(1.234)
str2double('1.234')
Alternativ:
sprintf('Die Zahl ist %f oder %d.',
1.234, 5)
sprintf('Die Zahl ist %.1f.', 1.234)
sprintf('Die Zahl ist %f. ', [1,2,3,4])
Einen Teil-string ersetzen
strrep('Ein Test', 'Test', 'Toast')
Datum
struct
Cell arrays
Cell arrays
Beliebig viele
Eingabe/Ausgabeargumente
Aufgabe
Mehrdimensionale Arrays
Funktionen fr
mehrdimensionale arrays
Aufgaben
Aufgaben
Daten lesen/speichern
save/load
Bemerkung
Beachte
sin pi
ist ein Fehler. (Wieso?)
Funktioniert disp hallo welt ?
File I/O
File I/O
File I/O
File I/O
Datenanalyse
Aufgaben
Lineare
Gleichungssysteme
Lineare
Gleichungssysteme
Aufgabe
Komplexitt
Komplexitt
Peformance
Aufgaben
Performancekiller
Performancekiller
Schleifen vermeiden
Aufgabe
Ausdrcke vereinfachen
a=sin(x)^2+cos(x)^2
simplify(a)
Werte ersetzen
a=subs(sin(x),x,3*pi/2)
Ausmultiplizieren
expand((1+x)^10)
Zerlegung in Faktoren
factor(x^10-1)
Matrizen
A=sym('A',[2,2])
inv(A)
eig(A)
Plotten
ezplot(sin(x),[0,pi])
syms y
ezsurf(sin(x)*cos(y),[0,pi,0,2*pi])
Auch benutzbar fr anonyme Funktionen
ezplot(@(s) sin(s),[0,2*pi])
ezplot(@cos,[0,2*pi])
Aufgaben
sin(3x)cos(5x)