MATLAB Simulink - mitp.de€¦ · Ottmar Beucher MATLAB und Simulink Eine kursorientierte...

22
Ottmar Beucher MATLAB und Simulink Eine kursorientierte Einführung

Transcript of MATLAB Simulink - mitp.de€¦ · Ottmar Beucher MATLAB und Simulink Eine kursorientierte...

Ottmar Beucher

MATLAB und SimulinkEine kursorientierte Einführung

Außerdem bei mitp:

Aus dem Inhalt:• Rechnen und Visua-

lisieren mit MATLAB: Variablen, arithmetische Operationen, logische und relationale Operationen, mathematische Funktio-nen, Grafi kfunktionen, I/O-Operationen, elemen-tare Matrixmanipulationen

• Elementare Programmierung: Scripts und Funktionen, prozedurale Sprachkon-strukte, Function Handles, Lösung von Differential-gleichungen, symbolische Rechnungen mit der Symbolic Math Toolbox

• Fortgeschrittene Programmierung: Komplexere Datenstruk-turen, Objektorientiertes Programmieren, Toolboxes nutzen, symbolische Rechnungen mit MuPAD

• Einführung in Simulink: grafi sche Programmierung, Simulation dynamischer Systeme, Benutzerober-fl äche

• Ausgewählte Simulationstechniken: Vereinfachung von Simulink-Systemen, Interaktion mit MATLAB, Umgang mit Kennlininen und Kennfeldern

• Übungsaufgaben und Lösungen

Unter Berücksichtigung der umfangreichen Änderungen beider Softwarewerkzeuge ab Release 2012 versucht das vorliegende Buch, die Grundlagen von MATLAB und Simulink innerhalb kurzer Zeit, idealerweise in einem einwöchigen Kurs, zu vermitteln.

Adressiert werden vor allem Ingenieurstudenten der ersten Studiensemester, die für den Umgang mit MAT-LAB und Simulink nach einer Einführung suchen, die sich an den Kenntnissen und Bedürfnissen eines Studienan-fängers orientiert.

Darüber hinaus ist das Buch auch für schon im Beruf stehende Ingenieure interessant, die MATLAB und Simu-link zumindest in ihren Grundzügen kennen und beherr-schen müssen, um spezielle Aufgaben lösen zu können. Die für das Verständnis des vorliegenden Buches not-wendigen Vorkenntnisse hat ein Ingenieur auch noch Jahre nach seinem Studium.

Der kursartige Aufbau des Buches soll schließlich Leh-renden eine Leitlinie geben, wie der Stoff in einem Kurs im Umfang von etwa einer Woche vermittelt werden könnte. Die Struktur gibt im Wesentlichen den Aufbau eines Einführungskurses des Autors an der Hochschule Karlsruhe - Technik und Wirtschaft wieder und spiegelt die Lehrerfahrung von über einem Jahrzehnt auf diesem Gebiet.

Professor Dr. Ottmar Beucher ist Professor für Mathe-matik, Informatik und numerische Signalverarbeitung an der Fakultät Mechatronik der Hochschule Karlsruhe und verfügt über langjährige Lehrerfahrung auf dem Gebiet MATLAB/Simulink.

ISBN 978-3-8266-9454-7

(D) €

29

,95

Grundlagenwissen für einen 5-Tage-KursLeitfaden für Lehre, Studium und BerufMATLAB / Simulink Release 2012

ISBN 978-3-8266-9467-7ISBN 978-3-8266-9467-7

Beuc

her

MAT

LAB

und Si

mul

ink

18,5 mm

ISBN 978-3-8266-9453-0

ISBN 978-3-8266-9156-6

978-3-8266-9467-7_umschlag_K.indd Alle Seiten 2/20/2013 10:26:43 AM

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1 Einführung in MATLABIn diesem Kapitel werden die grundlegenden Möglichkeiten dargestellt, die MAT-LAB für numerische Berechnungen und deren Visualisierungen bietet.Ziel des Kapitels ist es, den Anfänger in den (interaktiven) Umgang mit MAT-LAB einzuführen und ihn mit den Basisstrukturen dieser Software vertraut zumachen. Zum Verständnis dieser Einführung werden lediglich einige mathema-tische Grundkenntnisse aus der linearen Algebra (Vektor- und Matrizenrechnung)sowie der Analysis elementarer Funktionen vorausgesetzt.Auf die Darstellung weitergehender Konzepte, insbesondere auf die Möglichkei-ten, die sich aus denMATLAB-Funktionsbibliotheken (den so genannten Toolboxes)ergeben, muss an dieser Stelle verzichtet werden, da dies weitreichende Kenntnis-se aus den Bereichen der Mathematik, der Signalverarbeitung, der Regelungstech-nik und vieler anderer Gebiete erfordert und damit für Studierende des Grundstu-diums, an die sich diese Einführung in erster Linie richtet, ungeeignet ist.

