Einführung in MATLAB Grundlagen für die Übungen begleitend zur Vorlesung „Neuroinformatik I” Stefan Scherer (stefan.scherer@uni-ulm.de) David Bouchain.

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Matrixmultiplikation
Prof. Dr. S. Albers Prof.Dr.Th Ottmann
Aufgabe: Wie stellt man eine for-Schleife durch eine while-Schleife dar ?
Forschungszentrum caesar
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Zusammenfassung der Vorwoche
Übung zur Numerische Geologie
Seminar Stochastik im WS 02/03
Matlab Einführung Tobias Wunner 16. Oktober 2006.
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Dynamische Programmierung (2) Matrixkettenprodukt
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Die Skriptsprache Lua Softwaretechnologie II.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
2D-Visualisierung von Daten
Diskrete Mathematik I Vorlesung Arrays-
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Einführung in die Programmierung Datensammlung
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Informatik 1 Übung 2.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Einführung in die Matrizenrechnung
Polynome und schnelle Fourier-Transformation
MATLAB André Bolles.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Dynamische Datentypen
Grundkonzepte des Programmierens (mit ActionScript)
Purga - Scriptengine Ein Einblick.
Algorithmen und Datenstrukturen Übungsmodul 8
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Informatik Grundlagen, WS04, Seminar 7
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Dyabola Archäologische Bibliographie Römisch-Germanischen Kommission (RGK) Author searches – compound names Bibliotheken Click = next Libraries.
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Data Mining Spectral Clustering Junli Zhu SS 2005.
SFZ FN Sj. 13/14 Python Grundlagen InfK12 Sj 13/14 GZG FN W.Seyboldt.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Übung 2 - MdMT Methoden der Medizintechnik Übung zur Vorlesung Folge 2 – Basics Vom ersten Befehl zum Plot.
Coordinating Conjunctions Why we need them & how to use them deutschdrang.com.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
1 Bauhaus-Universität Weimar ArchitekturProgrammierung Generative Entwurfsmethoden Processing Grundlagen Professur Informatik in der Architektur.
THE MATHEMATICS OF PARTICLES & THE LAWS OF MOTION.
MATLAB Control Statements.
Wozu Maple? Symbolische Algebra Manche Sachen soll man besser nicht von Hand machen –kleine Rechnungs Fehler können mehrere Millionen werden – am besten.
6. Thema: Arbeiten mit Feldern
 Präsentation transkript:

Einführung in MATLAB Grundlagen für die Übungen begleitend zur Vorlesung „Neuroinformatik I” Stefan Scherer (stefan.scherer@uni-ulm.de) David Bouchain (david.bouchain@uni-ulm.de) 19. 10. 2007 Institut für Neuroinformatik Fakultät für Ingenieurwissenschaften und Informatik

Inhalt Was ist MATLAB? Mit MATLAB arbeiten Variablen (Vektoren, Matrizen, ...) Flusskontrolle und Funktionen Visualisierung Nützliche Funktionen

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!

Mit MATLAB arbeiten MATLAB starten: lokale Installation im SGI-Pool >> x=[1,2,3] x = 1 2 3 >> y=x' y = 1 2 3 >> y*x ans = 2 4 6 3 6 9 >> MATLAB starten: lokale Installation leider gibt es keine Lizenzen im SGI im SGI-Pool Linux: matlab aufrufen von einem entfernten Rechner aus im Textmodus via X11 forwarding Anwenden: interaktiv skriptbasiert (.m-Dateien)

Das MATLAB-Hauptfenster

Das Befehlsfenster

Der Editor

MATLAB übers Intranet/Internet bouchain@retina:~$ ssh ab29@wsl02.informatik.uni-ulm.de 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 ab29@wsl02.informatik.uni-ulm.de bouchain@retina:~$

Allgemeines Syntaktische Feinheiten: % beginnt Zeilenkommentar >> x = 5 x = 5 >> y = x; >> y y = >> % y = 6 >> Syntaktische Feinheiten: % beginnt Zeilenkommentar ; unterdrückt Konsolenausgabe gilt für Konsole und Skript!

Variablen Variablen müssen nicht deklariert werden! Bezeichner ??? Undefined function or variable 'a'. >> a = 23 a = 23 >> A = 42 A = 42 >> a ~= A ans = 1 >> Variablen Variablen müssen nicht deklariert werden! Bezeichner sind alphanumerisch beginnen mit einem Buchstaben MATLAB ist casesentitiv Definition durch Zuweisung x = [1, 2, 3] s = 'Hello, World!' Operatoren Zuweisung: x = y Arithmetik: +, -, *, /, ^ Vergleich: >, <, >=, <=, ==, ~= Logik: &, |, ~ ungleich NICHT

