Sie sind hier
E-Book

Programmieren mit MATLAB

Programmiersprache, Grafische Benutzeroberflächen, Anwendungen

AutorUlrich Stein
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2017
Seitenanzahl355 Seiten
ISBN9783446454231
FormatPDF/ePUB
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis31,99 EUR

Die Grundkenntnisse des Programmierens mit MATLAB erlernen
Die wichtigsten Grundlagen auf einen Blick - für Studierende der Ingenieurwissenschaften
Dieses Lehrbuch beginnt mit der Vorstellung der elementaren Prinzipien der Datenverarbeitung und vermittelt darauf aufbauend die Grundkenntnisse des Programmierens anschaulich mithilfe der in MATLAB integrierten Programmiersprache.
Zahlreiche Anwendungen vertiefen das Wissen und führen zusätzlich in numerische Verfahren in 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 aber nicht notwendig ist.
Die 6. Auflage wurde komplett überarbeitet, aktualisiert und um aktuelle Beispiele aus der Praxis ergänzt.
Umfangreiches Zusatzmaterial finden Sie online auf der Website zum Buch: www.Stein-Ulrich.de/Matlab/

Dr. Ulrich Stein ist Professor für Maschinenbauinformatik/Physik/Mathematik im Heinrich Blasius-Institut am Department Maschinenbau und Produktion der HAW Hamburg.

Kaufen Sie hier:

Horizontale Tabs

Leseprobe
2. Programmstrukturen

In Kapitel 1 haben wir ein wenig in MATLAB herumgeschnüffelt, und Sie haben auch bereits einige Möglichkeiten des Programms kennen gelernt. Nun, in Kapitel 2, sollen systematisch die zentralen Bereiche der MATLAB-Programmiersprache vorgestellt werden. Für eine vollständige Beschreibung aller Möglichkeiten, die MATLAB bietet, reicht der Umfang dieses Buches jedoch bei Weitem nicht aus. Deshalb wurden für dieses Kapitel speziell die Aspekte ausgewählt, die typischerweise auch in anderen Programmiersprachen, wie in C oder Java, die Basis der Programmierung bilden. Dazu gehören

  • die zentralen Ablauf-Konstrukte: Funktion, Verzweigung, Schleife,

  • die Kommunikation mit der Außenwelt: Ein- und Ausgabe von Zahlen und Text, Grafikerstellung, Dateioperationen,

  • die erweiterten Datentypen: Feld, Struktur, Klasse, String.

2.1Funktionen

Funktionen dienen dazu, Teilprobleme zu lösen. Dazu übergibt man ihnen eine Anzahl von Daten, aus denen die Funktion die nötigen Ergebnisse berechnet und diese dem Aufrufer zurückgibt.

2.1.1Eine Black Box

Sie (ich spreche mal die männlichen Leser an) besuchen Ihre Freundin und bringen Eier, Milch, Mehl, Zucker, Butter und Salz mit. Ihre Liebste verschwindet mit den Sachen in der Küche, während Sie im Zimmer warten müssen. Nach einiger Zeit kommt Ihre Freundin mit frischen Pfannkuchen zurück.

Diesen Vorgang kann man als „Black Box“ ansehen – eine „schwarze Schachtel“, in der abgedunkelt etwas passiert, was Sie von außen nicht beobachten können.

 

Bild 2.1 Black Box Pfannkuchen

Die Black Box hat Eingangswerte, alles was in die Box hineingelangt, in unserem Fall Eier, Milch, Mehl, Zucker, Butter und Salz – und Rückgabewerte, die Pfannkuchen, die in der Box auf geheimnisvolle Art entstehen (der Zutritt zur Küche wurde Ihnen nach leidvollen Erfahrungen bei der letzten Party verboten).

Auch Funktionen sind so eine Art Black Box. Nur beschickt man sie nicht mit Eiern, sondern mit Zahlen oder Texten, also unseren Daten. Aus dem Mathematik-Unterricht sollten Ihnen bereits mathematische Funktionen bekannt sein, wie Sinus, Kosinus oder die Wurzelfunktion, die man in Programmiersprachen oft mit sqrt (Square Root) bezeichnet. Wie bei der Black Box für die Pfannkuchen gibt es auch bei den Funktionen Eingangs- und Rückgabewerte – beispielsweise kann man die Zahl 9 als Eingabe an die sqrt-Funktion geben, die dann als Rückgabe hoffentlich die Zahl 3 liefert.

 