1.1 Was ist MATLAB?MATLAB ist ein numerisches Berechnungs- und Simulationswerkzeug, das ausden ursprünglich in der Programmiersprache FORTRAN geschriebenen numeri-schen Funktionsbibliotheken LINPACK und EISPACK zu einem kommerziellenWerkzeug mit benutzerfreundlicher Bedienoberfläche entwickelt wurde.Anders als bei bekannten Computer-Algebra-Programmen wie MAPLE oder MA-THEMATICA , welche in der Lage sind, symbolischeOperationen durchzuführen,also mathematische Formeln so zu berechnen, wie ein Mensch dies normalerweisemit Papier und Bleistift tut, rechnet MATLAB prinzipiell rein numerisch1.MATLAB kannte ursprünglich im Prinzip nur eineDatenstruktur, auf der alle sei-ne Operationen basierten. Dies war das numerische Feld, alsomit anderenWortendie Matrix. Dies schlägt sich auch im Namen nieder: MATLAB ist die AbkürzungfürMATrix LABoratoy.Dieses Prinzip wurde im Laufe der Entwicklung von MATLAB hin zu einer uni-versellen objektorientierten Programmiersprache nach und nach aufgebrochen. Inden jüngeren Releases von MATLAB ist daher auch die Definition weitaus kom-plexerer Datenstrukturen möglich, wie etwa der Datenstruktur struct, die in ih-rem Aufbau der gleichnamigen Datenstruktur aus der Programmiersprache C++ähnelt, oder auch eines so genannten Cell Arrays, einer MATLAB-spezifischenMi-

1 Auf die Computer-Algebra-Funktionalität kann jedoch innerhalb derMATLAB-Umgebungüber dieso genannte Symbolic Math Toolbox zugegriffen werden. Diese wird in den Abschnitten 3.5 und4.4 näher vorgestellt.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

4 Kapitel 1: Einführung in MATLAB

schung aus Struktur und Array, bis hin zur Definition von Klassen für die objekt-orientierte Programmierung2.Beschränkt man sich jedoch zunächst auf die grundlegende Datenstruktur derMa-trix, so bleibt dieMATLAB-Syntax sehr einfach undMATLAB-Programme könnenweit problemloser geschrieben werden als Programme in anderen Hochsprachenoder Computer-Algebra-Programme.Eine anwenderfreundlich konzipierte und ständig weiterentwickelte Benutzer-oberfläche für den interaktiven Betrieb (s. Kapitel 2 für eine detaillierte Darstel-lung) sowie die einfache Integration eigener Funktionen, Programme und Biblio-theken unterstützt die Handhabung dieses Softwarewerkzeuges. Dies trägt auchzum schnellen Erlernen von MATLAB bei.Wie bereits erwähnt, ist MATLAB nicht nur ein numerisches Werkzeug zur Aus-wertung von Formeln, sondern eine eigenständige Programmiersprache, die dieBehandlung komplexer Aufgaben zulässt und über alle wesentlichen Konstrukteeiner höheren Programmiersprache verfügt. Da es sich bei MATLAB um eine In-terpretersprache handelt, bei der jede Anweisung sofort übersetzt und ausgeführtwird, können alle Kommandos und Funktionen unmittelbar überprüft werden,was das Entwickeln und Testen von eigenen Programmen wesentlich erleichtert3.Darüber hinaus verfügt MATLAB auch über einen sehr gut konzipierten eigenenEditor mit Debugging-Funktionalität, welcher das Schreiben und die Fehleranaly-se größerer MATLAB-Programme noch leichter macht.Als letzter großer Vorteil ist die Interaktion mit der speziellen Toolbox Simulinkzu erwähnen, welche wir in den Kapiteln 5 und 6 vorstellen werden. Hierbei han-delt es sich um ein Werkzeug, mit dem Simulationsprogramme auf der Grundlageeiner grafischen Oberfläche nach Art von Blockschaltbildern konstruiert werdenkönnen. Die Simulation läuft unter MATLAB, und eine leichte Durchgängigkeitzwischen MATLAB und Simulink ist gewährleistet. Auf diese und weitere Eigen-schaften von Simulink werden wir in den genannten Kapiteln im Einzelnen einge-hen.

1.2 Erste Schritte mit MATLAB:Rechnen und Visualisieren

Ausgehend von der grundlegenden Datenstruktur des numerischen Feldes sollenim Folgenden die (nach Einschätzung des Autors) wichtigsten elementaren Kon-strukte und Operationen von MATLAB vorgestellt werden. MATLAB wird dabei

2 Im Grunde sind alle Datenstrukturen als Klassen definiert, was dem Anwender allerdings, solangeer nicht direkt objektorientiert programmiert, im Allgemeinen verborgen bleibt.

3 Ein Nachteil ist allerdings die gegenüber compilierten Sprachen wie C++ höhere Ausführungszeitkompletter Programme. In der Praxis werden daher Lösungen oft in MATLAB entwickelt und spä-ter, insbesondere für zeitkritische Anwendungen, in C/C++ übertragen.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 5

zunächst ausschließlich im interaktiven Betrieb verwendet. Es soll gezeigt wer-den, wie (numerische) Berechnungen interaktiv durchgeführt und die Ergebnissedieser Berechnungen grafisch dargestellt und gesichert werden können.Die elementarenMATLAB-Operationen lassen sich grob in fünf Klassen einteilen:

Arithmetische Operationen,Logische Operationen,Mathematische Funktionen,Grafikfunktionen,I/O-Operationen (Datenaustausch).

