46
Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel BA Stuttgart Oktober - Dezember 2006

Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Embed Size (px)

Citation preview

Page 1: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matlab – Simulink – Stateflow

Daniel Schrammel

BA Stuttgart

Oktober - Dezember 2006

Page 2: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Inhalt

5. Allgemeines

6. Matlab Grundlagen

Page 3: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

5. Allgemeines

Page 4: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Was ist Matlab ?

• Toolkette bzw. Programmierumgebung für mathematische Berechnungen,

Analysen und Simulationen

• MATrixLABoratory

• Matlab = textuelle Programmierung

– Matlab ist keine Compiler, sondern eine Interpretersprache

• Simulink = grafische Programmierung

• Stateflow = zustandsbasierte Programmierung

MATLAB

Simulink

Stateflow

5-1

Page 5: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Was kommt nach Matlab ?

• diverse Erweiterungen und Toolschnittstellen

• Beispiel:

– RealTimeWorkShop zur C-Codeerzeugung

– dSpace TargetLink zur C-Codegenerierung „TargetCode“

MATLAB

Simulink

Stateflow

Targetlink

5-2

Page 6: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Geschichte

• 1980 Cleve Moler erstellt erste Version in Fortran

• 1984 Gründung von „The MathWorks“

• 2000 Vertretung in Deutschland

• 2001 750 Mitarbeiter

• 2005 1300 Mitarbeiter

• Kunden und Anwendungen in Industriezweigen:

– Automobilindustrie, Luft- und Raumfahrt, Umwelt, Telekommunikation,

Finanzen, Medizin etc.

• Selbstbild von The MathWorks:

– MATLAB-Anwender ... erweitern unser Wissen über die Erde, die Umwelt und

das Universum. Sie machen unsere Fahrzeuge sicherer ... verbessern die

Luftfahrtsicherheit. Sie machen unsere Telefongespräche ... Sie erzielen

Fortschritte in der medizinischen Forschung ... Sie suchen nach neuen

Energiequellen.

5-3

Page 7: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Was kostet Matlab ?

• Netzwerk- bzw. Gruppenlizenz

(Basis offizielle Preisliste 2003)

– Matlab 2.160 € + 432 € p.a.

– Simulink 3.150 € + 636 € p.a.

– Stateflow 3.150 € + 636 € p.a.

– RealTimeWorkshop 8.460 €

– ImageProcessing Toolbox 1.035 €

– Neuronal Network Toolbox 1.035 €

5-4

Page 8: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

6. Matlab Grundlagen

Page 9: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Startbildschirm

WorkSpace /

Directory

CommandWindow

CommandHistory

6-1

Page 10: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matlab an der BA-Stuttgart

• ver = Abfrage der aktuell installierten Programme,

Erweiterungen und Versionen

-------------------------------------------------------------------------------------

MATLAB Version 7.1.0.246 (R14) Service Pack 3

MATLAB License Number: 264000

Operating System: Microsoft Windows XP Version 5.1 (Build 2600: Service Pack 2)

Java VM Version: Java 1.5.0 with Sun Microsystems Inc. Java HotSpot(TM)

Client VM mixed mode

-------------------------------------------------------------------------------------

MATLAB Version 7.1 (R14SP3)

Simulink Version 6.3 (R14SP3)

Image Acquisition Toolbox Version 1.9.1 (R14SP3+)

Image Processing Toolbox Version 5.1 (R14SP3)

Real-Time Workshop Version 6.3 (R14SP3)

Signal Processing Blockset Version 6.2 (R14SP3)

Signal Processing Toolbox Version 6.4 (R14SP3)

Stateflow Version 6.3 (R14SP3)

Video and Image Processing Blockset Version 2.0 (R14SP3+)

xPC Target Version 2.8 (R14SP3)

6-2

Page 11: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Versionen und Erweiterungen

• Version 6.5 R13 SP1

• Version 7 R14 SP3

• Toolbox = Erweiterung unter Matlab

• Blocksets = Erweiterung unter Simulink

• Achtung:

Immer wieder werden viele Details zwischen den Releases geändert !

6-3

Page 12: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Hilfe & Dokumentation

6-4

Page 13: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Hilfe & Dokumentation

• helpbrowser

6-5

Page 14: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Rechnerleistung

• bench

6-6

Page 15: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Shortcuts & Tipps

• Variablennamen sind case sensitive

• ArrayEditor mit Doppelklick auf Variable im Workspace erreichbar

• ESC = löscht aktuelle Zeile im „Command Window“

6-7

Page 16: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Shortcuts & Tipps

• ans = Standardrückgabe, Variable

• ; = Unterdrückung des Echo bzw. Ausgabe der Antwort

• Befehle der „Command History“ können per Drag and Drop in das

„Command Window“ gezogen werden

6-8