Bild 2.2 Black Box sqrt-Funktion

In MATLAB lautet dieser Aufruf, wie wir bereits gesehen haben, folgendermaßen:

>> sqrt( 9 ) ans = 3

Oder falls man sich das Ergebnis in der Variablen y merken möchte:

>> y = sqrt( 9 ) y = 3

Wie MATLAB oder eine andere Programmiersprache die Wurzel von 9 berechnet, das wird dem Anwender im Allgemeinen nicht mitgeteilt. Auch hier dürfen wir die Küche der Programmierer nicht betreten und müssen darauf vertrauen, dass MATLAB einen zuverlässigen Algorithmus zur Wurzelberechnung verwendet.

2.1.2Eingangs- und Rückgabeparameter

Bleiben wir noch etwas bei den Eingangs- und Rückgabewerten bzw. den dafür vorgesehenen formalen Parametern. Die meisten Funktionen haben eine fest vorgegebene Zahl von Eingangs- und Rückgabeparametern, bei der sqrt-Funktion sind es ein Eingangs- und ein Rückgabeparameter. Daneben sind die Reihenfolge der Parameter und deren Datentyp wichtig. Es gibt aber auch Funktionen, bei denen die Zahl und der Datentyp der Eingangswerte (Argumente) variabel ist und erst beim Aufruf der Funktion, also zur Laufzeit, bestimmt wird – durch den so genannten varargs-Mechanismus .

Daneben gibt es Funktionen, die gar keine Eingangsparameter haben – die Analogie wäre der Fall des Pfannkuchenbackens, wobei Sie selbst keinerlei Zutaten mitbringen, sondern auch das der Freundin überlassen. Diese Black Box hätte dann nur den Rückgabeparameter Pfannkuchen. Analog gibt es Funktionen, die keine Rückgabeparameter haben, was auf den ersten Blick kurios klingt: Was soll eine Funktion, die nichts zurückgibt? Diese Funktion wird aber normalerweise trotzdem etwas tun, aber wir, als Auftraggeber, bekommen nichts zurück – die Analogie wäre zum Beispiel der Auftrag, während unseres Urlaubs die Haustiere zu füttern, wovon wir selbst jedoch keine Rückmeldung bekommen. In zuverlässigen Projekten sollte aber jede Funktion etwas zurückgeben, zum Beispiel eine E-Mail, dass die Aufgabe erledigt wurde – Vertrauen ist gut, Kontrolle des Vorgangs besser.

2.1.3Funktionen in MATLAB

In MATLAB haben Funktionen folgende allgemeine Form:

% H-Line (Hilfe zur Funktion) function y = fname( x ) % Verarbeitung der Eingangsparameter . . . x % Zuweisung an den Rückgabeparameter y = . . . end % Ende der Funktions-Definition

Zeilen im Funktions-Code, die mit einem %-Zeichen beginnen, sind Kommentare , die bei der Programmausführung nicht berücksichtigt werden. Sie dienen alleine als Hilfe für die Programmierer. Von spezieller Bedeutung ist dabei eine Kommentarzeile, die vor der Funktionsdeklaration steht. Diese so genannte H-Line enthält einen Hilfetext zur Funktion und wird von MATLAB angezeigt, wenn Sie im Command-Window die Anweisung eintippen.

In der H-Line dürfen vor dem %-Zeichen keine Leerzeichen stehen! Ansonsten kann die H-Line auch mehrere Zeilen lang sein, solange sie nicht durch eine Leerzeile geteilt ist. Die H-Line darf auch unterhalb der function-Zeile stehen.

Der eigentliche Funktions-Code beginnt in MATLAB mit dem Schlüsselwort function. Diese Zeile, der Funktionskopf , enthält die Deklaration der Funktion. Hier werden der Name der Funktion und die Reihenfolge der Rückgabe- und Eingangsparameter festgelegt. Der Funktionsnamefname muss mit einem Buchstaben beginnen. Darauf kann jede beliebige Kombination von Buchstaben, Zahlen oder Unterstrichen („_“) folgen. Gibt es mehrere Eingangsparameter (Funktionsargumente), dann werden diese durch Kommas getrennt, zum Beispiel . Bei mehreren Rückgabeparametern verwendet man anstelle der einen Variablen y eine MATLAB-Liste, zum Beispiel , wie wir sie bereits von den Zeilenvektoren kennen. Gibt es keine Rückgabeparameter, dann entfällt in der Funktionsdeklaration der vordere Teil , oder man ersetzt y durch eine leere Liste, also beispielsweise .