Grundsätzlich handelt es sich bei all diesen Operationen umOperationen auf Matri-zen und Vektoren. Diese werden dabei in Variablen gehalten, die – mit sehr wenigenEinschränkungen – frei im MATLAB-Kommandofenster (Command-Window, s.u.)definiert werden können.Die MATLAB-Benutzeroberfläche präsentiert sich nach dem Start von MATLABin der in Abbildung 1.1 dargestellten oder einer ähnlichen Form4.Die wesentlichen Elemente dieser Benutzeroberfläche sind:

① das Kommandofenster (Command-Window),② das Kommando-Protokollfenster (Command-History-Window),③ das Fenster des aktuellen Verzeichnisses (Current Folder Browser),④ das Arbeitsspeicher-Fenster (Workspace Browser)

(in dieser Darstellung verdeckt),⑤ die Werkzeugleiste für das aktuelle Verzeichnis

(Current Folder Toolbar),⑥ die Werkzeugleiste für schnellen Zugriff (Quick Access Toolbar),⑦ der Toolstrip (in dieser Darstellung verdeckt, es sind nur die Reiter HOME,

PLOTS und APPS zu sehen),⑧ das Eingabefeld für die Suche in der Dokumentation

(Teil der Quick Access Toolbar).

Die Benutzeroberfläche von MATLAB bietet so vielfältige Möglichkeiten sowohlder Nutzung als auch der individuellen Konfiguration, dass in einem eigenen Ka-

4 Dies hängt von den Einstellungen und Definitionen des Benutzers ab. An verschiedenen Stellenkönnen Einstellungen vorgenommen werden, die das Erscheinungsbild der Benutzeroberfläche be-einflussen (vgl. Kapitel 2).

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

6 Kapitel 1: Einführung in MATLAB

Abb. 1.1: Die MATLAB-Benutzeroberfläche nach dem Start

pitel hierauf eingegangen werden muss. Es sei an dieser Stelle daher für eine de-taillierte Diskussion auf Kapitel 2 verwiesen.Für den Augenblick ist nur das Kommandofenster von Bedeutung, welches diewichtigste Benutzerschnittstelle im interaktiven Betrieb darstellt.MATLAB erwartet im Kommandofenster (①) nach dem Eingabeprompt »Komman-dos des Benutzers, welche von MATLAB unmittelbar interpretiert und ausgeführtwerden. Der Nutzer kommuniziert somit auf dieser Ebene interaktiv mit demMATLAB-System. Auf die Möglichkeit der Programmierung unter MATLAB undder Nutzung vonMATLAB als höhere Programmiersprachewerdenwir in Kapitel3 zu sprechen kommen.Bevor wir auf Details der einzelnen Operationsklassen eingehen, soll das Konzeptder MATLAB-Variablen erläutert werden, wobei wir in diesem Zusammenhangauch auf einige Besonderheiten der MATLAB-Syntax hinweisen wollen.

1.2.1 MATLAB-Variablen

EineMATLAB-Variable ist eine Instanz eines bestimmten Datentyps. Wie eingangserwähnt, ist der grundlegendste Datentyp derjenige, von dem MATLAB auch sei-

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 7

nen Namen ableitet: die Matrix oder, anders ausgedrückt, das numerische Feld(Array).Da wir uns hierauf im Wesentlichen beschränken wollen, ist eine MATLAB-Variable im Folgenden grundsätzlich eine Matrix! Diese kann aus reellen oder kom-plexen Zahlen (im double-Format) sowie aus Characters (ASCII-Zeichen) bestehen.Letzteres ist im Zusammenhang mit der Verarbeitung von Strings (Text) inter-essant. Wir wollen diesen Aspekt jedoch für den Moment einmal zurückstellen.

MATLAB-Variablen definieren

Eine Matrix wird im MATLAB-Kommandofenster im Allgemeinen durch Einga-be über die Tastatur definiert und einem frei wählbaren Variablennamen entspre-chend folgender Syntax zugewiesen:

» x = 2.45

Durch diese Anweisung nach dem Eingabeprompt » wird die Zahl 2.45 (eine Zahlist eine 1 × 1-Matrix!) der Variablen x zugewiesen und kann dann im Folgendenunter diesem Variablennamen angesprochen werden.MATLAB antwortet auf diese Definition mit

x =

2.4500

und bestätigt im interaktiven Modus damit die Eingabe. Bei syntaktischen Fehlernerfolgt eine Fehlermeldung.Die Zahlen werden in der Voreinstellung immer mit 4 Nachkommastellen (For-mat short) dargestellt. Die Voreinstellung kann über den Toolstrip, Reiter HOME,Auswahl Preferences in der sich dann öffnenden Karteikarte Command-Window -Numeric Format geändert werden. In denmeisten Fällen ist die voreingestellte Dar-stellung jedoch die beste Wahl.Die nachfolgenden Kommandos definieren einen Zeilenvektor der Länge 3 undeine 2 × 3-Matrix. Es ist jeweils die Reaktion von MATLABmit angegeben:

» vektor = [1 5 −3]

vektor =

1 5 −3

» dieMatrix = [3 1+2* i 2; 4 0 −5]

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

8 Kapitel 1: Einführung in MATLAB

dieMatrix =

3.0000 1.0000 + 2.0000 i 2.00004.0000 0 −5.0000