Page 17: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Shortcuts & Tipps

• TAB = Vervollständigung der Befehle

im „Command Window“

– 1x bei eindeutiger Vervollständigung

– 2x bringt passende Auswahl der Vervollständigung

• = Befehlshistorie der „Command History“

6-9

Page 18: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Basis-Befehe

• clc = clear „Command Window“

• clear = clear Workspace

• dir = directory listing

• pwd = print working directory

• cd C:\Daten = change directory

• Alternativ: Bedienung im DirectoryBrowser

6-10

Page 19: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Variablen

• Variablentypen:

– array, struct, char, string (char array), cell, single, double, int8, int16, uint8, uint16

• Variablen brauchen nicht explizit angelegt werden

• Ausgaben der Befehle können direkt in Variablen geschrieben werden

z.B.: abc = dir; (ansonsten Standardvariable ans)

• Größenangabe a x b

– a = Anzahl Elemente in Variable

– b = Anzahl „Zeichen“ in Element

6-11

Page 20: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Der Workspace

• Abbild des aktuellen Arbeitsspeichers der Matlab-Sitzung

• Darstellung von Name, Größe, Speicherbedarf und Typ (Variablenklasse)

• who = Auflistung aller Variablen

im Command Window

• whos = Auflistung aller Variablen

(inkl. der Eigenschaften)

6-12

Page 21: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matrizen

• (m,n)-Matrix = m-Zeilen und n-Spalten

– ; = neue Zeile

– , = neue Spalte (optional durch Leerzeichen ersetzbar,

besonders bei nur einer Zeile)

– : = „von bis“ bzw. Schrittweite (default = 1)

– linspace (m,n,k) = „von bis“ in k-Schritten (linear)

6-13

Page 22: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matrizen

• size(x) = Größe einer Matrix in Zeilen, Spalten

• x(m,n) = Zugriff auf Element m,n

– : = Platzhalter für ganze Zeile bzw. Spalte

– end = letztes Element der Matrix, z.B. x(end) = 99;

• Zeilen- bzw.

Spaltenvektoren

nachträglich hinzufügen

6-14

Page 23: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matrizen

• (fast) alle mathematischen Funktionen sind zugelassen

– a = x(2,1) + x(2,2)

– .* = elementweise Multiplikation

• viele Analysefunktionen sind vorhanden

– sum(x) = spaltenweise Summe der Matrix

– cumsum(x) = spaltenweise kummulierte Summe der Matrix

– prod(x) = spaltenweises Produkt

– median(x) = Werte in der „Mitte“

– hist(x) = Häufigkeitsverteilung der Werte

6-15

Page 24: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Matrizen

• Spezielle Matrizen

(Befehle teilweise auch ohne Argumente für Variablen nutzbar)

– zeroes (m,n) = Null-Matrix

– ones (m,n) = Eins-Matrix

– eye (m,n) = Einheitsmatrix

– rand (m,n) = Zufallsmatrix

– inv (A) = Inverse von A,

A * inv(A) = Einheitsmatrix

6-16

Page 25: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Zahlen- bzw. Anzeigeformate

• komplexe Zahlen:

– Vorsicht bei Schleifenvariablen !

• format = Umstellung der Anzeigeoption

für Zahlen, ohne Argument,

um default wieder herzustellen

6-17

Page 26: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

mathematische Funktionen

• Wie in einem wissenschaftlichen grafikfähigen Taschenrechner sind viele

mathematische Grundfunktionen natürlich auch in Matlab verfügbar !

• teilweise anwendbar auf Variablen und Matrizen

– sin () = Sinus

– cos () = Cosinus

– tan () = Tangens

– sinh () = Sinus hyperbolicus

– asin () = arcus Sinus

– abs () = Betrag

– sqrt () = Quadratwurzel

– real () / imag () = Realteil bzw. Imaginärteil einer komplexen Zahl

– round () = Runden (ganzzahlig)

– log () = natürlicher Logarithmus

– log10 () = Logarithmus zur Basis 10

– exp () = e hoch x (Exponential der Basis e)

– y = x.^2 = Quadrat aller Elemente von x

6-18

Page 27: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Logische Operatoren

• anwendbar auf Variablen und Matrizen

– & = log. UND

– | = log. ODER

– ~ = log. NICHT

6-19

Page 28: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Polynome

• Polynome werden als Vektoren (Matrix, Array) dargestellt

– p = [2 2 1]; = p(x) = 2x2

+ 2x + 1

• Verfügbare Funktionen

– roots (p) = Nullstellen

– poly (r) = Polynom für Nullstellen

– polyfit (x,y,n) = Polynombildung (Interpolation) durch Punkt x,y

des n-ten Grades

⇒ x und y können auch Vektoren gleicher Dimension sein

– polyval (p,x) = Werteberechnung