Unterhalb der Zeile mit dem Funktionskopf folgt der Funktionskörper . Hier beginnt eine beliebige Anzahl von Anweisungen, in denen die Eingangsparameter verarbeitet werden. Hat die Funktion einen Rückgabewert, muss in der Funktion irgendwo eine Anweisung erscheinen, die den Rückgabewert setzt, also zum Beispiel in der Form . Der Programmablauf innerhalb einer Funktion erfolgt sequentiell , das heißt, der Programm-Code wird Zeile für Zeile nacheinander abgearbeitet – außer man trifft auf einen Verzweigungspunkt (Auswahl), eine Schleife (Iteration) oder auf eine Unterfunktion.

MATLAB kennt, im Gegensatz zur Programmiersprache C++, weder Zeiger noch Referenzen. Die Übergabe der Eingangsdaten an die Funktion erfolgt daher immer mittels Pass-by-value, das heißt, die in den Variablen gespeicherten Werte werden als Kopie an die Funktion übergeben. Sie können auf diesem Weg keine Daten an den Aufrufer zurückreichen. Auch wenn Sie die Daten innerhalb der Funktion verändern, hat dies keinerlei Einfluss auf die Variablen, mit denen die Funktion aufgerufen wurde. Eine Rückgabe erreichen Sie nur über die Zuweisung der Werte an einen Rückgabeparameter.

Für jede selbst geschriebene MATLAB-Funktion, die Sie vom Command-Window aus aufrufen möchten, erzeugen Sie im Arbeitsverzeichnis eine separate...