Man beachte, dass dieMatrix dieMatrix eine komplexe Zahl als Eintrag enthält. Kom-plexe Zahlen können mit Hilfe der dafür reservierten Symbole i und j in einerder algebraischen Darstellung entsprechenden Form wie oben definiert werden.Nach Möglichkeit sollten deshalb diese Symbole nicht als Variablenname verwen-det werden.Wie im obigen Beispiel zu sehen, sind die Trennzeichen für die Einträge in denZeilen der Matrix Leerzeichen (oder alternativ Kommas) und die Spaltentrennzei-chen Semikolons. Ein Spaltenvektor lässt sich somit folgendermaßen definieren:

» SpaltVekt = [ 2 ; 4 ; 3 ; −1; 1−4* j ]

SpaltVekt =

2.00004.00003.0000

−1.00001.0000 − 4.0000 i

Unterbleibt die Zuordnung zu einem Variablennamen, so ordnet MATLAB das Er-gebnis dem Namen ans (für answer, Antwort) zu, wie das folgende Beispiel zeigt:

» [ 2 , 3 , 4 ; 3 ,−1 ,0]

ans =

2 3 43 −1 0

Der Workspace

Sämtliche definierten Variablen werden im so genannten Workspace von MAT-LAB gespeichert. Über den Zustand des Workspaces kann man sich jederzeit in-formieren. Das Kommando who liefert die Namen der gespeicherten Variablen zu-rück, das Kommandowhos daneben noch weitere Informationen, darunter die oft-mals sehr wichtige Information über die Dimension der Matrix sowie die Speicher-belegung und den Datentyp.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 9

Für die in den bisherigen Beispielen definierten Variablen ergibt sich bei Aufrufdieser Kommandos:

» who

Your variables are :

SpaltVekt ans dieMatrix vektor x

» whos

Name Size Bytes Class

SpaltVekt 5x1 80 double array (complex )ans 2x3 48 double arraydieMatrix 2x3 96 double array (complex )vektor 1x3 24 double arrayx 1x1 8 double array

Eine sehr praktische Möglichkeit, sich einen Überblick über den Inhalt desWorkspaces zu verschaffen, liefert der Workspace Browser (④). In Abbildung 1.1ist der Workspace Browser bereits geöffnet und fest in der Kommandooberflächeverankert („angedockt“). Er ist in dieser Konfiguration durch das Fenster des ak-tuellen Verzeichnisses (③) verdeckt, kann aber durch einen Klick auf den entspre-chenden Reiter in den Vordergrund gebracht werden.Durch Doppelklick auf eine Variable im Workspace Browser öffnet sich dasVariables-Fensterund zeigt den Inhalt der Variablen nachManier einer Microsoft-Excel-Tabelle an (vgl. Abbildung 1.2). Es können (durch Anklicken der Variablen)auch gleichzeitig mehrere Variablen selektiert und im Variables-Fenster dargestelltund bearbeitet werden.Die Matrixdimensionen, das Darstellungsformat sowie einzelne Einträge der Ma-trizen können im Variables-Fenster geändert werden. Dies ist besonders für großeund daher im Kommandofenster unübersichtliche Matrizen sehr praktisch (vgl.Übung 6, S. 15). Des Weiteren ist das Kopieren, Löschen und Anhängen ganzerSpalten oder Zeilen sowie das Transponieren und vieles andere mehr möglich.Benötigt man Variablen nicht mehr, so kann man sie am einfachsten im Komman-dofenster mit dem Kommando clear löschen. Beispielsweise liefert die folgendeAnweisung offenbar die Löschung von dieMatrix:

» clear dieMatrix» who

Your variables are :

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

10 Kapitel 1: Einführung in MATLAB

Abb. 1.2: Darstellung einer Matrix Variables-Fenster

SpaltVekt ans vektor x

Mit der Anweisung clear oder auch clear all wird der ganze Workspace gelöscht.

Kommandos rekonstruieren

Die früher abgesetzten Kommandos bleiben gespeichert! Auf diese Weise kannman bequem ein Kommando wiederholen oder abändern. Hierzu müssen ledig-lich die Pfeiltasten ↑ und ↓ gedrückt werden. Die früheren Kommandos erschei-nen im MATLAB-Kommandofenster und können (ggf. nach Abänderung) mit derReturn-Taste neu ausgeführt werden. Die Definition der gerade gelöschten MatrixdieMatrix etwa kann auf diese Weise aufgefunden und die Matrix somit rekonstru-iert werden.Bei längeren MATLAB-Sitzungen ist dieses Durchhangeln durch frühere Kom-mandos trotzdem recht mühsam. Kennt man aber die Anfangsbuchstaben desKommandos, so kann man den Suchvorgang abkürzen. Man tippt z.B. zum Auf-finden der Matrix dieMatrix lediglich

» dieM

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 11

