MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag...

25
Oldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann Dr.-Ing. Michael Beuschel Dr.-Ing. Martin Rau Dipl.-Ing. Ulrich Wohlfarth 7., aktualisierte Auflage

Transcript of MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag...

Page 1: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Oldenbourg Verlag München

MATLAB® – Simulink® – Stateflow®Grundlagen, Toolboxen, Beispiele

von

Dr.-Ing. Anne AngermannDr.-Ing. Michael BeuschelDr.-Ing. Martin RauDipl.-Ing. Ulrich Wohlfarth

7., aktualisierte Auflage

Page 2: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

!"#!$%&'()*+,-./0$&1'2!$/-3,&-4,52)*+,/-6'2!$/'#"!"#!$2+,7

4!,-4,52)*+,-6'2!$/'#"!"#!$2+,7-8,&9,!*+/,2-3!,),-:5"#!7'2!$/-!/-3,&-4,52)*+,/-6'2!$/'#"!"#!$%&'(,;-3,2'!##!,&2,-"!"#!$%&'()*+,-4'2,/-)!/3-!1-./2,&/,2-<",&+22=>??3/"@3A/"@3,-'"&50"'&@

B-CDEE--F#3,/"$5&%-G!)),/)*+'02)8,&#'%-H1"IJ$),/+,!1,&-K2&'L,-EMNO-4APEQRE-S</*+,/T,#,0$/>-UDPVW-MNDNEADXXX@$#3,/"$5&%A8,&#'%@3,

4')-G,&7-,!/)*+#!,L#!*+-'##,&-Y""!#35/%,/-!)2-5&+,",&&,*+2#!*+-%,)*+<292@-Z,3,-[,&X,&25/%-'5L,&+'#"-3,&-H&,/9,/-3,)-\&+,",&&,*+2)%,),29,)-!)2-$+/,-]5)2!115/%-3,)-[,&#'%,)-5/95#^))!%-5/3-)2&'0"'&@-4')-%!#2-!/)",)$/3,&,-0<&-[,&8!,#0^#2!%5/%,/O-_",&),295/%,/O-S!7&$8,&(#15/%,/-5/3-3!,-`!/)=,!*+,&5/%-5/3- ,'&",!25/%-!/-,#,72&$/!)*+,/-Ka)2,1,/@

b,72$&'2>-S'&2!/-:&,5LI,&)2,##5/%>-c$/)2'/9,-S<##,&`!/"'/3%,)2'#25/%>-+'5),&-#'*$5&H,)'12+,&)2,##5/%>-H&'(7-d-4&5*7-H1"IO-S</*+,/

4!,),)-:'=!,&-!)2-'#2,&5/%)",)2^/3!%-/'*+-4.6?.KF-VRDQ@

.K 6---VRPAeAMPQARDNPNAD

