`x`. - Fakultät Ingenieurwissenschaften, Informatik und Psychologie

Werbung
Stefan Scherer ([email protected])
David Bouchain ([email protected])
19. 10. 2007
Institut für Neuroinformatik
Fakultät für Ingenieurwissenschaften und Informatik
Einführung in MATLAB
Grundlagen für die Übungen begleitend zur
Vorlesung „Neuroinformatik I”
Seite 2
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Inhalt
– Was ist MATLAB?
– Mit MATLAB arbeiten
– Variablen (Vektoren, Matrizen, ...)
– Flusskontrolle und Funktionen
– Visualisierung
– Nützliche Funktionen
Seite 3
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Was ist MATLAB?
MATLAB ist:
– eine Entwicklungsumgebung mit eigener Skriptsprache
– spezialisiert auf numerische Berechnungen insbesondere mit
Vektoren und Matrizen
– versehen mit vielseitigen Visualisierungsmöglichkeiten
– ausgestattet mit einer sehr umfangreichen Funktionsbibliothek.
MATLAB ist nicht:
– ein CAS (computer algebra system) wie z. B. MAPLE,
Mathematica
– eine allgemeine Programmiersprache wie z. B. C/C++, Java
– schnell!
Seite 4
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Mit MATLAB arbeiten
>> x=[1,2,3]
MATLAB starten:
– lokale Installation
x =
1
• leider gibt es keine Lizenzen im SGI
– im SGI-Pool
• Linux: matlab aufrufen
3
2
4
6
3
6
9
>> y=x'
y =
– von einem entfernten Rechner aus
1
2
3
• im Textmodus
• via X11 forwarding
Anwenden:
– interaktiv
– skriptbasiert (.m-Dateien)
2
>> y*x
ans =
1
2
3
>>
Seite 5
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Das MATLAB-Hauptfenster
Seite 6
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Das Befehlsfenster
Seite 7
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Der Editor
Seite 8
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
MATLAB übers Intranet/Internet
bouchain@retina:~$ ssh [email protected]
Password:
ab29@wsl02:~$ matlab
Warning: Unable to open display , MATLAB is starting without a display.
You will not be able to display graphics on the screen.
< M A T L A B >
Copyright 1984-2006 The MathWorks, Inc.
Version 7.3.0.298 (R2006b)
August 03, 2006
To get started, type one of these: helpwin, helpdesk, or demo.
For product information, visit www.mathworks.com.
>> x=[1,2,3]
x =
1
2
3
>> exit
ab29@wsl02:~$ exit
bouchain@retina:~$ ssh -Y [email protected]
Password:
ab29@wsl02:~$ matlab
ab29@wsl02:~$ exit
bouchain@retina:~$
Seite 9
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Allgemeines
Syntaktische Feinheiten:
>> x = 5
x =
5
– % beginnt Zeilenkommentar
– ; unterdrückt Konsolenausgabe
>> y = x;
>> y
y =
5
– gilt für Konsole und Skript!
>> % y = 6
>> y
y =
5
>>
Seite 10
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> a
??? Undefined function or
variable 'a'.
Variablen
>> a = 23
– Variablen müssen nicht deklariert
werden!
– Bezeichner
• sind alphanumerisch
• beginnen mit einem Buchstaben
– MATLAB ist casesentitiv
– Definition durch Zuweisung
•
•
•
•
Zuweisung:
Arithmetik:
Vergleich:
Logik:
23
>> A = 42
A =
42
• x = [1, 2, 3]
• s = 'Hello, World!'
– Operatoren
a =
>> a
ungleich
x = y
+, -, *, /, ^
>, <, >=, <=, ==, ~=
&, |, ~
a =
23
>> a ~= A
ans =
1
NICHT
>>
Seite 11
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x = [1, 2, 3]
x =
Vektoren
1
Kommata
Definieren:
– Zeilenvektor:
•
•
•
•
x
x
x
x
=
=
=
=
2
3
>> x = 7:10
x =
[1, 2, 3]
7
8
[1 2 3] identisch
>> x = 1:2:5
7:11
<von>:<bis>
1:1.5:5 <von>:<Schritt>:<bis> x =
1
Semikola
3
>> y = [1 2 3]'
– Spaltenvektor
y =
• y = [1; 2; 3]
• y = [1 2 3]' transponieren
1
2
3
>>
9
5
10
Seite 12
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x(1:2:5)
>> x(1)
Vektoren (2)
ans =
1
Elementzugriff:
Beispielvektor x = [1 2 3 4 5]
>> x(end)
ans =
– erstes Element:
1
• x(1)
5
>> x(end + 1) = 6
x =
– letztes Element:
• x(5)
• x(end)
• x(end+1) = 6 (wachsen)
1
• x(1:2:5)
3
>> x(1:2:5)
ans =
1
– Teilvektor:
2
>>
(ungerade Indizes)
3
5
4
5
6
Seite 13
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x = [1 2 3]; y = x';
>> y'
Vektoren (3)
ans =
1
Elementweise Operationen:
Beispielvektoren x = [1 2 3] und y = x'
2
3
4
6
4
9
4
9
>> x + y'
ans =
– Transponierung: y'
– Addition:
x + y'
2
>> x .* y'
ans =
– Multiplikation:
x .* y'
– Potenzierung:
x .^ 2
1
>> x .^ 2
ans =
– Subtraktion, Division, und Wurzel
entsprechend
1
>>
Seite 14
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x = [1 2 3]; y = x';
>> x * y
Vektoren (4)
ans =
Vektorielle Operationen:
14
Beispielvektoren x = [1 2 3] und y = x'
– Skalarprodukt:
– Matrixprodukt:
x * y
>> y * x
ans =
1
2
3
y * x
– Dimensionen müssen passen!
2
4
6
3
6
9
>> x(end + 1) = 0;
>> x * y
??? Error using ==> mtimes
Inner matrix dimensions
must agree.
>>
Seite 15
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> A = [1 2 3; 4 5 6]
Matrizen
A =
1
4
Definieren:
– A = [1, 2, 3; 4, 5, 6]
2
5
3
6
>> A(end, end)
ans =
6
>> A(2, 1:2)
Elementzugriff:
ans =
– direkt:
– letztes Element:
– Teilmatrix:
A(2,3)
A(end,end)
A(2,1:2)
4
5
>> A(1, :)
ans =
1
>>
2
3
Seite 16
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> A = [1 2 3; 4 5 6];
>> A'
Matrizen (2)
ans =
Operationen:
1
2
3
Beispielmatrix: A = [1, 2, 3; 4, 5, 6]
– Transponierung:
A'
4
5
6
>> A .* A
ans =
– Elementweise Multiplikation: A .* A
– Matrixmultiplikation:
A' * A
1
16
4
25
>> A * A'
ans =
14
32
>>
32
77
9
36
Seite 17
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Flusskontrolle
Bedingte Ausführung:
– if-Bedingung:
>> x = 1; y = 0;
>> if x ~= y
'Foo!'
else
'Bar!'
end
ans =
if <Bedingung 1>
<Anweisung 1>
elseif <Bedingung 2>
<Anweisung 2>
else
<Anweisung 3>
end
Foo!
>> x = 5;
>> while x > y
x = x - 1;
end
>> x
x =
0
– while-Schleife:
>>
while <Bedingung>
<Anweisung>
end
Seite 18
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Flusskontrolle (2)
Iteratives Ausführen:
>> for x = 1:3
x = x - 2
end
x =
– for-Schleife
for <Laufvariable> = <Zeilenvektor>
<Anweisung>
end
• Änderung der Laufvariablen hat
keinen Einfluss auf die Anzahl der
Iterationen!
– for- und while-Schleifen können
mit break verlassen werden.
-1
x =
0
x =
1
>> for x = 23:42
break;
x
end
>>
Seite 19
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x = [1 2 3]
x =
Funktionen
Eingebaute Funktionen
1
2
3
>> y = [1 2 3 4]
y =
– eine Unmenge!
– umfangreiche Dokumentation
• help <Funktion>
• doc <Funktion>
– Beispiel:
1
2
3
4
>> size(x)
ans =
1
3
>> help size
>> size(y'*x)
SIZE
Size of array.
D = SIZE(X), for M-by-N matrix X, returns the two-element row vector
ans =
D = [M,N] containing the number of rows and columns
in the matrix.
For N-D arrays, SIZE(X) returns a 1-by-N vector of dimension lengths.
4
3
Trailing singleton dimensions are ignored.
>>
[M,N] = SIZE(X) for matrix X, returns the number
of rows and columns in
X as separate output variables.
[M1,M2,M3,...,MN] = SIZE(X) for N>1 returns the sizes of the first N
Seite 20
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Funktionen (2)
Benutzerdefinierte Funktionen:
–
–
–
–
>> help function_example
function_example
.m-Dateien
vorangehender Kommentartext ist
Hilfetext
"If
the brain were so
simple we could understand
Funktionsname ist Dateiname it, we would be so simple
we couldn't."---Lyall
Definition:
Watson
function <Ergebnis> = <Name> ( <Arg 1>, <Arg2>, ... )
– Beispiel:
>> function_example([1 2], [1; 2])
ans =
%
%
%
%
%
function_example
"If the brain were so simple we could
>>
understand it, we would be so
simple we couldn't."---Lyall Watson
function result = function_example(x, y)
result = x * y;
5
Seite 21
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Übungsaufgaben
Bitte folgendes Format verwenden:
– jede Aufgabe als eigene Funktion
– eine .m-Datei beilegen, die alle
Aufgaben aufruft
– Beispiel:
% a1a
% Aufgabe 1a
function result = a1a(x, y)
result = x + y;
% a1b
% Aufgabe 1b
function result = a1b(x, y)
result = x .* y;
% Blatt 42
a1a([0,1,2],[1,2,3])
a1b([0,1,2],[3,2,1])
a2([0,1,2])
% a2
% Aufgabe 2
function result = a2(x)
result = x * x';
Seite 22
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Visualisierung
Funktionen:
– plot: zeichnet eine Funktion
– subplot(Zeilen, Spalten, Nummer): mehrere Plots in einem Fenster
– legend: stellt Legende dar (div. Optionen möglich)
– title: fügt Titel hinzu
– hold on bzw. off: nötig um mehrere Plots hinzuzufügen
– …
Plotoptionen:
– plot(x, y, [options]):
• Linien: ‘-’, ‘--’, ‘:’, ‘-.’
• Markierungen: ‘x’, ‘o’, ‘*’, …
• Farben: ‘r’, ‘b’, ‘g’, ‘c’, ‘y’, …
– Kombinationen möglich
Seite 23
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Visualisierung (2)
Beispiel:
% fermi
% Zeichnet eine Fermifunktion
function result = fermi()
% Sigmoid:
x = -5:0.1:5;
y = 1./(1+exp(-x));
% Plotten und nicht schliessen:
plot(x,y);
hold on;
% Ableitung:
y = (1./(1 + exp(-x))).*(1 - (1./(1 + exp(-x))));
% Auch plotten:
plot(x,y,'r');
% Bild speichern:
print -dpng 'fermi.png'
Seite 24
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
>> x = [-1 1 -1 -1 1];
>> find(x >= 0)
Nützliche Funktionen
ans =
2
Ein paar hilfreiche Funktionen:
– size:
– find:
– ones:
– diag:
– clear all:
Größe eines Vektors/einer
Matrix
5
>> x = ones(3)
x =
gibt die Elemente zurück, die
>>
eine Bedingung erfüllen
1
1
1
1
1
1
1
1
1
x = diag(1:3)
x =
Matrix der angegebenen
Dimension, gefüllt mit Einsen
Diagonalmatrix
1
0
0
0
2
0
0
0
3
>> clear all
>> x
alle Variablen löschen (jedes??? Undefined function or
Programm damit beginnen!) variable 'x'.
>>
Seite 25
Einführung in MATLAB | Scherer & Bouchain | 19. 10. 2007
Bitteschön!
Herunterladen