Matlab Übersicht

Matlab Übersicht Matlab Übersicht

www1.hs.bremerhaven.de
von www1.hs.bremerhaven.de Mehr von diesem Publisher
19.12.2012 Aufrufe

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

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!