ein und drückt danach die Pfeiltaste ↑. Es wird dann nur noch nach den Kom-mandos gesucht, die mit dieM beginnen. Ist der Anfang eindeutig, findet man dasKommando sofort wieder.Weitere bequeme Möglichkeiten, diesen so genannten History-Mechanismus zuverwenden, bietet das Command-History-Fenster.In Abbildung 1.1 ist dieses Command-History-Fenster (②) links unten zu sehen.In diesem Fenster sind die in der Vergangenheit abgesetzten Kommandos unterdem jeweiligen Datum der MATLAB-Sitzung aufgelistet. Durch Verschiebung desScroll-Balkens ist es nun sehr leicht, auch sehr viel weiter zurückliegende Kom-mandos aufzufinden. Ein Doppelklick auf das Kommando genügt dann, um die-ses nochmals auszuführen.Weitere Anwendungsmöglichkeiten werden in Kapitel2 angesprochen.Welche der beschriebenen Rekonstruktionsmöglichkeiten für Kommandos ver-wendet werden, bleibt letztlich dem Geschmack des Nutzers und praktischen Er-wägungen überlassen.

Weitere Möglichkeiten der Definition von Variablen

Oft steht man vor demProblem, eineMatrix oder einen Vektor durchweitere Kom-ponenten zu ergänzen bzw. Spalten und Zeilen herauszulöschen.Eine Erweiterung kann in der oben beschriebenen Form durch Anhängen an dieVariable geschehen. So kann die Matrix dieMatrix etwa durch folgendes Komman-do um eine weitere Zeile ergänzt werden:

» dieMatrix = [ dieMatrix ; 1 2 3]

dieMatrix =

3.0000 1.0000 + 1.0000 i 2.00004.0000 0 −5.00001.0000 2.0000 3.0000

Eine weitere Spalte könnte durch folgendes Kommando angehängt werden:

» dieMatrix = [ dieMatrix , [ 1 ; 2 ; 3 ] ]

dieMatrix =

3.0000 1.0000 + 1.0000 i 2.0000 1.00004.0000 0 −5.0000 2.00001.0000 2.0000 3.0000 3.0000

Dies kann auch mit Hilfe einer Variablen erfolgen:

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

12 Kapitel 1: Einführung in MATLAB

» v = [ 1 ; 2 ; 3 ]

v =

123

» dieMatrix = [ dieMatrix , v ]

dieMatrix =

3.0000 1.0000 + 1.0000 i 2.0000 1.00004.0000 0 −5.0000 2.00001.0000 2.0000 3.0000 3.0000

Will man die zweite Spalte wieder herauslöschen, so muss man diese mit einemleeren Vektor [ ] belegen. Die zweite Spalte innerhalb der Variablen dieMatrixwirddabei gemäß der üblichen Matrixindizierung angesprochen. Da der Zeilenindexin diesem Fall beliebig ist, wird er mit dem Platzhalter : (Doppelpunkt-Operator)gekennzeichnet. Man erhält:

» dieMatrix ( : , 2 ) = [ ]

dieMatrix =

3 2 14 −5 21 3 3

Eine Löschung der ersten Zeile wäre demnach wie folgt zu erreichen:

» dieMatrix ( 1 , : ) = [ ]

dieMatrix =

4 −5 21 3 3

Ebenso kann ein Zeilen- oder Spaltenvektor herausgegriffen und einer anderenVariablen zugewiesen werden. So wird etwa mit folgender Anweisung die ersteZeile der verbliebenen Matrix herausgegriffen:

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 13

» ersteZei le = dieMatrix ( 1 , : )

ersteZei le =

4 −5 2

Statt, wie beschrieben, entsprechende Kommandos im Kommandofenster aus-zuführen, könnten die obigen Operationen natürlich auch innerhalb des Varia-bles-Fensters durchgeführt werden. Mit ein wenig Übung ist die Bearbeitung imKommandofenster jedoch deutlich schneller. Außerdem können diese Operatio-nen auch innerhalb von MATLAB-Programmen, also im nicht-interaktiven Be-trieb verwendet werden (vgl. Kapitel 3). Sie sind dann die einzige Möglichkeit, diegewünschten Ergebnisse zu erzielen. Die beschriebenen Techniken sind daher vongroßer Bedeutung, wenn man die Funktionalität von MATLAB als Programmier-sprache nutzen will.Hat man große Matrizen oder Vektoren zu bearbeiten, so ist die Ausgabe des Ergeb-nisses auf dem Bildschirm oft sehr störend. Ein Beispiel ist die folgende Definiti-on eines Vektors, welcher aus den Zahlen 1 bis 5000 in Abständen von 2 besteht.Er kann in MATLAB durch folgendes Kommando, bei dem man Anfangswert,Schrittweite und Endwert angibt, einfach definiert werden:

» grosserVektor = (0 :2 :5000)

grosserVektor =

Columns 1 through 12

0 2 4 6 8 10 12 14 16 . . .

Columns 13 through 24

24 26 28 30 und so weiter

Die Bildschirmausgabe des Vektors ist hier natürlich nicht vollständig wiederge-geben.Will man die Bildschirmausgabe einer MATLAB-Berechnung unterdrücken, somuss das Kommando mit einem Semikolon abgeschlossen werden. Die folgendeAnweisung lässt MATLAB im obigen Fall verstummen:

» grosserVektor = ( 0 : 2 : 5 0 0 0 ) ;

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

14 Kapitel 1: Einführung in MATLAB

Möchte man die MATLAB-Antwort aber nicht ganz unterdrücken, sondern dasErgebnis trotzdem auf dem Bildschirm anschauen, so kann mit dem Kommando

» more on