y = p(x) = f(x)

6-20

Page 29: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Interpolation

• interp1(x,y,xi,method) = führt (eindimensionale) Interpolation

der Punkte x,y an den Stellen xi durch

• Beispiel:

– x = [-2 –1 0 1 2];

– y = x.^2

– xi = [-2:0.1:2]

– yi = interp1 (x,y,xi,method)

• Methoden:

– nearest

– linear

– spline

– cubic

• Interpolation für 2 und 3 Dimensionen vorhanden (interp2, interp3)

6-21

Page 30: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

grafische Darstellung

• plot () = Erstellung einer grafischen Ausgabe, das figure-window

plot (p) plot (x,y)

x2 = -2.5:0.1:2.5

y2 = polyval(p,x2)

plot(x,y,'ro',x2,y2)

6-22

Page 31: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

grafische Darstellung

• Stilparameter (Farben und Formen)

• hold on / hold off = ermöglicht mehrere Funktionen in

ein figure-window zu zeichnen

• grid on / grid off = Gitternetzlinien ein- / ausschalten

• xlabel / ylabel = Achsenbeschriftungen

• title () = Diagrammtitel

• text (x,y,‘‘) = Textfeld mit Positionsangabe

• Sonderzeichen

– xlabel(‘0 \leq x‘) = less or equal

– ylabel(‘0\geq y‘) = greater or equal

Farben Linien Markierungen

B blau - +

W weiß -- o

Y gelb : *

R rot -. Square

G grün <none> <

6-23

Page 32: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

grafische Darstellung

• axis = beeinflusst die Achsendarstellung

– axis ( [xmin xmax ymin ymin])

– axis on / axis off = Achsendarstellung ein- / ausschalten

– axis normal = Achsen ergeben sich aus Daten

• area (x,y) = Kurve mit Flächenfüllung

• stairs (x,y) = Treppenfunktion

• stem (x,y) = Darstellung von Einzelpunkten

6-24

Page 33: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

grafische Darstellung

• stem3 (x,y,z) = Darstellung von räumlichen Einzelpunkten

• plot3 (x,y,z) = Darstellung von Kurven im Raum

• Achtung:

In einem figure-window kann nur eine 3D-Kurve dargestellt werden !

• view (S, E) = Verschiebung des Sichtwinkels

– S = Seitenwinkel (-37° default)

– E = Erhebungswinkel (30° default)

• subplot (Zeilen, Spalten, Index)= Aufteilung eines figure-window

– Subplot muss aufgehoben werden

6-25

Page 34: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

grafische Darstellung

• fplot (‘Function‘, [xmin, xmax]) = Funktionsdarstellung

– Function = sin, cos, tan etc.

• Zugriff auf grafische Objekte über einen handle (vgl. Zeiger oder ID)

• handle ist Rückgabewert des Plotbefehls bzw. anderer Darstellungen oder

– gcf = get current figure

– gco = get current object

• handle = 0 für das CommandWindow

• Objekte

– uicontrol() = grafisches Objekt, z.B. Pushbutton

– uicontrol (‘style‘‚‘edit‘)

– set (handle) = Anzeige aller Objekteigenschaften

– set (handle,‘Eigenschaft‘,‘Wert‘) = Setzen der Objekteigenschaft

– get (handle, ‘Eigenschaft‘) = Ausgeben der Objekteigenschaft

6-26

Page 35: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Datentypen: structures

• Ein array mit Datenfelder ist ein structure !

• Versuch.Name = ‘abc‘;

Versuch.Gehalt = 123;

Versuch(3).Name = ‘ghi‘;

Versuch(2).Gehalt = 456;

• Anwendbare Befehle:

– size (Versuch)

– fieldnames (Versuch)

– struct () = explizite Bildung eines structure

Versuch

Name Gehalt

abc 123

456

ghi

6-27

Page 36: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Datentypen: cells

• Cells sind „Container“ für alle anderen Datentypen, so können cells

z.B. mehrere Matrizen enthalten

• Notation über geschweifte Klammer, direkte Adressierung

– Beispiel(1,1) = {‘Beispielname‘}

– Beispiel(1,2) = {[1 2 3]}

• Anwendbare Befehle:

– celldisp () = textuelle Darstellung des cell-Inhaltes

– cellplot () = grafische Darstellung des cell-Inhaltes

– cell () = explizite Bildung eines cell

6-28

Page 37: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Datentypen: strings

• disp (‘abc‘) = Ausgabe von Zeichenketten

• sprintf () = formatierte Ausgabe von Zeichenketten, vgl. C, C++

– %d = Platzhalter für double-Ausgabe

– %s = Platzhalter für string-Ausgabe

– %f = Platzhalter für fixed point-Ausgabe

• Anwendbare Befehle:

– num2str() = konvertiert Zahl zu string