Dr.-Ing. Anne AngermannO-T\-S</*+,/Dr.-Ing. Michael BeuschelO-c$/2!-T,1!*-1!*&$,#,*2&$/!*-H1"IO-./%$#)2'32Dr.-Ing. Martin RauO- SG-YHO-S</*+,/Dipl.-Ing. Ulrich WohlfarthO-:'2,/2'/X'#2)7'/9#,!-c+'&&!,&O-J'==-f-b!,"'5O-Y5%)"5&%

SYTbY -'/3-K!15#!/7-'&,-&,%!)2,&,3-2&'3,1'&7)-$0-T+,-S'2+G$&7)O-./*@-K,,O--XXX@1'2+X$&7)@*$1?2&'3,1'&7)-0$&-'-#!)2-$0-'33!2!$/'#-2&'3,1'&7)@-T+,-S'2+G$&7)-:5"#!)+,&-b$%$-!3,/2!0!,)-"$$7)-2+'2-*$/2'!/-SYTbY -'/3-K!15#!/7-*$/2,/2@-\),3-X!2+-=,&1!))!$/@-T+,-S'2+G$&7)-3$,)-/$2-X'&&'/2-2+,-'**5&'*a-$0-2+,-2,g2-$&-,g,&*!),)-!/-2+!)-"$$7@-T+!)-"$$7h)-5),-$&-3!)*5))!$/-$0-SYTbY -'/3-K!15#!/7-)$02X'&,-$&-&,#'2,3-=&$35*2)-3$,)-/$2-*$/)2!252,-,/3$&A),1,/2-$&-)=$/)$&)+!=-"a-T+,-S'2+G$&7)-$0-'-='&2!*5#'&-5),-$0-2+,-SYTbY -'/3-K!15#!/7-)$02X'&,-$&-&,#'2,3-=&$35*2)@

i$&-SYTbY j-'/3-K!15#!/7j-=&$35*2-!/0$&1'2!$/O-$&-!/0$&1'2!$/-$/-$2+,&-&,#'2,3-=&$35*2)O-=#,'),-*$/2'*2>

T+,-S'2+G$&7)O-./*@e-Y==#,-I!##-4&!8,6'2!*7O-SYO-DERQDACDVP-\KYT,#>-NDPAQMRARDDD;-i'g>-NDPAQMRARDDE`A1'!#>-!/0$k1'2+X$&7)@*$1;-G,">-XXX@1'2+X$&7)@*$1

Page 3: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Vorwort zur siebten Auflage

Die 7. Auflage wurde im Hinblick auf das MATLAB Release 2011a vollstandig uber-arbeitet und erganzt, ohne jedoch den Umfang des Buches wesentlich zu erhohen. DasErgebnis ist ein kompaktes Lehrbuch fur den Einsteiger und gleichzeitig ein ubersicht-liches Nachschlagewerk fur den fortgeschrittenen Matlab-Anwender.

Die dem Buch beigelegte CD-ROM ist mit einem benutzerfreundlichen HTML-Navigator versehen. Neben den uberarbeiteten Beispielen, Ubungsaufgaben und Losun-gen enthalt die CD-ROM wieder eine Bibliothek der Autoren mit nutzlichen Extras furMatlab und Simulink.

Danken mochten wir zuallererst Herrn Professor i. R. Dierk Schroder fur seine umfas-sende Unterstutzung bei der Erstellung dieses Buches. Ausgehend von seiner Idee undseinem unermudlichen Engagement, eine langst notwendige Vorlesung zum Softwarepa-ket Matlab und Simulink fur Studenten der Fachrichtungen Energietechnik, Automa-tisierungstechnik und Mechatronik ins Leben zu rufen, konnten wir in sehr freier undkollegialer Arbeitsweise ein Skriptum zu dieser Vorlesung erstellen.

Nach einem ruhestandsbedingten Wechsel kann dieses Engagement unter Leitung vonHerrn Professor Ralph Kennel, Ordinarius des Lehrstuhls fur Elektrische Antriebssyste-me und Leistungselektronik der Technischen Universitat Munchen, in vollem Umfangfortgesetzt werden. Fur seine immer wohlwollende Unterstutzung sowie fur die vertrau-ensvolle und angenehme Zusammenarbeit danken wir ihm daher sehr herzlich.

Die außerst positive Resonanz von Studenten unterschiedlichster Fachrichtungen sowiezahlreiche Anfragen aus Forschung und Industrie ermutigten uns, das ursprunglicheSkriptum einem großeren Leserkreis zu erschließen und als Buch zu veroffentlichen.Aufgrund der regen Nachfrage erscheint dieses Buch nun bereits in seiner 7. Auflage.Nicht zuletzt danken wir daher unseren zahlreichen Lesern, allen Dozenten, Studentenund Kollegen, die uns dabei mit ihren Anregungen und ihrer stets wohlwollenden Kritikunterstutzten und noch unterstutzen werden.

Fur Verbesserungvorschlage und Hinweise auf noch vorhandene Fehler sind wir jederzeitdankbar und werden sie auf der Internetseite www.matlabbuch.de neben weiterenaktuellen Informationen rund um Matlab veroffentlichen.

Dem Oldenbourg Verlag danken wir fur die Bereitschaft, dieses Buch zu verlegen. Be-sonderer Dank gilt hierbei Frau Monch, Frau Dr. Bromm, Herrn Dr. Preuß sowie HerrnSchmid fur ihre hilfreiche Unterstutzung wahrend der Entstehung und fur die Ubernah-me des Lektorats.

Munchen Anne AngermannMichael BeuschelMartin RauUlrich Wohlfarth

Page 4: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

VI Vorwort

Vorwort zur ersten Auflage

Das vorliegende Buch”Matlab – Simulink – Stateflow“ wendet sich an Studenten und

Ingenieure, die das Simulationswerkzeug Matlab/Simulink effizient einsetzen wollen.

Zielsetzung dieses Buches ist es, dem Leser einen direkten Zugang zum Anwen-den der umfangreichen Moglichkeiten dieses Programmpaketes zu ermoglichen. Eswird pragnant dargestellt, welche wesentlichen Funktionen in Matlab und Simulinkverfugbar sind – beispielsweise Ein- und Ausgabe, grafische Darstellungen oder dieverschiedenen Toolboxen und Blocksets fur die Behandlung zeitkontinuierlicher undzeitdiskreter linearer und nichtlinearer Systeme sowie ereignisdiskreter Systeme – undwie diese Funktionen zu nutzen sind. Dies wird außerdem an zahlreichen Beispielenerlautert. Um den Ansatz pragnante Einfuhrung zu unterstutzen, sind zudem zu je-dem Abschnitt Ubungsaufgaben mit deren Losungen auf einer CD-ROM beigefugt. DerLeser hat somit die Option, sein Verstandnis des betreffenden Kapitels selbstandig zuvertiefen und sofort praktisch zu uberprufen.

Um den Umfang dieses Buches zu begrenzen, sind keine theoretischen Abhandlungenz.B. uber Integrationsverfahren, die Grundlagen der Regelungstechnik oder der Sig-nalverarbeitung bzw. deren Implementierungen enthalten. Fur den interessierten Leserfinden sich jedoch in jedem Kapitel Hinweise auf vertiefende Literatur.

Ausgangspunkt dieses Buches war meine Uberlegung, Studenten so fruh wie moglich mitden Vorteilen des wertvollen Werkzeuges Simulation bekannt zu machen. Dies beginntbei regelungstechnischen Aufgabenstellungen bereits bei der Modellbildung der Kom-ponenten des betrachteten Systems und der Erstellung des Simulationsprogramms. Essetzt sich fort bei der Validierung der Modelle sowie der grafischen Veranschaulichungdes Systemverhaltens in den verschiedenen Arbeitspunkten und bei unterschiedlichenRandbedingungen, etwa aufgrund variabler Parameter, der Systemanalyse, der Reg-lersynthese sowie der Optimierung des Gesamtsystems. Ausgehend von diesen Uber-legungen wurde ein Konzept fur dieses Buch erarbeitet, damit der Leser die verschie-denen Aufgabenstellungen moglichst anschaulich kennen lernt. Dieses Konzept wurdeaufgrund langjahriger Erfahrung bei Vorlesungen, Studien- und Diplomarbeiten, Dis-sertationen und Industrieprojekten kontinuierlich verbessert.

Meine Mitarbeiter und ich hoffen, allen Interessierten in Studium und Beruf mit diesemBuch einen anschaulichen und effizienten Einstieg in die Simulation mit Matlab undSimulink geben zu konnen.

Munchen Dierk Schroder

Page 5: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Inhaltsverzeichnis

1 Einfuhrung 1

2 MATLAB Grundlagen 5

2.1 Erste Schritte mit Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.1 Der Matlab-Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.1.2 Die Matlab-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.3 Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.1.4 Mathematische Funktionen und Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.2 Variablen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.1 Datentypen in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.2 Vektoren und Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.3 Mathematische Funktionen und Operatoren fur Vektoren und Matrizen. 122.2.4 Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.2.5 Cell Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.2.6 Verwalten von Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2.3 Ablaufsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.1 Vergleichsoperatoren und logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.2 Verzweigungsbefehle if und switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.3 Schleifenbefehle for und while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.4 Abbruchbefehle continue, break und return . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.4 Der Matlab-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.5 Matlab-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.5.1 Funktionen mit variabler Parameterzahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.5.2 Lokale, globale und statische Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.5.3 Hilfetext in Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.5.4 Function Handles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.5.5 Funktionen als Inline Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.5.6 P-Code und clear functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.6 Code-Optimierung in Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.6.1 Der Matlab-Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.6.2 Optimierung von Rechenzeit und Speicherbedarf . . . . . . . . . . . . . . . . . . . . . . . 302.6.3 Tipps zur Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.7 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7.1 Rechengenauigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7.2 Fibonacci-Folge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

Page 6: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

VIII Inhaltsverzeichnis

2.7.3 Funktion gerade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.7.4 Berechnungszeiten ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3 Eingabe und Ausgabe in MATLAB 35

3.1 Steuerung der Bildschirmausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Benutzerdialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.2.1 Text in Matlab (Strings) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.2.2 Eingabedialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.2.3 Formatierte Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.3 Import und Export von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.1 Standardformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.2 Formatierte Textdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.3.3 Binardateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3.4 Betriebssystemaufruf und Dateiverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.5 Grafische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.5.1 Die Figure – Grundlage einer Matlab-Grafik . . . . . . . . . . . . . . . . . . . . . . . . . . 433.5.2 Achsen und Beschriftung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.5.3 Plot-Befehle fur zweidimensionale Grafiken (2D-Grafik) . . . . . . . . . . . . . . . . 463.5.4 Plot-Befehle fur dreidimensionale Grafiken (3D-Grafik) . . . . . . . . . . . . . . . . . 503.5.5 Perspektive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.5.6 Importieren, Exportieren und Drucken von Grafiken . . . . . . . . . . . . . . . . . . . 53

3.6 Grafische Benutzeroberflache (GUI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543.6.1 GUI-Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553.6.2 GUI-Funktionalitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583.6.3 GUI ausfuhren und exportieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.6.4 Aufbau des Application-M-File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

3.7 Tipps rund um die Matlab-Figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.8 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.8.1 Harmonisches Mittel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.8.2 Einschwingvorgang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.8.3 Gauß-Glocke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.8.4 Spirale und Doppelhelix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673.8.5 Funktion geradevek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4 Differentialgleichungen in MATLAB 69

4.1 Anfangswertprobleme (ODEs, DAEs und DDEs) . . . . . . . . . . . . . . . . . . . . . . . 694.1.1 Gewohnliche Differentialgleichungen (ODEs) . . . . . . . . . . . . . . . . . . . . . . . . . . . 694.1.2 Differential-algebraische Gleichungen (DAEs) . . . . . . . . . . . . . . . . . . . . . . . . . . 824.1.3 Differentialgleichungen mit Totzeiten (DDEs) . . . . . . . . . . . . . . . . . . . . . . . . . . 854.1.4 Implizite Differentialgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

4.2 Randwertprobleme fur gewohnliche Differentialgleichungen . . . . . . . . . . . . . 90

Page 7: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Inhaltsverzeichnis IX

4.3 Partielle Differentialgleichungen (PDEs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

4.4 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.4.1 Feder-Masse-Schwinger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.4.2 Elektrischer Schwingkreis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.4.3 Springender Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1014.4.4 Kettenlinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101

5 Regelungstechnische Funktionen – Control System Toolbox 103

5.1 Modellierung linearer zeitinvarianter Systeme als LTI-Modelle . . . . . . . . . . 1035.1.1 Ubertragungsfunktion – Transfer Function TF . . . . . . . . . . . . . . . . . . . . . . . . . 1045.1.2 Nullstellen-Polstellen-Darstellung – Zero-Pole-Gain ZPK . . . . . . . . . . . . . . . 1065.1.3 Zustandsdarstellung – State-Space SS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095.1.4 Frequenzgang-Daten-Modelle – Frequency Response Data FRD . . . . . . . . 1105.1.5 Zeitdiskrete Darstellung von LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125.1.6 Zeitverzogerungen in LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

5.2 Arbeiten mit LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.2.1 Eigenschaften von LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1175.2.2 Schnelle Datenabfrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205.2.3 Rangfolge der LTI-Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1215.2.4 Vererbung von LTI-Modell-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1225.2.5 Umwandlung in einen anderen LTI-Modell-Typ . . . . . . . . . . . . . . . . . . . . . . . . 1225.2.6 Arithmetische Operationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1235.2.7 Auswahlen, verandern und verknupfen von LTI-Modellen. . . . . . . . . . . . . . . 1255.2.8 Spezielle LTI-Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285.2.9 Umwandlung zwischen zeitkontinuierlichen und zeitdiskreten Systemen . 129

5.3 Analyse von LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.3.1 Allgemeine Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.3.2 Modell-Dynamik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.3.3 Systemantwort im Zeitbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1435.3.4 Systemantwort im Frequenzbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1475.3.5 Interaktive Modellanalyse mit dem LTI-Viewer . . . . . . . . . . . . . . . . . . . . . . . . . 1565.3.6 Ordnungsreduzierte Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1595.3.7 Zustandsbeschreibungsformen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

5.4 Reglerentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.4.1 Reglerentwurf mittels Wurzelortskurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675.4.2 Reglerentwurf mit dem Control and Estimation Tools Manager und dem

SISO Design Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1715.4.3 Zustandsregelung und Zustandsbeobachtung . . . . . . . . . . . . . . . . . . . . . . . . . . . 1735.4.4 Reglerentwurf mittels Polplatzierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1755.4.5 Linear-quadratisch optimale Regelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

5.5 Probleme der numerischen Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.5.1 Fehlerbegriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1865.5.2 Kondition eines Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

Page 8: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

X Inhaltsverzeichnis

5.5.4 Bewertung der LTI-Modell-Typen nach numerischen Gesichtspunkten . . 189

5.6 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.6.1 Erstellen von LTI-Modellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1895.6.2 Verzogerte Ubertragungsglieder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1915.6.3 Verzogerte Ubertragungsglieder zeitdiskretisiert . . . . . . . . . . . . . . . . . . . . . . . . 1925.6.4 Typumwandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.6.5 Stabilitatsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1935.6.6 Regelung der stabilen PT2-Ubertragungsfunktion . . . . . . . . . . . . . . . . . . . . . . 1955.6.7 Regelung der instabilen PT2-Ubertragungsfunktion . . . . . . . . . . . . . . . . . . . . 1965.6.8 Kondition und numerische Instabilitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

6 Signalverarbeitung – Signal Processing Toolbox 201

6.1 Aufbereitung der Daten im Zeitbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2016.1.1 Interpolation und Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2016.1.2 Anderung der Abtastrate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2046.1.3 Weitere Werkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

6.2 Spektralanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2076.2.1 Diskrete Fouriertransformation (DFT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2076.2.2 Averaging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.2.3 Fensterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2096.2.4 Leistungsspektren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

6.3 Korrelation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

6.4 Analoge und Digitale Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2196.4.1 Analoge Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2196.4.2 Digitale FIR-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2216.4.3 Digitale IIR-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2236.4.4 Filterentwurf mit Prototyp-Tiefpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

6.5 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.5.1 Signaltransformation im Frequenzbereich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.5.2 Signalanalyse und digitale Filterung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2296.5.3 Analoger Bandpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306.5.4 Digitaler IIR-Bandpass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

7 Optimierung – Optimization Toolbox 231

7.1 Inline Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232

7.2 Algorithmensteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

7.3 Nullstellenbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2367.3.1 Skalare Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2367.3.2 Vektorwertige Funktionen / Gleichungssysteme . . . . . . . . . . . . . . . . . . . . . . . . 240

7.4 Minimierung nichtlinearer Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

7.5 Minimierung unter Nebenbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

5.5.3 Numerische Instabilitat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188

Page 9: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Inhaltsverzeichnis XI

7.5.1 Nichtlineare Minimierung unter Nebenbedingungen . . . . . . . . . . . . . . . . . . . . 2517.5.2 Quadratische Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577.5.3 Lineare Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260

7.6 Methode der kleinsten Quadrate (Least Squares) . . . . . . . . . . . . . . . . . . . . . . . 264

7.7 Optimierung eines Simulink-Modells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

7.8 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2747.8.1 Nullstellenbestimmung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2747.8.2 Losen von Gleichungssystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2747.8.3 Minimierung ohne Nebenbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2747.8.4 Minimierung unter Nebenbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2747.8.5 Ausgleichspolynom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2757.8.6 Curve Fitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2757.8.7 Lineare Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

8 Simulink Grundlagen 277

8.1 Starten von Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277

8.2 Erstellen und Editieren eines Signalflussplans . . . . . . . . . . . . . . . . . . . . . . . . . . 281

8.3 Simulations- und Parametersteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

8.4 Signale und Datenobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2848.4.1 Arbeiten mit Signalen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2848.4.2 Arbeiten mit Datenobjekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2868.4.3 Der Model Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

8.5 Signalerzeugung und -ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2898.5.1 Bibliothek: Sources – Signalerzeugung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2898.5.2 Bibliothek: Sinks, Signal Logging und der Simulation Data Inspector . . . . 2958.5.3 Der Signal & Scope Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

8.6 Mathematische Verknupfungen und Operatoren . . . . . . . . . . . . . . . . . . . . . . . . 3058.6.1 Bibliothek: Math Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3058.6.2 Bibliothek: Logic and Bit Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

8.7 Simulationsparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3098.7.1 Die Configuration Parameters Dialogbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3098.7.2 Fehlerbehandlung und Simulink Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

8.8 Verwaltung und Organisation eines Simulink-Modells . . . . . . . . . . . . . . . . . . . 3268.8.1 Arbeiten mit Callback Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3268.8.2 Der Model Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3298.8.3 Bibliotheken: Signal Routing und Signal Attributes – Signalfuhrung und

-eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3308.8.4 Drucken und Exportieren eines Simulink-Modells . . . . . . . . . . . . . . . . . . . . . . . 334

8.9 Subsysteme und Model Referencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3358.9.1 Erstellen von Subsystemen / Bibliothek: Ports & Subsystems . . . . . . . . . . . 3358.9.2 Maskierung von Subsystemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

Page 10: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

XII Inhaltsverzeichnis

8.9.3 Erstellen einer eigenen Blockbibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3438.9.4 Model Referencing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

8.10 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3488.10.1 Nichtlineare Differentialgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3488.10.2 Gravitationspendel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

9 Lineare und nichtlineare Systeme in Simulink 353

9.1 Bibliothek: Continuous – Zeitkontinuierliche Systeme . . . . . . . . . . . . . . . . . . . 353

9.2 Analyse von Simulationsergebnissen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3599.2.1 Linearisierung mit der linmod-Befehlsfamilie . . . . . . . . . . . . . . . . . . . . . . . . . . . 3599.2.2 Bestimmung eines Gleichgewichtspunkts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3649.2.3 Linearisierung mit dem Simulink Control Design . . . . . . . . . . . . . . . . . . . . . . . 365

9.3 Bibliothek: Discontinuities – Nichtlineare Systeme . . . . . . . . . . . . . . . . . . . . . . 368

9.4 Bibliothek: Lookup Tables – Nachschlagetabellen . . . . . . . . . . . . . . . . . . . . . . . 372

9.5 Bibliothek: User-Defined Functions – Benutzer-definierbare Funktionen . . 3749.5.1 Bibliotheken: Model Verification und Model-Wide Utilities – Prufblocke

und Modell-Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378

9.6 Algebraische Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379

9.7 S-Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

9.8 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3889.8.1 Modellierung einer Gleichstrom-Nebenschluss-Maschine (GNM) . . . . . . . . 3889.8.2 Modellierung einer Pulsweitenmodulation (PWM). . . . . . . . . . . . . . . . . . . . . . 3889.8.3 Aufnahme von Bode-Diagrammen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390

10 Abtastsysteme in Simulink 393

10.1 Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

10.2 Bibliothek: Discrete – Zeitdiskrete Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394

10.3 Simulationsparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39710.3.1 Rein zeitdiskrete Systeme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39810.3.2 Hybride Systeme (gemischt zeitdiskret und zeitkontinuierlich) . . . . . . . . . . 399

10.4 Der Model Discretizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402

10.5 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40510.5.1 Zeitdiskreter Stromregler fur GNM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40510.5.2 Zeitdiskreter Anti-Windup-Drehzahlregler fur GNM. . . . . . . . . . . . . . . . . . . . 405

11 Regelkreise in Simulink 409

11.1 Die Gleichstrom-Nebenschluss-Maschine GNM . . . . . . . . . . . . . . . . . . . . . . . . . 40911.1.1 Initialisierung der Maschinendaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41011.1.2 Simulink-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

Page 11: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

Inhaltsverzeichnis XIII

11.2 Untersuchung der Systemeigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41311.2.1 Untersuchung mit Simulink . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41311.2.2 Untersuchung des linearisierten Modells mit Matlab und der Control

System Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41411.2.3 Interaktive Untersuchung eines Modells mit Simulink Control Design . . . 416

11.3 Kaskadenregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.3.1 Stromregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41911.3.2 Drehzahlregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

11.4 Zustandsbeobachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42411.4.1 Luenberger-Beobachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42611.4.2 Storgroßen-Beobachter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

11.5 Zustandsregelung mit Zustandsbeobachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

11.6 Initialisierungsdateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.6.1 Gleichstrom-Nebenschluss-Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.6.2 Stromregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43311.6.3 Drehzahlregelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43411.6.4 Grundeinstellung Zustandsbeobachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43411.6.5 Zustandsbeobachtung mit Luenberger-Beobachter . . . . . . . . . . . . . . . . . . . . . . 43511.6.6 Zustandsbeobachtung mit Storgroßen-Beobachter . . . . . . . . . . . . . . . . . . . . . . 43511.6.7 Zustandsregelung mit Zustandsbeobachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.6.8 Zustandsregelung mit Luenberger-Beobachter . . . . . . . . . . . . . . . . . . . . . . . . . . 43611.6.9 Zustandsregelung mit Storgroßen-Beobachter. . . . . . . . . . . . . . . . . . . . . . . . . . . 437

11.7 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.7.1 Zustandsdarstellung GNM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.7.2 Systemanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43811.7.3 Entwurf eines Kalman-Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43911.7.4 Entwurf eines LQ-optimierten Zustandsreglers . . . . . . . . . . . . . . . . . . . . . . . . . 439

12 Stateflow 441

12.1 Elemente von Stateflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44212.1.1 Grafische Elemente eines Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44412.1.2 Chart-Eigenschaften und Trigger-Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45412.1.3 Nichtgrafische Elemente eines Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

12.2 Strukturierung und Hierarchiebildung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46112.2.1 Superstates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46112.2.2 Subcharts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46612.2.3 Grafische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46812.2.4 Truth Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47012.2.5 Matlab Functions in Stateflow Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47312.2.6 Simulink Functions in Stateflow. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

12.3 Action Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47612.3.1 Numerische Operatoren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47612.3.2 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

Page 12: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

XIV Inhaltsverzeichnis

12.3.3 Unare Operatoren und Zuweisungsaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47612.3.4 Detektion von Wertanderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47712.3.5 Datentyp-Umwandlungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47812.3.6 Aufruf von Matlab-Funktionen und Zugriff auf den Workspace . . . . . . . . 47912.3.7 Variablen und Events in Action Language. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48112.3.8 Temporallogik-Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

12.4 Anwendungsbeispiel: Getrankeautomat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

12.5 Anwendungsbeispiel: Steuerung eines Heizgeblases . . . . . . . . . . . . . . . . . . . . . 486

12.6 Anwendungsbeispiel: Springender Ball . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

12.7 Ubungsaufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49112.7.1 Mikrowellenherd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49112.7.2 Zweipunkt-Regelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492

Symbolverzeichnis 493

Literaturverzeichnis 497

Index 501

Page 13: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

42 3 Eingabe und Ausgabe in MATLAB

Datenimport und -export binar – Formate

uchar, uint8, uint16, uint32, uint64 Formate ohne Vorzeichenint8, int16, int32, int64 Formate mit Vorzeichensingle, double, float32, float64 Formate FließkommabitN, ubitN, 1 ≤ N ≤ 64 N Bits mit/ohne Vorzeichen

3.4 Betriebssystemaufruf und Dateiverwaltung

Damit Matlab ein aufgerufenes M-File oder Daten findet, muss sich die zugehorigeDatei im aktuellen Verzeichnis oder im Matlab-Pfad befinden. Der Matlab-Pfadkann im Path Browser eingesehen und geandert werden. Der Aufruf erfolgt uber dasMenu File/Set Path oder den Befehl pathtool. Im Path Browser kann man uber denButton Add Folder dem Matlab-Pfad ein neues Verzeichnis hinzufugen.

Ein Ausrufezeichen (!) am Beginn einer Zeile veranlasst Matlab, den Rest der Zeiledem Betriebssystem als Kommando zu ubergeben. Werden Ruckgabewerte benotigt,eignet sich der Befehl [status, ergebnis] = system (kommando). Hilfreich kann hierauch der machtige (aber meist unubersichtliche!) Befehl eval(string) sein: Dieser Be-fehl interpretiert einen String als Matlab-Befehl. Das folgende Beispiel erstellt einVerzeichnis, weist dessen Namen der Struct-Variablen verzeichnis zu und loscht dasVerzeichnis wieder. Eine weitere Ubersicht erhalt man mit help general.

>> mkdir (’testverzeichnis’) % Verzeichnis anlegen (MATLAB-Befehl)>> verzeichnis = dir (’testverzeic*’); % Dir-Befehl ausfuhren (MATLAB-Befehl)>> eval ([’!rmdir ’, verzeichnis.name]) % Verzeichnis loschen (Betriebssystem)

Die nachfolgend aufgefuhrten Matlab-Befehle erlauben, ahnlich wie in gangigen Be-triebssystemen, ausMatlab heraus Verzeichnisse undDateien zu verwalten (manuellist dies naturlich auch im Current Folder Browser moglich).

Betriebssystemaufruf und Dateiverwaltung

cd verzeichnis Verzeichniswechselpwd Anzeige des aktuellen Verzeichnissesdir [auswahl] Anzeige Verzeichnis-Inhaltls [auswahl] Anzeige Verzeichnis-Inhalt

mkdir verzeichnis Neues Verzeichnis erstellencopyfile quelle ziel Datei kopierendelete datei Datei loschen

! kommando Betriebssystemaufrufsystem (kommando) Betriebssystemaufruf mit Ruckgabewerteneval (string) String als Matlab-Befehl interpretieren

Page 14: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 43

3.5 Grafische DarstellungInsbesondere bei großen Datenmengen ist eine numerische Ausgabe wenig anschaulich.Daher werden nun Moglichkeiten zur grafischen Ausgabe behandelt. Zuerst werden dieMatlab-Figure sowie die fur alle grafischen Ausgaben gleichermaßen gultigen Befehle,wie Achsen-Skalierung und Beschriftung, angesprochen. In den Kapiteln 3.5.3 und 3.5.4werden die spezifischen Befehle fur zwei- und dreidimensionale Grafiken beschriebenund an Beispielen ausfuhrlich dargestellt; Kapitel 3.5.6 zeigt Moglichkeiten zum Import,Export und Drucken von Grafiken.

3.5.1 Die Figure – Grundlage einer Matlab-Grafik

Den Rahmen fur alle grafischen Ausgaben stellt die so genannteMatlab-Figure dar, diemit figure erzeugt und mit einer Nummer versehen wird. Eine vorhandene Figure kannmit figure (nummer) angesprochen werden, die Nummer (eigentlich das Handle) einerFigure erhalt man mit gcf (Get handle to Current Figure). Alle Grafikbefehle wirkenstets auf die zuletzt erzeugte bzw. angesprochene Figure.

Abb. 3.1 wurde mit den folgenden Befehlen erzeugt. Falls keine Nummer explizit ange-geben wird, vergibt Matlab diese automatisch (hier 1).

>> figure>> plot (diff (primes (500))) % Abstand zwischen Primzahlen < 500

Abb. 3.1: Matlab-Figure

Eine Figure kann mit subplot (zeilen, spalten, zaehler) gleichmaßig in so genannteSubplots unterteilt werden. Der jeweils angesprochene Subplot wird durch die Varia-ble zaehler bestimmt; es wird zeilenweise von links oben durchnummeriert. Sind alleArgumente einstellig, konnen sie ohne Komma (und ohne Leerzeichen!) hintereinandergeschrieben werden (siehe Beispiel auf Seite 47).

Der Inhalt einer vorhandenen Figure kann mit clf (Clear Figure) geloscht werden.Die Figure selbst kann mit close nummer geschlossen (d.h. geloscht) werden. closeschließt die aktuelle Figure; close all schließt alle geoffneten Figures.

Matlab verwaltet alle Grafiken objektorientiert. Die Objekt-Hierarchie fur Grafikob-jekte ist in Abb. 3.2 dargestellt. Die Eigenschaften der aktuellen Figure erhalt man mitdem Befehl get (FigureHandle) bzw. get (gcf), die Eigenschaften des aktuellen Sub-plots uber das Handle gca (Get handle to Current Axis) entsprechend mit get (gca).

Page 15: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

44 3 Eingabe und Ausgabe in MATLAB

Des Weiteren gibt set (gcf) bzw. set (gca) eine Liste der moglichen Parameter aus.Das Abfragen und Setzen einzelner Eigenschaften geschieht wie folgt:5)

get (handle, ’eigenschaft ’)

set (handle, ’eigenschaft’, wert)

Bei etlichen Grafikbefehlen (z.B. plot, xlabel, text, legend, siehe ab Kap. 3.5.3) lassensich Eigenschaften und zugehorige Werte in gleicher Weise als zusatzliche Parameterubergeben.

Root

Figure

Axes UIcontrol UImenu UIcontextmenu

Image Light Line Patch Rectangle Surface Text

Abb. 3.2: Objekt-Hierarchie fur Grafikobjekte

Uber das Figure-Menu View kann der Property Editor aufgerufen werden; er erleichtertdas Setzen einzelner Eigenschaften der Figure und aller anderen Grafikobjekte, wieAchsen, Beschriftung, Linienstarken, Skalierung etc. Ist der Button aktiviert, konnenObjekte in der Figure angeklickt und dann deren Eigenschaften verandert werden.

Abb. 3.3: Matlab-Figure mit Werkzeugen

5) Die ubergebenen Werte konnen je nach Eigenschaft eine Zahl, ein Array oder ein String sein.

Page 16: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 45

Uber Insert kann die Figure mit frei platzierbaren Grafik- und Textobjekten versehenwerden. Diese Funktionen sind auch uber das Figure-Menu View/Plot Edit Toolbar unddie dann eingeblendete Funktionsleiste verfugbar (siehe Abb. 3.3).

Weitere Werkzeuge konnen ebenfalls uber das Figure-Menu View aufgerufen werden:Die Figure Palette erlaubt das Hinzufugen weiterer Daten. Uber New Subplots wer-den Subplots eingefugt. Ebenso konnen Subplots mit der Maus verschoben, skaliertsowie auch geloscht werden. Variables bietet im Kontextmenu an, verfugbare Variablenzu plotten. Im Plot Browser konnen Objekte der Figure einzeln unsichtbar geschal-tet werden. Die Figure-Buttons aktivieren bzw. deaktivieren die zuvor gewahltenWerkzeuge (siehe ebenfalls Abb. 3.3).

Das so gestaltete Layout einer Figure kann uber das Figure-Menu File/Generate Codeals Matlab-Funktion ausgegeben werden. Diese lasst sich dann mit anderen Datenwiederverwenden.

Grafik allgemein

figure [(nummer)] Erzeugen oder Ansprechen einer Figuresubplot (zeilen, spalten, zaehler) Erzeugen oder Ansprechen eines Subplots

clf Rucksetzen der aktuellen Figureclose nummer Figure nummer schließen (loschen)close all Alle Figures schließen (loschen)

gcf Aktuelle Figurenummer (Handle)gca Aktueller Subplot (Handle)get (handle, ’eigenschaft ’) Eigenschaft auslesenset (handle, ’eigenschaft ’, wert) Eigenschaft setzen

3.5.2 Achsen und Beschriftung

Die Skalierung der Achsen erfolgt automatisch, kann aber auch manuell mitdem Befehl axis ([xmin, xmax, ymin, ymax]) fur zweidimensionale bzw. mitaxis ([x1, x2, y1, y2, z1, z2]) fur dreidimensionale Grafiken eingestellt werden.Mit axis (’auto’) wird die Skalierung wieder Matlab uberlassen. Die Befehlexlim ([xmin, xmax]), ylim und zlim skalieren jeweils die angegebene Achse.

Der Befehl grid on erzeugt ein Gitternetz entsprechend der Achsenteilung.6)

Zur genaueren Betrachtung von Ausschnitten eines Plots kann nach dem Befehlzoom on (oder nach Anklicken eines der Buttons im Figure-Fenster) die Figuremit der Maus gezoomt werden. Ein Doppelklick in die Figure stellt die ursprunglicheSkalierung wieder her. Uber das Menu Tools/Pan oder lasst sich der Ausschnitt einergezoomten Figure mit der Maus verschieben (weitere Optionen uber Kontextmenu).

Zur Beschriftung der Plots bestehen mehrere Moglichkeiten: Mit xlabel (string)(und entsprechend ylabel und zlabel) werden die Achsen beschriftet; mit

6) Anderung der Achsenteilung mittels Property Editor oder wie im Beispiel auf Seite 49 gezeigt.

Page 17: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

46 3 Eingabe und Ausgabe in MATLAB

dem Befehl title (string) wird eine Uberschrift erzeugt. Dabei konnen ent-sprechend der LATEX-Konventionen hoch- und tiefgestellte Zeichen sowie grie-chische Buchstaben verwendet werden.7) So ergibt z.B. xlabel (’\alpha_{yz} =b^3/c \rightarrow \pm \infty’) die Beschriftung αyz = b

3/c→ ±∞.

Mit legend (string1, string2 ... [, ’Location’, richtung]) kann eine Legende erzeugtwerden. Die Strings werden entsprechend der Reihenfolge der plot-Befehle zugeordnet.Die Position der Legende wird mit richtung als (englische) Himmelsrichtung angege-ben: ’NE’ platziert z.B. rechts oben (Standard), ’W’ links, ’Best’ automatisch und’BestOutside’ neben dem Plot. Der Button schaltet eine Legende zwischen sicht-bar und unsichtbar um. Weitere Infos uber doc legend.

Der Befehl text (x, y, string) schließlich platziert einen Text an einer beliebigenKoordinate im aktuellen Plot. Den genannten Beschriftungsbefehlen konnen optionalweitere Parameter ubergeben werden, z.B. title(’Uberschrift’,’FontSize’,16,’FontWeight’,’Bold’). Weitere Infos zur grafischen Ausgabe erhalt man mit helpgraph2d, help graph3d und help specgraph (Spezialbefehle); siehe auch Kap. 3.7.

Grafik: Achsen

axis ([xmin, xmax, ymin, ymax]) Manuelle Achsen-Skalierung (2D)axis ([x1, x2, y1, y2, z1, z2]) Manuelle Achsen-Skalierung (3D)axis (’auto’) Automatische Achsen-Skalierung

xlim ([xmin, xmax]) Manuelle Skalierung der x-Achseylim ([ymin, ymax]) Manuelle Skalierung der y-Achsezlim ([zmin, zmax]) Manuelle Skalierung der z-Achse

grid [on | off] Gitternetz ein | auszoom [on | off] Zoomfunktion ein | aus

Grafik: Beschriftung

xlabel (string) Beschriftung der x-Achseylabel (string) Beschriftung der y-Achsezlabel (string) Beschriftung der z-Achse

title (string) Uberschrift erzeugentext (x, y, string) Text an Koordinate (x, y) platzierenlegend (string1, ... [, ’Location’, ...]) Legende erzeugen

3.5.3 Plot-Befehle fur zweidimensionale Grafiken

Der Befehl plot (xwerte, ywerte ... [, plotstil]) zeichnet die als Wertepaare (xwerte,ywerte) gegebenen Punkte. Diese werden standardmaßig mit einer blauen Linie ver-bunden. Werden als Argument mehrere x/y-Vektoren abwechselnd ubergeben, erhaltman unabhangige Linien. Entfallt xwerte, werden die Werte ywerte uber ihrem In-dex geplottet; enthalt ywerte dabei komplexe Zahlen, wird der Imaginarteil uber demRealteil dargestellt.

7) Die in Kap. 3.2 beschriebenen Sonderzeichen \n, ’’ sowie \\ gelten hier jedoch nicht.

Page 18: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 47

Der Befehl stairs verwendet dieselbe Syntax, erzeugt aber eine treppenformige Linie(z.B. fur abgetastete Signale, siehe Beispiel in Kap. 10.3.2). Die Befehle bar und stemerzeugen Balkendiagramme (siehe Spektren in Kap. 6.2). Die Befehle semilogx undsemilogy besitzen die gleiche Syntax wie plot mit dem Unterschied, dass die x-Achsebzw. y-Achse logarithmisch skaliert wird. loglog plottet beide Achsen logarithmisch.Der Befehl polar plottet Daten in Polarkoordinaten.

Der Parameter plotstil ist ein String, der Farbe, Linien- und ggf. Punkttyp eines Plotsbestimmt. Aus allen drei Kategorien kann plotstil je ein Element enthalten (muss abernicht). So steht z.B. ’g-.’ fur eine grune gestrichelte Linie (— – —); ’ro-’ steht fureine rote durchgezogene Linie, bei der jeder Datenpunkt zusatzlich mit einem Kreismarkiert ist. Daruber hinaus konnen optional Eigenschaft/Werte-Paare angegeben wer-den. So erzeugt z.B. plot (x, y, ’r’, ’LineWidth’,2.0) einen Plot mit dicker roterLinie. Weitere Infos uber doc plot oder in Kap. 3.7.

Farben

k schwarz r rotb blau m magentac cyan y gelbg grun w weiß

Punkte

. Punkteo Kreise* Sterne+, x Kreuze

Linien

- durchgezogen-- gestrichelt-. gestrichelt: gepunktet

Standardmaßig loscht jeder neue plot-Befehl zunachst alle vorhandenen Objekte deraktuellen Figure (bzw. des Subplots). Dies wird mit dem Befehl hold on nach demersten plot-Befehl verhindert. Das folgende Beispiel erzeugt Abb. 3.4:

figure % Erzeugt neue Figuresubplot (121) % Linker Subplot

plot (-5:0.1:5, cos ((-5:0.1:5)*pi), ’k:’) % schwarz, gepunktethold on % alten Plot beibehaltenfplot (’2*sin(pi*x)/(pi*x)’, [-5 5], ’k--’) % schwarz, gestrichelt

subplot (122) % Rechter Subplott = (0:20)*0.9*pi;plot (cos (t), sin (t)) % Standard: blaue Linie

Abb. 3.4: Matlab-Figuremit zwei Subplots und uberdas Menu Tools aktiviertemData Cursor (links)

Page 19: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

48 3 Eingabe und Ausgabe in MATLAB

Der verwendete Befehl fplot (funktion, bereich [, plotstil]) dient der einfachen Darstel-lung expliziter Funktionen, die als String angegeben werden. Mit erweiterter Funktio-nalitat steht daruber hinaus ezplot (funktion1, funktion2 [, bereich]) zur Verfugung,um auch implizite Funktionen und Parameterkurven zu plotten (siehe Abb. 3.5).

>> ezplot (’x^2 - y^2 - 2’)>> ezplot (’sin(3*t) * cos(t) / (t+pi)’, ...

’sin(3*t) * sin(t) / (t+pi)’, [0, 4*pi])

x

y

x2 − y2 −2 = 0

−5 0 5−6

−4

−2

0

2

4

6

−0.1 0 0.1 0.2

−0.2

−0.15

−0.1

−0.05

0

0.05

0.1

x

y

x = sin(3 t) cos(t) / (t+π), y = sin(3 t) sin(t) / (t+π)

Abb. 3.5: Implizite Funktion (links) und Parameterkurve (rechts) mit dem ezplot-Befehl

Grafik: 2D Plot-Befehle

plot ([xwerte, ] ywerte ... [, plotstil]) Plot, linearstairs ([xwerte, ] ywerte ... [, plotstil]) Plot, linear treppenformigbar (...), stem (...) Plot, linear, Balken

loglog (xwerte, ywerte ... [, plotstil]) Plot, beide Achsen logarithmischsemilogx (xwerte, ywerte ... [, plotstil]) Plot, x-Achse logarithmischsemilogy (xwerte, ywerte ... [, plotstil]) Plot, y-Achse logarithmisch

polar (winkel, radius ... [, plotstil]) Plot, in Polarkoordinaten

fplot (funktion, bereich) Plot, explizite Funktionezplot (funktion (x, y) [, bereich]) Plot, implizite Funktionezplot (funktion1, funktion2 [, bereich]) Plot, Parameterkurve

hold [on | off] Vorhandene Objekte halten

Beispiel: Frequenzgang Tiefpass und Hochpass

Im Folgenden findet sich ein (zugegebenermaßen kompliziertes) Beispiel, das Abb. 3.6erzeugt. Dabei wird der Frequenzgang eines Tiefpasses (auch PT1-Glied) und einesHochpasses (auch DT1-Glied) mit der Zeitkonstanten T im Laplace-Bereich (s = jω) be-rechnet und ausgegeben. Die Eckfrequenz liegt jeweils bei 1/T = 20 rad s−1 = 3.18Hz.

Page 20: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 49

HTP (j ω) =1

1 + j ω THHP (j ω) = 1− HTP =

j ω T

1 + j ω T

Hinweis fur Interessierte: Mit set wird zunachst die Achsenteilung geandert und an-schließend die Beschriftung der Achsen; gca liefert das Handle des jeweiligen Subplots,um die Parameter ytick und yticklabel zu andern.

T = 0.05; % Zeitkonstante [s]omega = logspace (0, 3, 100); % Frequenzvektor [rad/s]

frequenzgang_TP = (T*j*omega + 1).^(-1); % Frequenzgang Tiefpassfrequenzgang_HP = 1 - frequenzgang_TP; % Frequenzgang Hochpass

figure (3) % Erzeugt Figure 3clf % Loscht ggf. alte Plots

subplot (121) % Linker Subplot: Amplitudeloglog (omega, abs (frequenzgang_TP), ’-’) % Amplitudengang Tiefpasshold onloglog (omega, abs (frequenzgang_HP), ’--’) % Amplitudengang Hochpassloglog ([1 1]/T, [0.01 10], ’:’) % Linie Zeitkonstantetext (1.1/T, 0.02, ’Zeitkonstante’) % Text Zeitkonstantetitle (’Ubertragungsfunktionen’) % Titel linker Subplotxlabel (’\omega [rad s^-^1]’) % Achsenbeschriftung Xylabel (’Amplitude [dB]’) % Achsenbeschriftung Ylegend (’Tiefpass’, ’Hochpass’) % Legende an Standardpositionxlim ([1 1e3]) % Skalierung x-Achseskala = -40:20:40; % Gewunschte Achsteilungset (gca, ’ytick’, 10.^(skala/20)) % Setzt Achsteilung (dB)set (gca, ’yticklabel’, skala) % Setzt Beschriftung

subplot (122) % Rechter Subplot: Phasesemilogx (omega, angle (frequenzgang_TP) *180/pi, ’-’) % Phasengang TPhold onsemilogx (omega, angle (frequenzgang_HP) *180/pi, ’--’) % Phasengang HPgrid on % Aktiviert Gitterlinienxlabel (’\omega [rad s^-^1]’) % Achsenbeschriftung Xylabel (’Phase [Grad]’) % Achsenbeschriftung Yaxis ([1 1e3 -90 90]) % Skalierung x- und y-Achseskala = -90:30:90; % Gewunschte Achsteilungset (gca, ’ytick’, skala) % Setzt Achsteilung (Grad)set (gca, ’yticklabel’, skala) % Setzt Beschriftung

Hinweis fur immer noch Interessierte: Der Frequenzgang kann auch mit den in Kap. 5behandelten Befehlen tf und bode dargestellt werden:

>> tiefpass = tf ([1], [0.05 1]);>> hochpass = 1 - tiefpass;>> bode (tiefpass, ’b-’, hochpass, ’r--’)

Mittels des Befehls tf wird die Ubertragungsfunktion im Laplace-Bereich, bestehendaus Zahler- und Nennerpolynom, generiert. Mit dem Befehl bode wird automatisch einBodediagramm erzeugt.

Page 21: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

50 3 Eingabe und Ausgabe in MATLAB

100

101

102

103

−40

−20

0

20

Zeitkonstante

Übertragungsfunktionen

ω [rad s−1]

Am

plit

ude [dB

]

TiefpassHochpass

100

101

102

103

−90

−60

−30

0

30

60

90

ω [rad s−1]

Phase

[G

rad]

Abb. 3.6: Beispiel: Frequenz- und Phasengang eines Tiefpasses und eines Hochpasses

3.5.4 Plot-Befehle fur dreidimensionale Grafiken

Zur Darstellung mehrdimensionaler Zusammenhange eignen sich 3D-Plots. Im Folgen-den werden einige der dafur verfugbaren Befehle beschrieben. Die Befehle zur Beschrif-tung und zur Achsen-Skalierung leiten sich dabei von denen bei 2D-Plots ab.

Der Befehl plot3 entspricht plot, lediglich um einen dritten Datenvektor fur die z-Achse erweitert. Folgende Befehle erzeugen den dreidimensionalen Plot in Abb. 3.7:

>> phi = (0:100) / 100 * 2*pi;>> plot3 (-sin (2*phi), cos (3*phi), 1.5*phi, ’k.-’)>> grid on

−1

0

1

−1

0

10

5

10

Abb. 3.7: Dreidimensionaler Plot

Zur Darstellung zweidimensionaler Funktionen als Flachen im Raum dient der Befehlsurf (xwerte, ywerte, zwerte ... [, farbe]). Sind xwerte, ywerte und zwerte Matrizengleicher Zeilen- und Spaltenzahl, werden die beschriebenen Punkte geplottet und diedazwischen liegenden Flachen ausgefullt. Liegen alle Punkte in einem gleichmaßigenRaster bezuglich der x- und y-Achse, konnen xwerte und ywerte auch Vektoren sein.In diesem Fall werden die Eintrage von xwerte auf die Spalten und ywerte auf dieZeilen der Matrix zwerte bezogen.

Page 22: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 51

Die Befehle mesh und waterfall besitzen dieselbe Syntax wie surf, erzeugen aberein Gitter ohne ausgefullte Flachen bzw. ein Wasserfall-Diagramm. Dagegen erzeugtcontour einen Plot der

”Hohenlinien“ (Linien gleicher zwerte).

Optional kann eine weitere Matrix farbe zur Festlegung der Farbe angegeben werden.Jedes Element von farbe entspricht einem Element von zwerte. Die Farb-Werte werdenals Indizes fur eine Farbtabelle verwendet, die uber colormap (name) geandert werdenkann. Der großte und kleinste Eintrag von farbe wird automatisch auf den großten bzw.kleinsten Datenwert skaliert. Ohne Angabe einer Farb-Matrix wird farbe = zwerte an-genommen. Die Skalierung der Farbe kann mit caxis (farbemin, farbe max) festgelegtwerden. Infos uber vordefinierte Farbtabellen sind uber help graph3d zu erhalten.

3.5.5 Perspektive

Die Perspektive von 3D-Plots kann mit view (horizontal, vertikal) durch Vorgabedes horizontalen und vertikalen Winkels (in Grad) verandert werden. Standard ist(−37.5◦, 30◦). Verschiedene Moglichkeiten sind in Abb. 3.8 zu sehen. Die Perspektivekann auch interaktiv durch Ziehen mit der Maus verandert werden, nachdem der Be-fehl rotate3d on eingegeben oder der Button im Figure-Fenster aktiviert wurde. Furgroße Grafiken sollte man dabei uber das Kontextmenu die Option Rotate Options/PlotBox Rotate wahlen, damit die Grafik nicht wahrend des Drehens neu gezeichnet wird.

Der Befehl box on erzeugt einen Rahmen (Box ) um die 3D-Grafik. Weiter-gehende Einstellmoglichkeiten fur Perspektive und Beleuchtung bietet das Figure-Menu View/Camera Toolbar und die Befehlsubersicht mit help graph3d.

Grafik: 3D Plot-Befehle

[X, Y ] = meshgrid (xvektor, yvektor) Koordinatenmatrizen

plot3 (xwerte, ywerte, zwerte . . . [, plotstil]) 3D-Plot, Punkte/Linien

surf (xwerte, ywerte, zwerte . . . [, farbe]) 3D-Plot, Flache

mesh (xwerte, ywerte, zwerte . . . [, farbe]) 3D-Plot, Gitter

waterfall (xwerte, ywerte, zwerte . . . [. . .]) 3D-Plot, Wasserfall

contour (xwerte, ywerte, zwerte . . . [. . .]) 2D-Plot, Hohenlinien

box [on | off] Box einblenden

rotate3d [on | off] Interaktives Drehen

view (horizontal, vertikal) Perspektive andern

zlabel (string) Beschriftung der z-Achse

Farben einstellen

colormap (name) Wahl der Farbtabelle

caxis (farbemin, farbe max) Skalierung der Farbe

Page 23: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

52 3 Eingabe und Ausgabe in MATLAB

Beispiel

Im folgenden Beispiel erzeugt der Befehl meshgrid zunachst aus den Vektoren x und ydie Matrizen X und Y , deren Zeilen bzw. Spalten den Vektoren x bzw. y entsprechen.Daraus berechnet sich dann die Matrix Z:

x = 0:0.05:2;y = -1:0.2:1;[X, Y] = meshgrid (x, y); % Erzeugt Matrizen uber Bereich von x, yZ = (Y+1) .* cos (2*X.^2) + (Y-1) .* sin (2*X.^2) / 5;

Die so erhaltenen Daten werden nun mittels verschiedener Befehle und Einstellungengeplottet (siehe Abb. 3.8):

subplot (221)surf (X, Y, Z)view (-40, 30)title (’surf (X, Y, Z); view (-40, 30)’)

subplot (222)mesh (X, Y, Z)view (-20, 30)title (’mesh (X, Y, Z); view (-20, 30); grid off; box on’)grid offbox on

subplot (223)waterfall (X, Y, Z)view (-20, 10)title (’waterfall (X, Y, Z); view (-20, 10)’)

subplot (224)contour (X, Y, Z)title (’contour (X, Y, Z)’)

01

2

−1

0

1−2

0

2

surf (X, Y, Z); view (−40, 30)

0 0.5 1 1.5 2−1

0

1−2

0

2

mesh (X, Y, Z); view (−20, 30); grid off; box on

0 0.5 1 1.5 2−10

1−2

−1

0

1

2

waterfall (X, Y, Z); view (−20, 10) contour (X, Y, Z)

0 0.5 1 1.5 2−1

−0.5

0

0.5

1

Abb. 3.8: Beispiel: Verschiedene Darstellungen dreidimensionaler Daten

Page 24: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

3.5 Grafische Darstellung 53

Zum interaktiven Plotten eignen sich zudem der Workspace Browser sowie auchder Variable Editor. Fur eine ausgewahlte Variable konnen nach Anklicken des Pfeilesin geeignete Plotbefehle direkt ausgefuhrt werden (siehe Abb. 3.9). Wird da-gegen der Miniaturplot angeklickt, wendet Matlab direkt den dort gezeigten (zuletztverwendeten) Befehl an.

Abb. 3.9: Interaktives Plottenaus dem Workspace Browser

3.5.6 Importieren, Exportieren und Drucken von Grafiken

Zum Einlesen von Pixel-Grafiken bietetMatlab den Befehl imread an. Mit variable =

imread (’datei’, ’format’) wird eine Grafik-Datei mit dem angegebenen Format8) alsVariable eingelesen, wobei variable bei Graustufen-Bildern eine zweidimensionale Ma-trix, bei Farbbildern ein dreidimensionales Array ist.

Der Befehl image (variable) gibt die so eingelesene Grafik in einer Figure aus. So er-zeugen die folgenden Befehlszeilen die Figure in Abb. 3.10, die das im jpg-Format vor-liegende Bild foto.jpg enthalt:

>> foto_variable = imread (’foto.jpg’, ’jpeg’);>> image (foto_variable)

Das Drucken und Exportieren von Grafiken aus Matlab geschieht uber den Befehlprint. Mit print -fnummer wird die Figure nummer auf dem Standard-Druckerausgegeben. Mit print -fnummer -doption ’datei’ erfolgt die Ausgabe in Dateienverschiedener Grafikformate.9)

Uber das Menu File/Print Preview konnen Lage und Große der Figure fur den Ausdrucksowie weitere Druckoptionen (z.B. Farbraum, Linien, Schrift, etc.) eingestellt werden.

>> print -f1; % Drucken von Figure 1 auf Standard-Drucker>> print -f1 -dmeta ’bild’; % Speichern als Windows-Metafile (bild.emf)>> print -f1 -depsc ’bild’; % Speichern als Farb-Postscript (bild.eps)

8) Mogliche Formate: ’bmp’, ’ico’, ’jpg’/’jpeg’, ’pcx’, ’tif’/’tiff’, siehe auch doc imread.9) Mogliche Formate: bmp, meta (emf), eps, jpeg, pcx24b (pcx), pdf, tiff, siehe auch doc print.

Page 25: MATLAB® – Simulink® – Stateflow® - · PDF fileOldenbourg Verlag München MATLAB® – Simulink® – Stateflow® Grundlagen, Toolboxen, Beispiele von Dr.-Ing. Anne Angermann

54 3 Eingabe und Ausgabe in MATLAB

Abb. 3.10: Mit imread undimage eingebundene Grafik

Matlab bietet auch die Speicherung in einem eigenen Figure-Format an; dieses eig-net sich insbesondere fur spatere Weiterverarbeitung einer Figure in Matlab. Ge-speichert wird entweder uber das Figure-Menu File/Save As oder mit dem Befehlsaveas (handle, ’datei ’ [, ’format’]).10)

Erweiterte Ausgabeoptionen konnen zudem uber das Menu File/Export Setup einge-stellt werden.

Grafik: Importieren, Exportieren und Drucken

print -fnummer Figure auf Standarddrucker druckenprint -fnummer -dformat ’datei’ Figure in Datei speichernsaveas (handle, ’datei’, ’fig’) Figure als Matlab-Figure speichern

variable = imread (’datei’, ’format’) Pixel-Grafik in Matrix einlesenimage (variable) Pixel-Grafik in Figure plotten

3.6 Grafische Benutzeroberflache (GUI)Zur komfortablen Bedienung eigener Programme lassen sich in Matlab grafische Be-nutzerschnittstellen, so genannte GUIs11) erstellen. GUIs sind interaktive Figures inForm einer Dialogbox, die auch Text- und Grafikausgabe enthalten konnen. Als Bei-

spiel dient die Erstellung eines Datums-Rechners zur Bestimmung des Wochentagsfur ein beliebiges Datum (siehe Abb. 3.11).

Abb. 3.11: Beispiel: Datums-Rechnerals fertiges GUI

10) Mogliche Formate: ’fig’ (speichert Figure als binares Fig-File), ’m’ (erzeugt ein Fig-File und einM-File, das das Fig-File aufruft). Des Weiteren sind auch einige Formate wie bei print zulassig.11) GUI = Graphical User Interface, GUIDE = GUI Design Editor