erreicht werden, dass die Bildschirmausgabe bei vollem Command-Window unter-brochenwird, bis der Benutzer durch Tastendruck die Fortführung der Bildschirm-ausgabe auslöst. Diese Funktion gilt dann für den weiteren Verlauf der interakti-ven MATLAB-Sitzung. Sie kann aber durch Eingabe von

» more of f

auch wieder abgeschaltet werden.Es wurden nun alle wesentlichen Konstrukte zur Definition von MATLAB-Variablen zusammengetragen, um die ersten Übungen zu dieser Thematik ange-hen zu können.

Übungen

Übung 1 (Lösung Seite 263)

Definieren Sie unter MATLAB die folgenden Matrizen bzw. Vektoren und ordnenSie diese entsprechenden Variablen zu:

M =

⎛⎜⎜⎜⎝

1 0 0

0 j 1

j j + 1 −3

⎞⎟⎟⎟⎠ ,

k = 2.75, �v =

⎛⎜⎜⎜⎜⎜⎜⎝

1

3

−7

−0,5

⎞⎟⎟⎟⎟⎟⎟⎠

,

�w =(

1 −5.5 −1.7 −1.5 3 −10.7)

,

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 15

�y =(

1 1.5 2 2.5 · · · 100.5)

.

Übung 2 (Lösung Seite 263)

(a) Erweitern Sie die Matrix M so zu einer 6 × 6-Matrix V, dass sie die Form

V =

⎛⎝M M

M M

⎞⎠

hat.(b) Löschen Sie aus derMatrix V die 2. Zeile und die 3. Spalte heraus (Streichungs-

matrix V 23).(c) Ordnen Sie der 4. Zeile aus der Matrix V einen neuen Vektor z4 zu.(d) Verändern Sie in Matrix V den Eintrag V (4, 2) zu j + 5.

Übung 3 (Lösung Seite 265)

Definieren Sie, ausgehend von dem Vektor

�r =(j j + 1 j − 7 j + 1 −3

)eine Matrix N , bestehend aus 6 Spalten, die jeweils �r enthalten.

Übung 4 (Lösung Seite 265)

Prüfen Sie, ob der Zeilenvektor aus Übung 3 an die dort konstruierte Matrix Nangefügt werden kann.

Übung 5 (Lösung Seite 265)

Löschen Sie alle Variablen des Workspaces und rekonstruieren Sie mit Hilfe dergespeicherten Kommandos und der ↑- und ↓-Tasten die Matrix V aus Übung 2.Führen Sie anschließend den gleichen Vorgang noch einmal mit Hilfe des Com-mand-History-Fensters durch.

Übung 6 (Lösung Seite 266)

Belegen Sie die 5. Zeile der Matrix V aus Übung 2 mit Hilfe des Variables-Fenstersmit Nullen.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

16 Kapitel 1: Einführung in MATLAB

Übung 7 (Lösung Seite 267)

Öffnen Sie die Datei ExcelDatBsp.xls der Begleitsoftware in Microsoft Excel. Über-tragen Sie die dortigen Daten mit Hilfe der Windows-Zwischenablage in das Va-riables-Fenster.Löschen Sie anschließend im MATLAB-Kommandofester die zweite Spalte derübertragenen Datenmatrix und kopieren Sie diese aus dem Variables-Fenster überWindows-Zwischenablage nach Excel zurück.

1.2.2 Arithmetische Operationen

Bei den arithmetischen Operationen (+,−, ∗ etc.) ist eine wesentliche Eigenschaftvon MATLAB zu beachten, an die sich der Anfänger erst gewöhnen muss. Manunterscheidet zwischen zwei Arten von Operationen, denMatrixoperationen undden Feldoperationen.

Matrixoperationen

Da die grundlegende Datenstruktur von MATLAB die Matrix ist, sind die arith-metischen Operationen ohne weiteren Zusatz zunächst einmal als Matrixoperatio-nen zu verstehen! Dies bedeutet, dass die Rechenregeln der Matrizenalgebra un-terstelltwerden, mit all den damit verbundenen Konsequenzen.So ist z.B. das Produkt zweier Variablen A und B unter MATLAB nicht definiert,falls die zu Grunde liegende Matrizenmultiplikation A · B nicht definiert ist, dasheißt konkret, falls Spaltenzahl von A und Zeilenzahl von B nicht gleich sind!Eine Ausnahme von dieser Regel besteht nur, wenn eine der Variablen eine 1 × 1-Matrix, also ein Skalar ist. Dann wird die Multiplikation, ebenfalls den Regeln derlinearen Algebra entsprechend, als Multiplikation mit einem Skalar interpretiert.Die folgenden MATLAB-Kommandos5 verdeutlichen dies an einem Beispiel:

» M = [1 2 3; 4 −1 2] % d e f i n i e r t 2x3−Mat r i x M

M =

1 2 34 −1 2

» N = [1 2 −1 ; 4 −1 1; 2 0 1] % d e f i n i e r t 3x3−Mat r i x N

5 Mit % können hinter die Kommandos Kommentare eingefügt werden. Dies wird insbesondere fürdie spätere Erstellung von MATLAB-Programmen sehr nützlich sein. Die hinter dem % bis zumZeilenende stehenden Zeichen einer Zeile werden von MATLAB ignoriert.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 17