Blick ins Buch
Inhaltsverzeichnis
Vorwort zur 6. Auflage6
Inhalt8
1 Einführung14
1.1?Hello, world14
1.2?Datenverarbeitung16
1.2.1?Hardware16
1.2.2?Software18
1.2.3?Datentypen19
1.2.4?Editieren20
1.2.5?Programmausführung20
1.3?Erster Kontakt mit MATLAB21
1.3.1?Der MATLAB-Desktop21
1.3.2?MATLAB als Taschenrechner22
1.3.3?Zahlen- und Textdarstellung24
1.3.4?Variablen und Datentypen25
1.3.5?Vektoren und Matrizen29
1.3.6?MATLAB aufräumen32
1.3.7?Zusammenfassung32
1.3.8?Aufgaben32
2 Programmstrukturen34
2.1?Funktionen34
2.1.1?Eine Black Box34
2.1.2?Eingangs- und Rückgabeparameter35
2.1.3?Funktionen in MATLAB36
2.1.4?Funktionsbeispiel: Umfang38
2.1.5?Stack, Funktionsparameter40
2.1.6?Ablaufprotokoll43
2.1.7?MATLAB-Arbeitsverzeichnis43
2.1.8?Zusammenfassung46
2.1.9?Aufgaben46
2.2?Ein- und Ausgabe47
2.2.1?I/O-Kanäle47
2.2.2?Einfache Ausgabe48
2.2.3?Formatierte Ausgabe48
2.2.4?Einfache Eingabe50
2.2.5?Ein-/Ausgabe-Beispiel: UmfangInput52
2.2.6?varargs-Mechanismus53
2.2.7?Zusammenfassung54
2.2.8?Aufgaben54
2.3?Ablaufstrukturen55
2.4?Verzweigungen56
2.4.1?Bedingungen56
2.4.2?Vergleiche56
2.4.3?Logische Verknüpfungen57
2.4.4?Alternative58
2.4.5?if-else-Beispiele61
2.4.6?Fallunterscheidung63
2.4.7?Zusammenfassung65
2.4.8?Aufgaben65
2.5?Schleifen66
2.5.1?Schleifenbedingung66
2.5.2?Zählschleife67
2.5.3?Summen- und Produkt-Bildung70
2.5.4?Iteration und Rekursion72
2.5.5?Verschachtelte Schleifen73
2.5.6?Wiederholschleife75
2.5.7?while-Beispiel: e-Funktion77
2.5.8?Numerische Verfahren79
2.5.9?Schleifen verlassen81
2.5.10?Zusammenfassung82
2.5.11?Aufgaben82
2.6?Felder83
2.6.1?Matrizen83
2.6.2?Matrix-Beispiel: sinPlot86
2.6.3?Matrizen erzeugen88
2.6.4?Der :-Operator und linspace89
2.6.5?Analyse von Feldern91
2.6.6?meshgrid92
2.6.7?Matrix-Operatoren95
2.6.8?Verknüpfungen97
2.6.9?Cell-Arrays97
2.6.10?Zusammenfassung99
2.6.11?Aufgaben100
2.7?Grafik101
2.7.1?Grafiktypen101
2.7.2?2D-Grafik101
2.7.3?3D-Grafik109
2.7.4?Mehrere Plots in einer figure112
2.7.5?3D-Kurven114
2.7.6?Grafik-Handle115
2.7.7?Zusammenfassung118
2.7.8?Aufgaben119
2.8?Strukturen und Klassen120
2.8.1?Strukturierte Daten120
2.8.2?Datenfelder121
2.8.3?struct121
2.8.4?Suchen123
2.8.5?struct ändern125
2.8.6?struct-Beispiel: CAD-Drahtmodell126
2.8.7?Objektorientierte Programmierung (OOP)129
2.8.8?Zusammenfassung135
2.8.9?Aufgaben136
2.9?Dateien136
2.9.1?Dateizugriff136
2.9.2?Dateien lesen138
2.9.3?Dateien schreiben138
2.9.4?Excel-Dateien139
2.9.5?MAT-Files141
2.9.6?Zusammenfassung142
2.9.7?Aufgaben142
2.10?Strings143
2.10.1?Character-Arrays143
2.10.2?String-Funktionen145
2.10.3?String-Evaluation148
2.10.4?Zusammenfassung149
2.10.5?Aufgaben150
3 GUI152
3.1?Grafische Benutzeroberfläche152
3.1.1?Das große Warten – Callbacks152
3.1.2?Einführung in GUIDE154
3.1.3?Zusammenfassung157
3.1.4?Aufgaben157
3.2?GUI-Elemente157
3.2.1?Fenster und Maus157
3.2.2?GUIDE-M-File158
3.2.3?Text-Ausgabefeld162
3.2.4?Text-Eingabefeld165
3.2.5?GUI-Rückgabewert167
3.2.6?GUI-Grafikobjekt171
3.2.7?Pop-up-Menü172
3.2.8?Zusammenfassung174
3.2.9?Aufgaben175
3.3?GUI-Menüs175
3.3.1?Menu Bar176
3.3.2?Context Menu179
3.3.3?Zusammenfassung181
3.3.4?Aufgaben182
3.4?Standarddialoge182
3.4.1?Standarddialog-Typen182
3.4.2?Aufgaben186
3.5?Callback-Interaktionen186
3.5.1?Maus-Interaktion186
3.5.2?Tastatur-Interaktion190
3.5.3?Zusammenfassung192
3.5.4?Aufgaben192
4 Anwendungen193
4.1?Akustik: Signalverarbeitung193
4.1.1?Schwingungen193
4.1.2?Fourier-Transformation197
4.1.3?Audio-Funktionen201
4.1.4?Zusammenfassung202
4.1.5?Aufgaben202
4.2?Bildverarbeitung204
4.2.1?RGB-Farbmodell204
4.2.2?Grafikformate204
4.2.3?Bilder einlesen205
4.2.4?Bilder bearbeiten208
4.2.5?Hoch- und Tiefpass212
4.2.6?Zusammenfassung215
4.2.7?Aufgaben216
4.3?Spiel: Projekt Labyrinth216
4.3.1?Projektstruktur216
4.3.2?Datenbasis218
4.3.3?Spiel laden219
4.3.4?Spielfeld zeichnen224
4.3.5?Spielablauf226
4.3.6?Zusammenfassung227
4.3.7?Aufgaben227
4.4?Mathematik: Funktionen228
4.4.1?Polynome228
4.4.2?Kurvendiskussion229
4.4.3?Polynom-Fit, Lineare Regression231
4.4.4?Datenauswertung235
4.4.5?Nullstellen236
4.4.6?Newton-Verfahren240
4.4.7?Numerische Integration243
4.4.8?Vektorfelder245
4.4.9?Zusammenfassung247
4.4.10?Aufgaben248
4.5?Physik: Differentialgleichungen249
4.5.1?Federschwingung249
4.5.2?Differentialgleichungen250
4.5.3?Numerische Lösung252
4.5.4?Ungedämpfte Schwingungen256
4.5.5?Gedämpfte Schwingungen259
4.5.6?Erzwungene Schwingungen262
4.5.7?Randwertproblem266
4.5.8?Zusammenfassung270
4.5.9?Aufgaben271
4.6?Technische Mechanik272
4.6.1?Zentrales Kraftsystem272
4.6.2?Lineare Gleichungssysteme273
4.6.3?Zusatzaufgabe275
4.6.4?Gaußsches Eliminationsverfahren277
4.6.5?Multivariate Regression280
4.6.6?Zusammenfassung282
4.6.7?Aufgaben282
4.7?Regelungstechnik284
4.7.1?Stehpendel284
4.7.2?Stabilität288
4.7.3?Eigenwerte und Eigenvektoren289
4.7.4?Regelung292
4.7.5?Control System Toolbox™296
4.7.6?Simulink®298
4.7.7?Zusammenfassung304
4.7.8?Aufgaben304
4.8?Prozess-Kommunikation, Internet305
4.8.1?COM, OLE und ActiveX306
4.8.2?Kontakt zum Internet Explorer306
4.8.3?Java Virtual Machine (JVM)311
4.8.4?Zusammenfassung314
4.8.5?Aufgaben315
4.9?MEX – C in MATLAB315
4.9.1?C316
4.9.2?DLL318
4.9.3?C-Beispiel319
4.9.4?Parameterübergabe321
4.9.5?Zusammenfassung324
4.9.6?Aufgaben324
5 Programmierhilfen325
5.1?Das Programm läuft nicht!325
5.2?Der Debugger329
5.3?Weitere MATLAB-Tools331
5.3.1?M-Lint Code Checker331
5.3.2?Profiler331
5.3.3?Dependency Report332
5.3.4?Help Report332
5.3.5?File Comparison Report332
5.4?Zusammenfassung332
6 Befehlsübersicht334
Literatur344
Index348

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

