Matlab Übersicht
Matlab Übersicht Matlab Übersicht
Matlab Übersicht Ziel: einfacher Zugang zu numerischen (FORTRAN)Bibliotheken [Freeware] Linpack (LINear Algebra Solution PACKage) und Eispack (EIgenvalue Solution PACKage) => aktuelle Version: Lapack (Linear Algebra PACKage, [in FORTRAN90]) Matlab steht für MATrix LABoratory, die Fa. “The Mathworks” wurde 1984 gegründet " Anfänglich zur numerischen Lösung von mathematischen Problemen konzipiert. " Heute ein Standardwerkzeug für numerische Berechnungen, symbolische Arithmetik, Simulation, Echtzeitanwendungen, Datenerfassung und -visualisierung, Bildverarbeitung, Finanzmathematik, GUI-Builder und vorallem Simulation. Matlab besteht aus dem Matlab-Kern, dersymbolischen “Engine” und Simulink (für Simulationen) und einer sehr großen Anzahl an optionalen “Toolboxen” jeweils für spezielle Aufgaben) : Kern Simulink Toolboxen : sofern hierfür Lizenzen vorhanden sind! Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven ~ mue/Matlab_1/page 1 of 14
- Seite 2 und 3: Alternativen SciLab (SciLab Consort
- Seite 4 und 5: Matrizen Skalare, Vektoren und Matr
- Seite 6 und 7: Erweiterung von Matlab durch Funkti
- Seite 8 und 9: Division und Inversion Bei den übe
- Seite 10 und 11: Kontrollstrukturen Matlab verfügt
- Seite 12 und 13: Symbolische Mathematik Die Möglich
- Seite 14: Simulation und Synthese (Matlab/Sim
<strong>Matlab</strong> <strong>Übersicht</strong><br />
Ziel: einfacher Zugang zu numerischen (FORTRAN)Bibliotheken [Freeware]<br />
Linpack (LINear Algebra Solution PACKage) und<br />
Eispack (EIgenvalue Solution PACKage) => aktuelle Version:<br />
Lapack (Linear Algebra PACKage, [in FORTRAN90])<br />
<strong>Matlab</strong> steht für MATrix LABoratory, die Fa. “The Mathworks” wurde 1984 gegründet<br />
" Anfänglich zur numerischen Lösung von mathematischen Problemen konzipiert.<br />
" Heute ein Standardwerkzeug für numerische Berechnungen, symbolische<br />
Arithmetik, Simulation, Echtzeitanwendungen, Datenerfassung und -visualisierung,<br />
Bildverarbeitung, Finanzmathematik, GUI-Builder und vorallem Simulation.<br />
<strong>Matlab</strong> besteht aus dem <strong>Matlab</strong>-Kern, dersymbolischen “Engine” und Simulink (für Simulationen) und einer<br />
sehr großen Anzahl an optionalen “Toolboxen” jeweils für spezielle Aufgaben) :<br />
Kern Simulink Toolboxen<br />
: sofern hierfür Lizenzen vorhanden sind!<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 1 of 14
Alternativen<br />
SciLab (SciLab Consortium, INRIA, Frankreich) Freeware<br />
ermöglicht auch Simulation (Scilab/SciCos)<br />
Octave Open Source (GNU) auf allen Plattformen mit sehr vielen Funktionen<br />
inzwischen ist auch eine Windows-Version (MINGW) verfügbar<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 2 of 14
Datentypen und Objekte<br />
Programmiersprachen unterscheiden sich durch ihre Datentypen bzw. durch die Möglichkeiten,<br />
Klassen und Methoden zu erzeugen.<br />
" Der wesentliche Datentyp in <strong>Matlab</strong> ist die Matrix.<br />
Dafür sind fast alle Operatoren (+---*/^) überladen.<br />
" Darüber hinaus existieren viele Objekte (Polynome, Übertragungsfunktionen usw.),<br />
auf die ebenfalls fast alle Operatoren anwendbar sind.<br />
" In <strong>Matlab</strong> können keinen eigenen Klassen erzeugt werden (im Gegensatz zu C++<br />
oder Java).<br />
" Klassen werden nicht deklariert, sondern immer Objekte implementiert.<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 3 of 14
Matrizen<br />
Skalare, Vektoren und Matrizen werden in <strong>Matlab</strong> einheitlich behandelt., Matrizen können beliebige<br />
Dimensionen annehmen (nur durch den virtuellen Speicher begrenzt).<br />
" Matrizen werden durch eckige Klammern beschrieben. Das Semikolon trennt bei<br />
der Eingabe Zeilen ab.<br />
" Das Semikolon hat noch folgende (ganz andere) Bedeutungen:<br />
1. Unterdrückung der Ausgabe am Ende eines Befehls<br />
2. Trennung von mehreren Befehlen innerhalb einer Zeile<br />
A=[201;11è1]<br />
erzeugt ein Objekt “Matrix” der Dimension 2x3<br />
Auf Elemente der Matrix oder Teilmatrizen kann durch den Namen und runde Klammern () zugegriffen werden:<br />
A(2,3)<br />
liefert z.B. -1<br />
Der Doppelpunkt im Argument steht für einen Bereich:<br />
A(:,1:2)<br />
liefert alle Zeilen (1. Doppelpunkt) sowie die Spalten 1 und 2 (quadratische 2x2-Matrix).<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 4 of 14
<strong>Matlab</strong> ist (auch) eine universelle Programmiersprache<br />
" <strong>Matlab</strong> kann interaktiv benutzt genutzt werden, z.B.<br />
Radius = 0.2;<br />
Umfang =2*pi*radius;<br />
" Die Befehle können auch in eine Text-Datei geschrieben werden (Extension “.m”).<br />
Die Datei heißt m-File und kann unter ihrem Namen (ohne “.m”) in <strong>Matlab</strong> aufgerufen werden:<br />
Inhalt von flaeche.m:<br />
Radius = 0.2;<br />
Umfang =2*pi*Radius;<br />
fprintf('Der Umfang des Kreises betraegt %.3f\n', Umfang);<br />
Man erhält als Ausgabe:<br />
Der Umfang des Kreises betraegt 1.257<br />
Die Variable pi ist in <strong>Matlab</strong> als 3.14159265358979 hinterlegt.<br />
" Eingaben: x = input('Text zur Eingabe');<br />
" Ausgaben: disp('Text') oder fprintf('Format String\n', x, y, ...);<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 5 of 14
Erweiterung von <strong>Matlab</strong> durch Funktionen (functions)<br />
" <strong>Matlab</strong> kann beliebig durch eigenen Funktionen erweitert werden.<br />
DasistdasPrinzipder“ToolBoxes”<br />
" Eine Funktion besitzt eingehenden und ausgehende Argumente.<br />
Alle in einer Function benutzten Variablen sind lokal!<br />
function [a1, a2, ...] = fname(e1, e2, ...)<br />
%fname Dies erscheint mit help fname".<br />
% Fehlermeldung bei weniger als 3 und mehr als 4 Eingangsargumenten;<br />
% der folgende Befehl ist nicht notwendig aber hilfreich.<br />
error(nargchk(3,4,nargin));<br />
x = 42.3 * pi; % x ist auàerhalb von fname" nicht sichtbar<br />
a1 = ...;<br />
a2 = ...;<br />
...<br />
% Dateiende kennzeichnet Ende der function()<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 6 of 14
Der Datentyp Matrix<br />
In <strong>Matlab</strong> sind alle fast Operatoren und Funktionen für den Datentyp Matrix (bzw. Vektor) überladen.<br />
Die Matrizen müssen natürlich die für die Operationen notwendigen Dimensionen aufweisen.<br />
>>A=[1234;5678]<br />
A=<br />
1 2 3 4<br />
5 6 7 8<br />
>>B=[-1230;-1-1-11]<br />
B=<br />
-1 2 3 0<br />
-1 -1 -1 1<br />
>> A*B<br />
??? Error using ==> mtimes<br />
Inner matrix dimensions must agree.<br />
" Durch Transponieren der Matrix B sind sowohl<br />
A*B als auch B*A definiert.<br />
>>B=B'<br />
B=<br />
-1 -1<br />
2 -1<br />
3 -1<br />
0 1<br />
>> A*B<br />
ans =<br />
12 -2<br />
28 -10<br />
>> B*A<br />
ans =<br />
-6 -8 -10 -12<br />
-3 -2 -1 0<br />
-2 0 2 4<br />
5 6 7 8<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 7 of 14
Division und Inversion<br />
Bei den überladenen Divisions-Operator ist zwischen ’/’ (right divide) und ’\’ (left divide) zu unterscheiden.<br />
b = Ax ⇒ x = A −1 b <strong>Matlab</strong>: x = A\b<br />
B = XA ⇒ X = BA −1<br />
<strong>Matlab</strong>: X = B/A<br />
(left inverse)<br />
(right inverse)<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 8 of 14
Elementweise Operationen<br />
Sollen Operationen auf alle Elemente einer Matrix angewandt werden (keine Matrix-Operationen),<br />
so ist .*, ./ oder .^ zu verwenden.<br />
>> x1=[1 232251]'<br />
x1 =<br />
1<br />
2<br />
3<br />
2<br />
2<br />
5<br />
1<br />
>> x2=[4 133126]'<br />
x2 =<br />
4<br />
1<br />
3<br />
3<br />
1<br />
2<br />
6<br />
>> x1*x2<br />
??? Error using ==> mtimes<br />
Inner matrix dimensions must agree.<br />
>> x1.*x2<br />
ans =<br />
4<br />
2<br />
9<br />
6<br />
2<br />
10<br />
6<br />
" Das Ergebnis sind die Produkte der jeweils<br />
korrespondierenden Elemente.<br />
BeiMatrizenbzw.Vektorenmüssennatürlich<br />
gleiche Dimension haben.<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 9 of 14
Kontrollstrukturen<br />
<strong>Matlab</strong> verfügt über alle in modernen Programmiersprachen üblichen Kontrollstrukturen für den<br />
Programmablauf.<br />
Die Syntax weicht gering --- historisch bedingt --- von C oder Java ab.<br />
if expression<br />
statements<br />
elseif expression<br />
statements<br />
else<br />
statements<br />
end<br />
for variable = expr<br />
statements<br />
end<br />
break beendet jede Schleife!<br />
switch switch_expr<br />
case case_expr,<br />
statements<br />
case {case_expr1, case_expr2, case_expr3,...}<br />
statements<br />
otherwise<br />
statements<br />
end<br />
while expression<br />
statements<br />
end<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 10 of 14
2D-Diagramme<br />
Mit <strong>Matlab</strong> lassen sich einfach Diagramme erzeugen, wenn Daten in Vektor- oder Matrixform vorliegen.<br />
plot(x1, y1, 'option', x2, y2, 'option')<br />
" x ist ein Vektor mit Werten der x-Achse, y ist ein Vektor (oder eine Matrix) mit<br />
Werten, die auf der y-Achse dargestellt werden. Die Anzahl der Zeilen in x muss<br />
mit der Anzahl der Zeilen in y übereinstimmen. Falls x ein Zeilenvektor ist,<br />
müssen die Anzahl der Spalten in y mit denen von x übereinstimmen.<br />
" Mit ’option’ (kann entfallen) kann Farbe und Linienart vorgegeben werden.<br />
Beispiel:<br />
plot(x, y, 'r*:')<br />
Zeichnet ein Diagramm y über x mit roter (r) gepunkteter (:) Linie und Sternen (*) als Markierung.<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 11 of 14
Symbolische Mathematik<br />
Die Möglichkeit zur Rechnung mit symbolischen Variablen ist in <strong>Matlab</strong> über die “MuPad-Engine” integriert.<br />
Symbolische Variablen werden mit syms erzeugt.<br />
Abgeleitete Ausdrücke werden automatisch symbolische Terme.<br />
syms x<br />
f = x^2 % f ist auch eine symbolische Variable<br />
int(f) % unbestimmtes Integral von f(x)<br />
" wichtige Funktionen der symbolischen Mathematik:<br />
int Integral<br />
diff Ableitung<br />
laplace LaplaceèTransformation<br />
ilaplace inverse LaplaceèTransformation<br />
ezplot Plotten von symbolischen Funktionen (=easyplot)<br />
simplify Vereinfachung von symbolischen Ausdr¸cken<br />
pretty schˆne", besser lesbare Ausgabe von Ausdr¸cken<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 12 of 14
Simulation und Synthese (<strong>Matlab</strong>/Simulink)<br />
<strong>Matlab</strong>/Simulink ermöglicht die Simulation von kontinuierlichen und diskreten Systemen, d.h. die<br />
numerische Lösung gewöhnlicher Differentialgleichungen und von Differenzengleichungen.<br />
Es können weiterhin ereignisdiskrete Systeme beschrieben und simuliert werden (Stateflow).<br />
" Das zu simulierende System kann in Form von Gleichungen oder grafisch durch<br />
Blöcke und gerichtete Verbindungen eingegeben werden.<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 13 of 14
Simulation und Synthese (<strong>Matlab</strong>/Simulink)<br />
Im Unterschied zu vielen leistungsfähigen Simulationswerkzeugen kann <strong>Matlab</strong>/Simulink fast alle Komponenten<br />
synthetisieren, d.h. automatisch Sourcecode für unterschiedlichste Zielsysteme erzeugen.<br />
" <strong>Matlab</strong>/Simulink kann damit für alle Phasen der Entwicklung eingesetzt werden<br />
Folgender Sourcecode kann erzeugt werden:<br />
" C/C++ für embedded Systeme und Rapid-Prototyping<br />
" VHDL für schnelle Digitalsysteme<br />
" SCL für Steuerungen (PLC bzw. SPS)<br />
Zur Überprüfung eigener Programme bzw. der generierten C/C++-Programme kann eigener Sourcecode<br />
einfach in Simulink eingebunden werden (Legacy Code).<br />
Regelungstechnik und Simulation E 2009 K. Müller, HS Bremerhaven<br />
~ mue/<strong>Matlab</strong>_1/page 14 of 14