N =

1 2 −14 −1 12 0 1

» V = M*N % Versuch Produkt M*N

V =

15 0 44 9 −3

» W = N*M % Versuch Produkt N*M??? Error using ==> mtimesInner matrix dimensions must agree .

MATLAB antwortet also auf den Versuch, die 2× 3-Matrix M mit der 3× 3-MatrixN zu multiplizieren, mit der 2× 3-Produktmatrix V . Der Versuch, die Faktoren zuvertauschen, scheitert, da das Produkt einer 3 × 3-Matrix mit einer 2 × 3-Matrixnicht definiert ist. MATLAB quittiert dies mit der Meldung Inner matrix dimensi-ons must agree, einer Fehlermeldung, die auch dem fortgeschrittenen MATLAB-Programmierer immer wieder begegnet.

Feldoperationen

Neben den Matrixoperationen benötigt man in sehr vielen Fällen jedoch auch eineentsprechende arithmetische Operation, welche komponentenweise ausgeführt wer-den soll.Sind die Operationen komponentenweise zu verstehen, was in der MATLAB-Terminologie eine Feldoperation oder Array-Operation genannt wird, so müssenzumindest diejenigen Operationen neu gekennzeichnet werden, bei denen es zuVerwechslungen mit den Matrixoperationen kommen kann.Dies wird in der MATLAB-Syntax durch das Voranstellen eines Punktes (.) vor dieOperation gelöst. Ein * alleine ist also stets als Matrixmultiplikation im algebrai-schen Sinne, ein .* stets als komponentenweise Multiplikation zu verstehen. Diesliefert auch bezüglich der Dimension der Objekte andere Regeln, wie das folgendeBeispiel zeigt:

» M = [1 2 3; 4 −1 2] % d e f i n i e r t 2x3−Mat r i x M

M =

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

18 Kapitel 1: Einführung in MATLAB

1 2 34 −1 2

» N = [1 −1 0; 2 1 −1] % d e f i n i e r t 2x3−Mat r i x N

N =

1 −1 02 1 −1

» M*N % Mat r i xp roduk t M*N??? Error using ==> mtimesInner matrix dimensions must agree .

» M. *N % komponentenw . M u l t i p l i k a t i o n

ans =

1 −2 08 −1 −2

Man erkennt, dass das Matrixprodukt M ·N diesmal nicht definiert ist! Allerdingsist das Produkt komponentenweise definiert. Zu jedem Eintrag von M gibt es einenpassenden Eintrag von N , mit dem das Produkt gebildet werden kann.Ein weiteres Beispiel wäre das häufig vorkommende Quadrieren der Komponen-ten eines Vektors:

» vekt = [ 1 , −2, 3 , −2, 0 , 4 ]

vekt =

1 −2 3 −2 0 4

» vekt ^2 % Vektor vekt zum Quadrat??? Error using ==> mpowerMatrix must be square .

» vekt . ^2 % vekt−Quadrat komponentenweise

ans =

1 4 9 4 0 16

Im ersten Fall möchte MATLABwieder eine Matrixoperation ausführen. Das Qua-drieren einerMatrix ist aber nurmöglich, falls dieMatrix quadratisch ist, das heißt,

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 19

gleiche Spalten- und Zeilenzahl hat. Dies ist hier nicht der Fall! Die Komponentenselbst können aber ohne weiteres quadriert werden.

Die Divisionen

Besondere Bedeutung hat das Divisionszeichen. Man unterscheidet in MATLABzwischen rechter Division / und linker Division \.Auch die Tatsache, dass es zwei Divisionen gibt, ist wieder eine Folge derMatrizenalgebra-Interpretation. Die Division zweier Matrizen A und B, also X =A/B, ist normalerweise nicht definiert!Der Quotient kann im Falle quadratischerMa-trizen sinnvoll nur als X = A · B−1 interpretiert werden, falls die inverse MatrixB−1 existiert. FallsA−1 existiert, wäre aber auch die „Division von links“X = A\Bsinnvoll, interpretiert in diesem Falle als X = A−1 · B.Diesen beiden Situationen trägt MATLAB mit der Definition der linken und derrechten Division Rechnung. Wir verdeutlichen dies an einem einfachen Beispielmit zwei invertierbaren 2 × 2-Matrizen:

» A = [2 1 ;1 1] % Mat r i x A

A =

2 11 1

» B = [− 1 1;1 1] % Mat r i x B

B =

−1 11 1

» Ainv = [1 −1; −1, 2] % Inverse zu A

Ainv =

1 −1−1 2

» Binv = [−1/2 1 / 2 ; 1 /2 , 1 / 2 ] % Inverse zu B

Binv =

−0.5000 0.50000.5000 0.5000

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

20 Kapitel 1: Einführung in MATLAB

» X1 = A /B % rechte D i v i s i o n

X1 =

−0.5000 1.50000 1.0000

» X2 = A*Binv % Kontro l l rechnung

X2 =

−0.5000 1.50000 1.0000

» Y1 = A \B % l i n k e D i v i s i o n

Y1 =

−2.0000 0.00003.0000 1.0000

» Y2 = Ainv *B % Kontro l l rechnung

Y2 =

−2 03 1