ARCH+.

ARCH+.

ARCH+ ist eine unabhängige, konzeptuelle Zeitschrift für Architektur und Urbanismus. Der Name ist zugleich Programm: mehr als Architektur. Jedes vierteljährlich erscheinende Heft beleuchtet ...

Berufsstart Bewerbung

Berufsstart Bewerbung

»Berufsstart Bewerbung« erscheint jährlich zum Wintersemester im November mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

BONSAI ART

BONSAI ART

Auflagenstärkste deutschsprachige Bonsai-Zeitschrift, basierend auf den renommiertesten Bonsai-Zeitschriften Japans mit vielen Beiträgen europäischer Gestalter. Wertvolle Informationen für ...

care konkret

care konkret

care konkret ist die Wochenzeitung für Entscheider in der Pflege. Ambulant wie stationär. Sie fasst topaktuelle Informationen und Hintergründe aus der Pflegebranche kompakt und kompetent für Sie ...

Die Versicherungspraxis

Die Versicherungspraxis

Behandlung versicherungsrelevanter Themen. Erfahren Sie mehr über den DVS. Der DVS Deutscher Versicherungs-Schutzverband e.V, Bonn, ist der Interessenvertreter der versicherungsnehmenden Wirtschaft. ...

ea evangelische aspekte

ea evangelische aspekte

evangelische Beiträge zum Leben in Kirche und Gesellschaft Die Evangelische Akademikerschaft in Deutschland ist Herausgeberin der Zeitschrift evangelische aspekte Sie erscheint viermal im Jahr. In ...

filmdienst#de

filmdienst#de

filmdienst.de führt die Tradition der 1947 gegründeten Zeitschrift FILMDIENST im digitalen Zeitalter fort. Wir begleiten seit 1947 Filme in allen ihren Ausprägungen und Erscheinungsformen.  ...