– str2num() = konvertiert string zu Zahl

– strcmp() = vergleicht 2 strings

• Weitere Umwandlungen:

– hex2dec()

– bin2dec()

6-29

Page 38: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Variablen permanent speichern

• save filename a b = speichert die Variablen a und b

in filename.mat im aktuellen Verzeichnis

• load filename = lädt die Datei filename.mat und

erzeugt die gespeicherten Variablen

im Workspace

• Option –append fügt die Daten an bestehende Datei an, gleich benannte

Variablen werden überschrieben !

6-30

Page 39: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Logbuch

• diary filename = speichert alle Ein- und Ausgaben des

Command Window in die Datei filename

im aktuellen Verzeichnis

• diary off = beendet Logbuch-Funktion, speichert Datei

6-31

Page 40: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Scripte schreiben

• Alle Befehle können auch in Dateien mit der Endung .m gespeichert und mit

dem Aufruf aus dem Command Window ausgeführt werden !

• Aufruf des Matlab-Editors edit neu.m

– Nicht vorhandene Dateien werden angelegt !

• Anwendbare Befehle:

– mkdir(‘name‘) = erstellt einen Ordner im aktuellen Arbeitsverzeichnis

– !md name = ! führt Betriebssystembefehle aus

• Dateikopf kann als Hilfeausgabe benutzt werden !

– % als Kommentarzeichen

6-32

Page 41: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Scripte schreiben

• Funktionen können in m-Dateien ausgelagert werden, dabei sollte die

Funktion gleich dem Namen der Datei sein !

• Aufruf über wuerfel(2,2,2)

• Definition von Ein- und Ausgabewerten im Funktionskopf

• nargin gibt die Anzahl der

Eingabewerte zurück

• Subfunktionen sind nur aus

der Hauptfunktionen aufrufbar !

6-33

Page 42: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Scripte schreiben

• eval() = Ausführung von Matlab-Strings

– z.B.: eval (‘load filename‘);

– sinnvoll, wenn Befehle in Funktionen und Schleifen erstellt werden

• Dateihandling

– fid = fopen(‘Name‘, ‘Option‘); = Datei unter Verwendung der

eindeutigen ID öffnen

– status = fclose(fid); = Datei mit der ID schließen

• Option:

– r = lesend

– w = schreibend (wenn nicht vorhanden erstellen)

– a = anhängend

– r+ = lesend und schreibend

• Status:

– 0 = erfolgreich

6-34

Page 43: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Scripte schreiben

• fprintf() = Schreiben in Dateien

• fscanf() = Lesen aus Dateien

– \n = Zeilenumbruch einfügen

– \t = TAB einfügen

• a = input (‘Frage‘)

weißt der Variablen a

den Userinput zu

• pause = wartet auf Tastendruck

• Steuerelemente

(ähnlich zu anderen Programmiersprachen):

– if, elseif, end

– switch, case, end

– try, catch

– for, end

– break

6-35

Page 44: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Scripte debuggen

• Breakpoints im m-File setzen

• Am Breakpoint: „K>>“ im Command Window zur Analyse nutzen

• Variablenwerte mittels Tooltipp abfragbar

• Debugger verlassen oder zum

nächsten Breakpoint springen

6-36

Page 45: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Was gibt es noch ?

• startup.m

– In dieser Datei sind Initialisierungen eingetragen und können entsprechend

erweitert und verändert werden !

– z.B.: Arbeitspfade, Startdialoge, defaultwerte für Ausgaben etc.

• Zeiten

– clock = liefert Systemdatum und Systemzeit

– tic = startet Stopuhr

– toc = stoppt Stopuhr, gibt die vergangene Zeit seit tic aus

• guide = graphical user interface development environment

– Erstellung einer grafischen Oberfläche ohne Programmieraufwand

– Ergebnis sind .fig und .m Dateien, die eingebunden werden können

• magic (n) = liefert eine Matrix n x n, bei der alle Zeilen, Spalten

und Diagonalen immer die gleiche Summe haben

und jede Zahl nur einmal verwendet wird

6-37

Page 46: Matlab – Simulink – Stateflowschrammel.net/ba/matlab/2006-2/Matlab BA Stuttgart 5-6 2006-2.pdf · Daniel Schrammel - BA Stuttgart - Matlab – Simulink – Stateflow Daniel Schrammel

Daniel Schrammel

- BA Stuttgart -

Was gibt es noch ?

• Lösungen von Differentialgleichungen

– ode45 () ordinary differential equation, solver,

siehe Simulink Grundlagen !

• Einbinden von vorhandenen C-Code

– mex wandelt C-Dateien in DLL‘s um

• Achtung:

– Rechengenauigkeit beachten: sin(pi) = 1 * 10

-16

– eps liefert epsilon (kleinste Rundung)

6-38