Das nächste Beispiel zeigt aber, dass MATLAB bei der Interpretation der Divisio-nen noch einen Schritt weiter geht:

» A = [2 1 ;1 1] % Mat r i x A

A =

2 11 1

» b= [ 2 ; 1 ] % Spal tenvektor b

b =

21

» x = A \b % l i n k e D i v i s i o n A " durch " b

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 21

x =

1.00000.0000

» y = A /b % rechte D i v i s i o n A " durch " b??? Error using ==> mrdivideMatrix dimensions must agree .

Offenbar produziert hier die „Division von links“ �x = A\�b die (in diesem Falleindeutige) Lösung des linearen Gleichungssytems A�x = �b, wie die folgende Probebeweist:

» A*x

ans =

2.00001.0000

Die rechte Division ist nicht definiert.Linke und rechte Division lassen sich auch für nichtquadratische Matrizen ver-wenden, um unter- oder überbestimmte Gleichungssysteme zu lösen. Da dieseAnwendungen aber weiter reichendemathematische Kenntnisse voraussetzen, alshier angenommen werden können und sollen, wird auf die Darstellung dieserMöglichkeiten verzichtet [18].

Zusammenfassung und Überblick

Das MATLAB-Demoprogramm aritdemo.m der Begleitsoftware demonstriert dieverschiedenen Möglichkeiten bei arithmetischen Operationen. Insbesondere las-sen sich hiermit die Unterschiede zwischen Matrix- und Feldoperationen sowiedas Matrixkonzept von MATLAB einüben. Es kann durch die Eingabe von aritde-mo im Kommandofenster gestartet6 werden.

Übungen

Bearbeiten Sie die folgenden Aufgaben zur Einübung der arithmetischen Opera-tionen.6 Kopieren Sie dazu vorher am besten alle Programme der Begleitsoftware in das aktuelle Arbeitsver-zeichnis.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tag

Dienstag

Mittw

och

Don

nerstag

Freitag

Lösunge

n

22 Kapitel 1: Einführung in MATLAB

Übung 8 (Lösung Seite 268)

Starten Sie das MATLAB-Demoprogramm aritdemo.m durch Aufruf des Befehlsaritdemo im MATLAB-Kommandofenster und arbeiten Sie das Programm durch.

Übung 9 (Lösung Seite 268)

Berechnen Sie

(a) das Standardskalarprodukt der Vektoren

�x =(

1 2 12 −3 −1

)und �y =

(2 0 −3 1

3 2)

mit Hilfe einer Matrixoperation und mit Hilfe einer Feldoperation,(b) das Produkt der Matrizen

A =

⎛⎜⎜⎜⎝

−1 3.5 2

0 1 −1.3

1.1 2 1.9

⎞⎟⎟⎟⎠ und B =

⎛⎜⎜⎜⎝

1 0 −1

−1.5 1.5 −3

1 1 1

⎞⎟⎟⎟⎠ ,

(c) mit Hilfe einer geeigneten Feldoperation aus der Matrix

A =

⎛⎜⎜⎜⎝

−1 3.5 2

0 1 −1.3

1.1 2 1.9

⎞⎟⎟⎟⎠

die Matrix

C =

⎛⎜⎜⎜⎝

−1 0 0

0 1 0

0 0 1.9

⎞⎟⎟⎟⎠ .

Übung 10 (Lösung Seite 269)

Testen Sie die linke Division A\�b mit der Matrix

A =

⎛⎝ 2 2

1 1

⎞⎠

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467

Mon

tagDien

stagM

ittwoch

Don

nerstag

FreitagLösu

ngen

1.2 Erste Schritte mit MATLAB: Rechnen und Visualisieren 23

und dem Vektor

�b =

⎛⎝ 2

1

⎞⎠

und interpretieren Sie das Ergebnis.

Übung 11 (Lösung Seite 270)

Testen Sie die rechte Division�b/A mit der Matrix

A =

⎛⎝ 2 2

1 1

⎞⎠

und dem Vektor

�b =(

2 1)

und interpretieren Sie das Ergebnis.

Übung 12 (Lösung Seite 270)

Berechnen Sie mit Hilfe der Division von rechts (oder links) die inverse Matrix von

M =

⎛⎜⎜⎜⎝

1 1 1

1 0 1

−1 0 0

⎞⎟⎟⎟⎠ .

1.2.3 Logische und relationale OperationenAuf logische und relationale Operatoren wollen wir an dieser Stelle nicht detail-liert eingehen, sondern nur die grundlegenden Dinge ansprechen.Prinzipiellhan-delt es sich hierbei um Operatoren, die als Feldoperatoren agieren (das heißt, dasssie prinzipiell komponentenweise auf die Einträge eines Vektors bzw. einer Matrixwirken) und als Ergebnis Wahrheitswerte liefern.Beispielsweise kann verglichen werden, ob die Komponenten zweier Matrizenan den gleichen Stellen einen Eintrag �= 0 (=logisch wahr) haben. Die folgendeMATLAB-Sequenz zeigt, wie dies mit Hilfe des logischen Operators & (logischesUnd) bewerkstelligt wird und was das Resultat dieser Operation ist.

© des Titels »MATLAB und Simulink« (ISBN 978-3-8266-9467-7) 2013 by Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg. Nähere Informationen unter: http://www.mitp.de/9467