Matlab Einführung

Werbung
Matlab Einführung
Tobias Wunner
16. Oktober 2006
Matlab eine Einführung
• Vorteile
– Interpreter und interaktive Befehlseingabe
• Schnelles Implementieren von wissenschaftlichen
Methoden
• Gutes Hilfesystem
>> lookfor 'sum'
TRACE Sum of diagonal elements.
CUMSUM Cumulative sum of elements.
SUM Sum of elements.
...
Matlab eine Einführung
• Vorteile
– Interpreter und interaktive Befehlseingabe
• Schnelles Arbeiten zum Entwickeln von
Programmen
• Gutes Hilfesystem
>> help sum
SUM Sum of elements.
S = SUM(X) is the sum of the elements of the
vector X. If X is a matrix, S is a row
vector with the sum over each
...
Matlab eine Einführung
• Vorteile
– Modulorientiert / Offen
• Sämtliche
Matlabskripte sind
einsehbar
>> edit sum
Matlab eine Einführung
• Vorteile
– Erweiterbar
• C oder FORTRAN
Code durch mex
Bibliotheken
Matlab eine Einführung
• Vorteile
– Profiler ab Version 7!
• Hilft beim Auffinden von
Ressourcen-Verbrauchenden
Programmteile
Matlab eine Einführung
• Vorteile
– Umfangreiche Softwarepakete vorhanden
• z.B.Toolboxes
– Image Processing Toolbox
– Neural Network Toolbox
• www.mathworks.com/matlabcentral
– Hier findet ihr alles was ihr nicht findet… :)
Matlab eine Einführung
• Nachteile
– Nicht Objektorientiert (kein JAVA)
– Effiziente Programme nur durch
Vektorisierung
>> x=1:5
X =
1 2 3 4 5
>> y=sqrt(1:5);
statt
for x=1:5
y = sqrt(x);
end
„Umdenken“
Matlab eine Einführung
• Nachteile
– Fast Alles ist erlaubt!
• Keine Variablendeklaration nötig
• Variablenneubelegungen
>>
(Typänderung)
>>
• Funktionen mit gleichen Ein- und
Ausgabeparametern
x=2
x=‘super‘
function x = myfun(x)
...
x = x*2;
Matlab eine Einführung
• Nachteile
– Fast Alles ist erlaubt!
• Sogar Build-In Matlab Funktionen können als
Variablen genutzt werden
=> ACHTUNG tötet eingebaute Funktionen!!!
>> sum = 1:5;
>> sum([0 0 1 1 0])
3 4
% intuitiv erwartet 1+2+3+4+5=15
>> who
% zeigt alle variablen im speicher an
ans sum
>> tmp = sum
% sichern von variable sum
>> clear sum
% löschen von variablesum
>> sum(tmp)
% richtig!
15
Matlab eine Einführung
• MATLAB starten
– UNIX
• z.B. Remote via
Putty
andromeda@ option matlab
andromeda@ matlab –nojvm -nodisplay
– Windows
Matlab eine Einführung
• Handwerkzeug zum starten
– Arbeitsverzeichnis
>> pwd
>> ls
>> cd projekt1
– Variablen im Speicher
>> who
– Variablen löschen/speichern
>> clear y
>> save dateiname
>> load dateiname
– History
Cursor
Matlab eine Einführung
• Matrizen
– Beliebige Matrizen
>> [1 3 5 7;2 4 6 8]
– Spezielle Matrizen
>> eye(3)
>> ones(2,4)
>> zeros(1,3)
– Zufallszahlen
>> rand(3)
>> rand(100,100)
Matlab eine Einführung
• Matrizen indizieren
– Dimension
>> x=rand(3,4)
>> size(x,1)
>> size(x,2)
% M-by-N Matrix
% M = Zeilen
% N = Spalten
– Alle Elemente als Liste
>> x(:)
– k-tes bis Letztes Element
>> y(k:end)
Matlab eine Einführung
• Matrizen indizieren
– Mit Logik
>> x=2:7
2 3 4 5 6 7
>> x>4
0 0 0 1 1 1
– Indizes ausgeben
>> find(x>3)
5 6 7
Matlab eine Einführung
• Vergleichsoperatoren
– kleiner/größer <,>
– gleich/ungleich ==,~=
– größergleich >=
• Logische Operatoren
– Und &
– Oder |
– Nicht ~
Matlab eine Einführung
• Matrizen sortieren/umformen
– sortieren
>> x=6:-1:1
6 5 4 3 2 1
>> sort(x)
1 2 3 4 5 6
– umformen
>> reshape(x,2,3)
1 3 5
2 4 6
Matlab eine Einführung
• Matrix Algebra
– Kronecker Produkt
>> kron([1 1 1],[1 2 5])
1 1 1
2 2 2
5 5 5
– Weiter nützliche Matrixoperationen
>> help matfun
Matlab eine Einführung
• Komponentenweise Operationen
– Inneres Produkt
>> x=[1 -1]‘
>> x‘*x
2
– Äußeres Produkt
>> x*x‘
1 -1
-1 1
(x ist hier
Spaltenvektor!)
Matlab eine Einführung
• Vektormanipulationen
– Eintragsweise Operationen
>> [1 2 3].*[1 10 100]
1 20 300
>> [10 20 30]./[5 20 60]
2.0000 1.0000 0.5000
>> [2 4 8].^2
4 16 64
Matlab eine Einführung
• Programmierung
– Schleifen
for i=[1 4 2 1]
sprinft(´Round%d\n´,i);
end
while BEDINGUNG
...
end
Matlab eine Einführung
• Programmierung
– Abbruch von Schleifen
for i=1:10
...
if (error<.1)
break;
end
end
% bricht Schleife ab
Matlab eine Einführung
• Programmierung
– Bedingungen
if BEDINGUNG
...
end
if BEDINGUNG
...
else
...
end
Matlab eine Einführung
• Datentypen
– Arrays
matrix = [‘Peter‘,‘Hans‘]
PeterHans
matrix = [‘Peter‘;‘Hans‘]
geht nicht!
Lösung
– Cells
cell = {‘Peter‘,‘Hans‘}
m = char(cell)
Peter
Hans
>> m(2,:)
Hans
>> cell{2}
Hans
Matlab eine Einführung
• Datentypen
– Cells -> beliebiege Datentypen
cell2 = {12,cell,m}
cell2{3}
Peter
Hans
– Ähnliche Idee bei Struct
struct1.a = cell2;
struct1.b = rand(10,10);
struct1.a{2}{3}(2,:)
% Zugriff auf Hans
Matlab eine Einführung
• Ein-/Ausgabe
disp(‘Hello World‘);
sprinft(‘Zahl=%d\n‘,x);
% Einfache Ausgabe
% Formatierte Ausgabe
x = input(‘Zahl eingeben:‘,x);% Einfache Eingabe
S = ‘1 2 3‘;
x = sscanf(S,‘%f‘);
% Formatierte Eingabe
Matlab eine Einführung
• Grafische Ausgabe von Daten
– neues Ausgabefenster öffnen
figure
– Daten in einem 2D Bild ausgeben
x=rand(10,10);
x2=x*x‘;
figure, imagesc(x2), colorbar
sc = scaled image
Skala
Kovarianzmatrix
Matlab eine Einführung
• Grafische Ausgabe von Daten
– Funktionen Plotten
plot(XVALUES,YVALUES)
xval = 0:.1:30
yval = sin(3.*cos(xval))
plot(xval,yval,‘r‘)
– Mehrere Funktionen
yval2 = sin(xval)
plot(xval,yval,xval,yval2)
oder
plot(xval,yval,‘:b‘)
hold on
plot(xval,yval2,‘r‘)
Matlab eine Einführung
• Grafische Ausgabe von Daten
– 3D Plot von Oberflächen (surfaces)
x = imread(...);
surf(x);shading flat;
Matlab eine Einführung
Herunterladen