Vektoren Definieren: Zeilenvektor: Spaltenvektor Kommata x = [1, 2, 3] 1 2 3 >> x = 7:10 7 8 9 10 >> x = 1:2:5 1 3 5 >> y = [1 2 3]' y = 1 2 3 >> Vektoren Kommata Definieren: Zeilenvektor: x = [1, 2, 3] x = [1 2 3] identisch x = 7:11 <von>:<bis> x = 1:1.5:5 <von>:<Schritt>:<bis> Spaltenvektor y = [1; 2; 3] y = [1 2 3]' transponieren Semikola

Vektoren (2) Elementzugriff: Beispielvektor x = [1 2 3 4 5] ans = 1 >> x(end) 5 >> x(end + 1) = 6 x = 1 2 3 4 5 6 1 3 5 >> Vektoren (2) Elementzugriff: Beispielvektor x = [1 2 3 4 5] erstes Element: 1 x(1) letztes Element: x(5) x(end) x(end+1) = 6 (wachsen) Teilvektor: x(1:2:5) (ungerade Indizes)

Vektoren (3) Elementweise Operationen: >> x = [1 2 3]; y = x'; >> y' ans = 1 2 3 >> x + y' 2 4 6 >> x .* y' 1 4 9 >> x .^ 2 >> Vektoren (3) Elementweise Operationen: Beispielvektoren x = [1 2 3] und y = x' Transponierung: y' Addition: x + y' Multiplikation: x .* y' Potenzierung: x .^ 2 Subtraktion, Division, und Wurzel entsprechend

Vektoren (4) Vektorielle Operationen: >> x = [1 2 3]; y = x'; >> x * y ans = 14 >> y * x 1 2 3 2 4 6 3 6 9 >> x(end + 1) = 0; ??? Error using ==> mtimes Inner matrix dimensions must agree. >> Vektorielle Operationen: Beispielvektoren x = [1 2 3] und y = x' Skalarprodukt: x * y Matrixprodukt: y * x Dimensionen müssen passen!

Matrizen Definieren: A = [1, 2, 3; 4, 5, 6] Elementzugriff: 1 2 3 4 5 6 >> A(end, end) ans = 6 >> A(2, 1:2) 4 5 >> A(1, :) >> Definieren: A = [1, 2, 3; 4, 5, 6] Elementzugriff: direkt: A(2,3) letztes Element: A(end,end) Teilmatrix: A(2,1:2)

Matrizen (2) Operationen: Beispielmatrix: A = [1, 2, 3; 4, 5, 6] ans = 1 4 2 5 3 6 >> A .* A 1 4 9 16 25 36 >> A * A' 14 32 32 77 >> Operationen: Beispielmatrix: A = [1, 2, 3; 4, 5, 6] Transponierung: A' Elementweise Multiplikation: A .* A Matrixmultiplikation: A' * A

Flusskontrolle Bedingte Ausführung: if-Bedingung: while-Schleife: >> x = 1; y = 0; >> if x ~= y 'Foo!' else 'Bar!' end ans = Foo! >> x = 5; >> while x > y x = x - 1; >> x x = >> Bedingte Ausführung: if-Bedingung: if <Bedingung 1> <Anweisung 1> elseif <Bedingung 2> <Anweisung 2> else <Anweisung 3> end while-Schleife: while <Bedingung> <Anweisung>

Flusskontrolle (2) Iteratives Ausführen: for-Schleife >> for x = 1:3 x = x - 2 end x = -1 1 >> for x = 23:42 break; x >> Iteratives Ausführen: 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.

Funktionen Eingebaute Funktionen eine Unmenge! >> x = [1 2 3] x = 1 2 3 >> y = [1 2 3 4] y = 1 2 3 4 >> size(x) ans = 1 3 >> size(y'*x) 4 3 >> Funktionen Eingebaute Funktionen eine Unmenge! umfangreiche Dokumentation help <Funktion> doc <Funktion> Beispiel: >> help size SIZE Size of array. D = SIZE(X), for M-by-N matrix X, returns the two-element row vector 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. 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

Funktionen (2) Benutzerdefinierte Funktionen: .m-Dateien vorangehender Kommentartext ist Hilfetext Funktionsname ist Dateiname Definition: function <Ergebnis> = <Name> ( <Arg 1>, <Arg2>, ... ) Beispiel: >> help function_example function_example "If the brain were so simple we could understand it, we would be so simple we couldn't."---Lyall Watson >> function_example([1 2], [1; 2]) ans = 5 >> % 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;

Ü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';

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

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'

Nützliche Funktionen Ein paar hilfreiche Funktionen: >> x = [-1 1 -1 -1 1]; >> find(x >= 0) ans = 2 5 >> x = ones(3) x = 1 1 1 >> x = diag(1:3) 1 0 0 0 2 0 0 0 3 >> clear all >> x ??? Undefined function or variable 'x'. >> Nützliche Funktionen Ein paar hilfreiche Funktionen: size: Größe eines Vektors/einer Matrix find: gibt die Elemente zurück, die eine Bedingung erfüllen ones: Matrix der angegebenen Dimension, gefüllt mit Einsen diag: Diagonalmatrix clear all: alle Variablen löschen (jedes Programm damit beginnen!)

Bitteschön!