
Einstieg in das Programmieren mit MATLAB
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
Ausführlich wird demonstriert, wie man Daten und Messwerte grafisch darstellen kann und wie grafische Benutzeroberflächen erzeugt werden. Darauf aufbauend vertiefen zahlreiche Anwendungen aus Ingenieur- und Naturwissenschaften das Wissen und führen in die weitergehenden numerischen Verfahren von MATLAB ein. Wo für spezielle Probleme das Basismodul von MATLAB nicht mehr ausreicht, wird für eine intensivere Nutzung auf die MATLAB-Toolboxen verwiesen - deren Installation zum Verständnis dieses Buches jedoch nicht notwendig ist.
Beispiele, zahlreiche Abbildungen und Übungsaufgaben zum Stoff fördern das Verständnis. Das Werk ist sowohl für Programmierneulinge als auch für Umsteiger von anderen Programmiersprachen wie C geeignet.
Dr. Ulrich Stein ist Professor für Maschinenbauinformatik/Physik/Mathematik am Department Maschinenbau und Produktion der HAW Hamburg.
More details
Other editions
Additional editions

Content
2 - Inhalt [Seite 7]
3 - 1 Einführung [Seite 14]
3.1 - 1.1 Hello, world [Seite 14]
3.2 - 1.2 Datenverarbeitung [Seite 16]
3.2.1 - 1.2.1 Hardware [Seite 16]
3.2.2 - 1.2.2 Software [Seite 17]
3.2.3 - 1.2.3 Datentypen [Seite 19]
3.2.4 - 1.2.4 Editieren [Seite 20]
3.2.5 - 1.2.5 Programmausführung [Seite 20]
3.3 - 1.3 Erster Kontakt mit MATLAB [Seite 21]
3.3.1 - 1.3.1 Der MATLAB-Desktop [Seite 21]
3.3.2 - 1.3.2 MATLAB als Taschenrechner [Seite 22]
3.3.3 - 1.3.3 Zahlen- und Textdarstellung [Seite 24]
3.3.4 - 1.3.4 Variablen und Datentypen [Seite 26]
3.3.5 - 1.3.5 Vektoren und Matrizen [Seite 28]
3.3.6 - 1.3.6 MATLAB aufräumen [Seite 31]
3.3.7 - 1.3.7 Zusammenfassung [Seite 31]
3.3.8 - 1.3.8 Aufgaben [Seite 32]
4 - 2 Programmstrukturen [Seite 34]
4.1 - 2.1 Funktionen [Seite 34]
4.1.1 - 2.1.1 Eine Black Box [Seite 34]
4.1.2 - 2.1.2 Eingangs- und Rückgabeparameter [Seite 35]
4.1.3 - 2.1.3 Funktionen in MATLAB [Seite 36]
4.1.4 - 2.1.4 Funktionsbeispiel: Umfang [Seite 38]
4.1.5 - 2.1.5 Stack, Funktionsparameter [Seite 39]
4.1.6 - 2.1.6 Ablaufprotokoll [Seite 40]
4.1.7 - 2.1.7 MATLAB-Arbeitsverzeichnis [Seite 41]
4.1.8 - 2.1.8 Zusammenfassung [Seite 43]
4.1.9 - 2.1.9 Aufgaben [Seite 44]
4.2 - 2.2 Ein- und Ausgabe [Seite 45]
4.2.1 - 2.2.1 I/O-Kanäle [Seite 45]
4.2.2 - 2.2.2 Einfache Ausgabe [Seite 45]
4.2.3 - 2.2.3 Formatierte Ausgabe [Seite 46]
4.2.4 - 2.2.4 Einfache Eingabe [Seite 48]
4.2.5 - 2.2.5 Ein-/Ausgabe-Beispiel: UmfangInput [Seite 49]
4.2.6 - 2.2.6 Zusammenfassung [Seite 50]
4.2.7 - 2.2.7 Aufgaben [Seite 50]
4.3 - 2.3 Ablaufstrukturen [Seite 51]
4.4 - 2.4 Verzweigungen [Seite 52]
4.4.1 - 2.4.1 Bedingungen [Seite 52]
4.4.2 - 2.4.2 Vergleiche [Seite 53]
4.4.3 - 2.4.3 Logische Verknüpfungen [Seite 54]
4.4.4 - 2.4.4 Alternative [Seite 55]
4.4.5 - 2.4.5 if-else-Beispiel: mySqrt [Seite 57]
4.4.6 - 2.4.6 Fallunterscheidung [Seite 59]
4.4.7 - 2.4.7 Zusammenfassung [Seite 60]
4.4.8 - 2.4.8 Aufgaben [Seite 60]
4.5 - 2.5 Schleifen [Seite 61]
4.5.1 - 2.5.1 Schleifenbedingung [Seite 61]
4.5.2 - 2.5.2 Zählschleife [Seite 62]
4.5.3 - 2.5.3 for-Beispiel: Fakultät [Seite 64]
4.5.4 - 2.5.4 Verschachtelte Schleifen [Seite 65]
4.5.5 - 2.5.5 Wiederholschleife [Seite 68]
4.5.6 - 2.5.6 while-Beispiel: e-Funktion [Seite 69]
4.5.7 - 2.5.7 Schleifen verlassen [Seite 72]
4.5.8 - 2.5.8 Zusammenfassung [Seite 73]
4.5.9 - 2.5.9 Aufgaben [Seite 73]
4.6 - 2.6 Felder [Seite 74]
4.6.1 - 2.6.1 Matrizen [Seite 74]
4.6.2 - 2.6.2 Matrix-Beispiel: sinPlot [Seite 77]
4.6.3 - 2.6.3 Matrizen erzeugen [Seite 79]
4.6.4 - 2.6.4 Der :-Operator [Seite 81]
4.6.5 - 2.6.5 meshgrid [Seite 82]
4.6.6 - 2.6.6 Matrix-Operatoren [Seite 84]
4.6.7 - 2.6.7 Verknüpfungen [Seite 86]
4.6.8 - 2.6.8 Cell-Arrays [Seite 87]
4.6.9 - 2.6.9 Zusammenfassung [Seite 88]
4.6.10 - 2.6.10 Aufgaben [Seite 89]
4.7 - 2.7 Grafik [Seite 90]
4.7.1 - 2.7.1 Grafiktypen [Seite 90]
4.7.2 - 2.7.2 2D-Grafik [Seite 90]
4.7.3 - 2.7.3 3D-Grafik [Seite 97]
4.7.4 - 2.7.4 Mehrere Plots in einer figure [Seite 100]
4.7.5 - 2.7.5 3D-Kurven [Seite 102]
4.7.6 - 2.7.6 Grafik-Handle [Seite 103]
4.7.7 - 2.7.7 Zusammenfassung [Seite 105]
4.7.8 - 2.7.8 Aufgaben [Seite 106]
4.8 - 2.8 Strukturen [Seite 107]
4.8.1 - 2.8.1 Strukturierte Daten [Seite 107]
4.8.2 - 2.8.2 Datenfelder [Seite 108]
4.8.3 - 2.8.3 struct [Seite 109]
4.8.4 - 2.8.4 struct-Beispiel: person [Seite 111]
4.8.5 - 2.8.5 struct ändern [Seite 112]
4.8.6 - 2.8.6 struct-Beispiel: CAD-Drahtmodell [Seite 114]
4.8.7 - 2.8.7 Objektorientierte Programmierung [Seite 117]
4.8.8 - 2.8.8 Zusammenfassung [Seite 122]
4.8.9 - 2.8.9 Aufgaben [Seite 122]
4.9 - 2.9 Dateien [Seite 123]
4.9.1 - 2.9.1 Dateizugriff [Seite 123]
4.9.2 - 2.9.2 Dateien lesen [Seite 124]
4.9.3 - 2.9.3 Dateien schreiben [Seite 125]
4.9.4 - 2.9.4 Zusammenfassung [Seite 126]
4.9.5 - 2.9.5 Aufgaben [Seite 126]
4.10 - 2.10 Strings [Seite 127]
4.10.1 - 2.10.1 Character-Arrays [Seite 127]
4.10.2 - 2.10.2 String-Funktionen [Seite 128]
4.10.3 - 2.10.3 String-Evaluation [Seite 130]
4.10.4 - 2.10.4 Zusammenfassung [Seite 131]
4.10.5 - 2.10.5 Aufgaben [Seite 132]
5 - 3 GUI [Seite 134]
5.1 - 3.1 Grafische Benutzeroberfläche [Seite 134]
5.1.1 - 3.1.1 Das große Warten - Callbacks [Seite 134]
5.1.2 - 3.1.2 Einführung in GUIDE [Seite 136]
5.1.3 - 3.1.3 Zusammenfassung [Seite 139]
5.1.4 - 3.1.4 Aufgaben [Seite 139]
5.2 - 3.2 GUI-Elemente [Seite 140]
5.2.1 - 3.2.1 Fenster und Maus [Seite 140]
5.2.2 - 3.2.2 GUIDE-M-File [Seite 141]
5.2.3 - 3.2.3 Text-Ausgabefeld [Seite 144]
5.2.4 - 3.2.4 Text-Eingabefeld [Seite 148]
5.2.5 - 3.2.5 GUI-Rückgabewert [Seite 150]
5.2.6 - 3.2.6 GUI-Grafikobjekt [Seite 155]
5.2.7 - 3.2.7 Pop-up-Menü [Seite 156]
5.2.8 - 3.2.8 Zusammenfassung [Seite 159]
5.2.9 - 3.2.9 Aufgaben [Seite 159]
5.3 - 3.3 GUI-Menüs [Seite 160]
5.3.1 - 3.3.1 Menu Bar [Seite 160]
5.3.2 - 3.3.2 Context Menu [Seite 164]
5.3.3 - 3.3.3 Zusammenfassung [Seite 166]
5.3.4 - 3.3.4 Aufgaben [Seite 166]
5.4 - 3.4 Standarddialoge [Seite 166]
5.4.1 - 3.4.1 Standarddialog-Typen [Seite 166]
5.4.2 - 3.4.2 Aufgaben [Seite 169]
5.5 - 3.5 Callback-Interaktionen [Seite 170]
5.5.1 - 3.5.1 Maus-Interaktion [Seite 170]
5.5.2 - 3.5.2 Tastatur-Interaktion [Seite 174]
5.5.3 - 3.5.3 Zusammenfassung [Seite 176]
5.5.4 - 3.5.4 Aufgaben [Seite 176]
6 - 4 Anwendungen [Seite 178]
6.1 - 4.1 Akustik: Signalverarbeitung [Seite 178]
6.1.1 - 4.1.1 Schwingungen [Seite 178]
6.1.2 - 4.1.2 Fourier-Transformation [Seite 181]
6.1.3 - 4.1.3 wav-Format [Seite 186]
6.1.4 - 4.1.4 Zusammenfassung [Seite 188]
6.1.5 - 4.1.5 Aufgaben [Seite 188]
6.2 - 4.2 Bildverarbeitung [Seite 189]
6.2.1 - 4.2.1 RGB-Farbmodell [Seite 189]
6.2.2 - 4.2.2 Grafikformate [Seite 190]
6.2.3 - 4.2.3 Bilder einlesen [Seite 191]
6.2.4 - 4.2.4 Bilder bearbeiten [Seite 194]
6.2.5 - 4.2.5 Hoch- und Tiefpass [Seite 198]
6.2.6 - 4.2.6 Zusammenfassung [Seite 202]
6.2.7 - 4.2.7 Aufgaben [Seite 202]
6.3 - 4.3 Spiel: Projekt Labyrinth [Seite 203]
6.3.1 - 4.3.1 Projektstruktur [Seite 203]
6.3.2 - 4.3.2 Datenbasis [Seite 204]
6.3.3 - 4.3.3 Spiel laden [Seite 205]
6.3.4 - 4.3.4 Spielfeld zeichnen [Seite 214]
6.3.5 - 4.3.5 Spielablauf [Seite 217]
6.3.6 - 4.3.6 Zusammenfassung [Seite 219]
6.3.7 - 4.3.7 Aufgaben [Seite 220]
6.4 - 4.4 Mathematik: Funktionen [Seite 220]
6.4.1 - 4.4.1 Polynome [Seite 220]
6.4.2 - 4.4.2 Kurvendiskussion [Seite 221]
6.4.3 - 4.4.3 Polynom-Interpolation [Seite 223]
6.4.4 - 4.4.4 Datenauswertung [Seite 225]
6.4.5 - 4.4.5 Nullstellen [Seite 227]
6.4.6 - 4.4.6 Newton-Verfahren [Seite 231]
6.4.7 - 4.4.7 Zusammenfassung [Seite 234]
6.4.8 - 4.4.8 Aufgaben [Seite 234]
6.5 - 4.5 Physik: Differentialgleichungen [Seite 235]
6.5.1 - 4.5.1 Federschwingung [Seite 235]
6.5.2 - 4.5.2 Differentialgleichungen [Seite 236]
6.5.3 - 4.5.3 Numerische Lösung [Seite 238]
6.5.4 - 4.5.4 Gedämpfte Schwingungen [Seite 242]
6.5.5 - 4.5.5 Erzwungene Schwingungen [Seite 246]
6.5.6 - 4.5.6 Zusammenfassung [Seite 250]
6.5.7 - 4.5.7 Aufgaben [Seite 251]
6.6 - 4.6 Technische Mechanik [Seite 252]
6.6.1 - 4.6.1 Zentrales Kraftsystem [Seite 252]
6.6.2 - 4.6.2 Lineare Gleichungssysteme [Seite 253]
6.6.3 - 4.6.3 Zusatzaufgabe [Seite 255]
6.6.4 - 4.6.4 Zusammenfassung [Seite 257]
6.6.5 - 4.6.5 Aufgaben [Seite 257]
6.7 - 4.7 Regelungstechnik [Seite 259]
6.7.1 - 4.7.1 Stehpendel [Seite 259]
6.7.2 - 4.7.2 Stabilität [Seite 263]
6.7.3 - 4.7.3 Eigenwerte und Eigenvektoren [Seite 263]
6.7.4 - 4.7.4 Regelung [Seite 268]
6.7.5 - 4.7.5 Control System Toolbox [Seite 271]
6.7.6 - 4.7.6 Simulink [Seite 274]
6.7.7 - 4.7.7 Zusammenfassung [Seite 279]
6.7.8 - 4.7.8 Aufgaben [Seite 279]
6.8 - 4.8 Prozess-Kommunikation [Seite 280]
6.8.1 - 4.8.1 COM, OLE und ActiveX [Seite 281]
6.8.2 - 4.8.2 Kontakt zu MS-Excel [Seite 281]
6.8.3 - 4.8.3 VBA-Kontakt zu Excel [Seite 287]
6.8.4 - 4.8.4 Zusammenfassung [Seite 290]
6.8.5 - 4.8.5 Aufgaben [Seite 291]
6.9 - 4.9 MEX - C in MATLAB [Seite 291]
6.9.1 - 4.9.1 C [Seite 291]
6.9.2 - 4.9.2 DLL [Seite 293]
6.9.3 - 4.9.3 C-Beispiel [Seite 295]
6.9.4 - 4.9.4 Parameterübergabe [Seite 297]
6.9.5 - 4.9.5 Zusammenfassung [Seite 300]
6.9.6 - 4.9.6 Aufgaben [Seite 300]
7 - 5 Programmierhilfen [Seite 302]
7.1 - 5.1 Das Programm läuft nicht! [Seite 302]
7.2 - 5.2 Der Debugger [Seite 307]
7.3 - 5.3 Weitere MATLAB-Tools [Seite 308]
7.3.1 - 5.3.1 M-Lint Code Checker [Seite 309]
7.3.2 - 5.3.2 Profiler [Seite 309]
7.3.3 - 5.3.3 Dependency Report [Seite 309]
7.3.4 - 5.3.4 Help Report [Seite 309]
7.3.5 - 5.3.5 File Comparison Report [Seite 309]
7.4 - 5.4 Zusammenfassung [Seite 310]
8 - 6 Befehlsübersicht [Seite 312]
9 - Literatur [Seite 321]
10 - Index [Seite 325]
3.1 Grafische Benutzeroberfläche
Bei den bisher vorgestellten MATLAB-Programmen war es so, dass der Programmablauf bereits vor dem Start des Programms ziemlich genau festgelegt wurde. Alles kommt schön der Reihe nach. Nur an fest definierten Stellen kann es eine Verzweigung geben oder man wiederholt einen Abschnitt in einer Schleife. Zu genau vorbestimmten Zeiten werden Sie aufgefordert, Daten über die Tastatur einzugeben. Und nur dann, wenn das Programm es für richtig erachtet, bekommen Sie die Ergebnisse auf dem Bildschirm angezeigt.
Das heißt - der Ablauf ist vorhersehbar und folgt dem vom Programmierer vorgegebenen Muster, einem Plan, dem der Benutzer des Programms folgen muss. Bei Programmen mit grafischer Benutzeroberfläche (Graphical User Interface - GUI) scheint plötzlich alles anders zu sein. Jetzt hat der Benutzer das Kommando. Mit der Maus oder der Tastatur bestimmt er, wann die nächste Aktion startet und was das Programm dann machen soll.
Das klingt auf den ersten Blick alles sehr demokratisch und selbstbestimmt - ist aber letzten Endes nur Propaganda: Auch bei GUI-Programmen haben die Programmierer im Voraus genau festgelegt, wann welche Aktion durchgeführt wird. Und zur Kontrolle der Benutzereingaben werden exakt dieselben Programmstrukturen verwendet wie bisher, also Verzweigungen und Schleifen.
3.1.1 Das große Warten - Callbacks
Sie kennen wahrscheinlich die folgende Situation: Man möchte etwas zusammen unternehmen und wartet darauf, dass der Partner zurückruft, damit es endlich losgehen kann. Dieses große Warten ist das eigentliche Geheimnis von GUI. Während die bisher vorgestellten Programme nach dem Start sofort mit Benutzerabfragen, Berechnungen etc. loslegten, erzeugen GUI-Programme nach dem Start normalerweise nur die Daten für ein Startfenster (Window) und melden dem Betriebssystem, dass ein neues Fenster auf dem Bildschirm bereitsteht. Dann wartet das GUI-Programm in einer while-Schleife, der so genannten Message-Loop, auf "Meldungen" (messages) vom Betriebssystem.
Meldungen vom Betriebssystem - wie hat man sich das vorzustellen? Das Betriebssystem ist der Teil, durch den alle Ein- und Ausgaben im Rechner verwaltet werden. Eingaben, das sind für uns primär Tastatur-Eingaben und Klicks mit der Maus oder Änderungen der Mausposition. Alle Eingaben und die Ausgaben auf dem Bildschirm beziehen sich in Fenster( Window)-basierten Betriebssystemen immer auf ein bestimmtes, aktives Fenster auf dem Desktop des Rechners.
Das Programm, dem das zur Zeit aktive Fenster gehört, zum Beispiel das Startfenster einer GUI-Anwendung, wird im Message-Loop-Zustand vom Be- triebssystem informiert, wenn eine Tastatur-Eingabe oder eine Maus-Aktion erfolgt ist bzw. wenn ein eigenes Fenster auf dem Desktop aktiviert oder deaktiviert wurde - dies sind die Meldungen, die das Betriebssystem an das wartende, angemeldete Programm verschickt. Trifft nun eine Meldung beim GUI-Programm ein, dann wird je nach Art der Meldung reagiert.
Dieses Aufdröseln der Meldungen und das Zuordnen der Aktionen wird den GUIProgrammierern heutzutage glücklicherweise von mächtigen Bibliotheksfunktionen abgenommen - Funktionen, die zu verstehen auch geübten Programmierern oftmals schwerfällt. Auch MATLAB hat so ein mächtiges Tool (Interface-Builder), um GUI-Oberflächen zu erzeugen und zu verwalten: GUIDE (Graphical User Interface Design Environment).
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.