MATLAB. Autor: Marcus Rabe. Modul TWS/ 2 ECTS. PD Dr.-Ing. Gerhard Staude WT Institut für Informationstechnik

Größe: px
Ab Seite anzeigen:

Download "MATLAB. Autor: Marcus Rabe. Modul 2991 2 TWS/ 2 ECTS. PD Dr.-Ing. Gerhard Staude WT 2011. Institut für Informationstechnik"

Transkript

1 Modul 2991 MATLAB PD Dr.-Ing. Gerhard Staude 2 TWS/ 2 ECTS WT 2011 Autor: Marcus Rabe Professur für Informationsverarbeitung Prof. G. Bauch Institut für Informationstechnik Fakultät für Elektrotechnik und Informationstechnik

2 Inhalt 1 Einstieg Zur Vorlesung Zum Skript Weiterführende Literatur Über MATLAB Syntax in diesem Skript Die MATLAB Umgebung MATLAB starten und beenden Der MATLAB Desktop Menü und Symbolleisten Start Menü Command Window Workspace / Current Directory Command History Hilfe zu MATLAB help die MATLAB Hilfefunktion Die MATLAB Dokumentation Hilfe im Internet MATLAB Central Arbeiten mit MATLAB MATLAB als Taschenrechner Grundlegende Befehle Vektoren und Matrizen Zusammenfassung Matrizen Ein magisches Quadrat Eingabe von Matrizen Summe, Transposition und Spur Indizierung Indexbereiche Zusammenfassung Mathematische Ausdrücke Seite 1 von 142

3 6.1 Variablen Zahlen Operatoren Vordefinierte Funktionen Arbeiten mit Matrizen Logische Operatoren und Vergleiche Logische Indizierung Zufallszahlen Zusammenfassung Lineare Algebra Grundsätzliches Lineare Gleichungssysteme Zusammenfassung D Grafiken Erstellen eines linearen Plots Bildfenster Grafiken erweitern Teilbilder erzeugen Polardarstellung Logarithmische Plots Komplexe Zahlen Achsenwahl Achsenbeschriftung und Titel Formatierung mit LaTex Befehlen Zusammenfassung D Grafiken Lineare 3D Plots Gittergrafiken Flächengrafiken Farbbalken Zusammenfassung Ablaufsteuerung Seite 2 von 142

4 10.1 if Anweisung switch case Anweisung for Schleifen while Schleifen break Zusammenfassung Script-Dateien (m-files) Beispiel Erstellung aus der Command History Erstellen im Editor Kommentare Debugger Speichern und Laden von Daten Zusammenfassung Modulare Programmierung Die Funktion Beispiel für eine Funktion: Kurvendiskussion Arbeitsbereiche und Variablentypen Matlab-eigene Funktionen Debugger bei Funktionen Zusammenfassung Effiziente Programmierung Vektorisierung Matrizen verändern Zusammenfassung Datentypen Numerische Datentypen Logische Variablen Char und String Stringfunktionen Zusammenfassung Datenstrukturen Seite 3 von 142

5 15.1 Cell-Arrays Strukturen Einige wichtige Funktionen Zusammenfassung Benutzerschnittstellen Kommandozeile Dialogboxen Zusammenfassung Befehlsregister Verzeichnisse Abbildungen Codelistings Syntax Tabellen Seite 4 von 142

6 1 Einstieg 1.1 Zur Vorlesung MATLAB ist ein interaktives, matrixorientiertes Programmpaket zur Berechnung, Visualisierung und Programmierung wissenschaftlich-technischer Fragestellungen. Die Vorlesung MATLAB ein Grundkurs bietet einen grundlegenden Einstieg in dieses vielseitige, in den Ingenieurswissenschaften weitverbreitete Werkzeug mit den Schwerpunkten Kennenlernen der MATLAB Umgebung Einführung in die matrixorientierte Programmierung Visualisierung und graphische Darstellung Ablaufsteuerung und modulares Programmieren Datentypen und -strukturen Benutzerschnittstellen und -dialoge Die Vorlesung geht dabei neue pädagogische Wege und verknüpft eine e-learning Komponente mit Vorlesungsanteilen im Seminarstil. Anhand eines ausführlichen Skripts erarbeiten die Teilnehmer die einzelnen Lehreinheiten in weitgehend freier Zeiteinteilung selbständig am eigenen Rechner. Ein internet-basiertes Lernportal stellt dabei den Kontakt zum Dozenten und zu den anderen Kursteilnehmern sicher. In den begleitenden Seminarveranstaltungen werden die erarbeiteten Lösungen dann präsentiert, Problemstellen und alternative Lösungsansätze diskutiert und die Inhalte weiter vertieft. Die Veranstaltung kann für alle Vertiefungsrichtungen des Studienganges Elektrotechnik und Informationstechnik (B. Sc.) im Rahmen des Wahlpflichtmoduls 1594 mit 2 ECTS eingebracht werden. Sie eignet sich gut zur Ergänzung von Vorlesungen und Übungen mit MATLAB-Anteilen, sowie zur Vorbereitung auf Bachelor- und Masterarbeiten. Wegen der vorgesehenen interaktiven Komponente muss die Teilnehmerzahl für diese Veranstaltung auf 18 beschränkt werden 1.2 Zum Skript Dieses Skript dient dem autodidaktischen Erlernen der Grundlagen von MATLAB. Hierzu gehören Übungen, die bei den gemeinsamen Terminen ausgegeben werden und dann selbständig bearbeitet werden sollen. Diesem Skript liegt eine vollständige Installation von MATLAB Version R2009b und höher zugrunde. MATLAB steht an allen Arbeitsplätzen im Rechenzentrum zur Verfügung und kann auch von jedem Rechner aus über den Windows-Terminal-Dienst ( genutzt werden. Seite 5 von 142

7 1.3 Weiterführende Literatur Als Ergänzung zu dieser Unterlage sind folgende Quellen besonders empfehlenswert: Die MATLAB Handbücher MATLAB kompakt, Wolfgang Schweizer, Oldenbourg Verlag, ISBN: Numerische Mathematik, Michael Knorrenschild, Fachbuchverlag Leipzig, ISBN: Über MATLAB MATLAB, eine Abkürzung für MATrix LABoratory, wurde von Cleve Moler und Jack Little in den 70er Jahren entwickelt und wird von deren Firma The MathWorks, Inc vertrieben ( Es gehört zu den weltweit bekanntesten Tools zur Berechnung, Visualisierung und Programmierung komplexer mathematischer und technischer Probleme. Es wurde ursprünglich als Schnittstelle zu LINPACK und EISPACK entwickelt. Die Funktionalität von MATLAB kann auf zwei Arten genutzt werden: zum einen als interaktive Berechnungs- und Simulationsumgebung (MATLAB ist ein sehr mächtiger Taschenrechner) und zum anderen über den Aufruf von MATLAB Programmen. Die MATLAB eigene Programmiersprache ist eine Interpretersprache und verwendet weitgehend die bekannte mathematische Notation. Obwohl MATLAB normalerweise numerisch rechnet, gibt es auch Schnittstellen zu Computer-Algebra Systemen wie Maple, eine Toolbox zum algebraischen Rechnen, sowie die Möglichkeit Code in Fortran, Java, C oder Pearl einzubetten. MATLAB ist modular aufgebaut. Zusätzlich zu dem Basismodul (MATLAB selbst) gibt es eine Vielzahl an Toolboxen welche weitere Funktionalitäten für die unterschiedlichsten Anwendungsbereiche zur Verfügung stellen. 1.5 Syntax in diesem Skript Wenn Sie in diesem Skript ein Textstück sehen, welches wie folgt aussieht: Eingabe in MATLAB dann handelt es sich um eine Eingabe in das Command Window. Wenn Sie den entsprechenden Code selbst ausprobieren wollen, geben Sie ihn in Ihr Command Window hinter dem Prompt (>>) gefolgt von einem Return ein. Ausgaben, die MATLAB erzeugt, sehen in diesem Skript wie folgt aus: Hallo Eingaben in den MATLAB Editor sind durch folgende Formatierung zu erkennen: Eingabe im Editor Seite 6 von 142

8 2 Die MATLAB Umgebung 2.1 MATLAB starten und beenden MATLAB wird gestartet, indem man das entsprechende Symbol auf dem Windows Desktop doppelklickt. Eine weitere Möglichkeit ist der Start über das Windows-Startmenü. Abbildung 2-1: MATLAB Logo Nach der Anzeige eines Fensters mit einem Hinweis zur aktuellen MATLAB Version öffnet sich ein weiteres Fester mit der MATLAB Arbeitsumgebung. 2.2 Der MATLAB Desktop Nach dem Start von MATLAB öffnet sich der MATLAB-Desktop. Dieser ist in folgende Bereiche unterteilt: Titelleiste Command Window Workspace Current Folder START-Menü Abbildung 2-2: MATLAB Desktop Statusleiste Command History Seite 7 von 142

9 Die Titelleiste ist bereits aus anderen Windows-Anwendungen bekannt. Links steht der Name des Programms, hier MATLAB. Rechts befinden sich drei Knöpfe zum Minimieren, Ändern der Fenstergröße und Schließen des Programms. Unter der Titelleiste schließen sich die Menüleiste gefolgt von der Symbolleiste an. Auf der linken Seite befinden sich die Fenster WORKSPACE und COMMAND HISTORY. Rechts befindet sich das Eingabefenster (COMMAND WINDOW). Am unteren Ende des MATLAB-Desktops befinden sich die Statusleiste, in der aktuelle Meldungen von MATLAB angezeigt werden und der START-Knopf für das START-Menü. Die einzelnen Leisten und Fenster werden im Folgenden erläutert. Es ist möglich, das Aussehen des MATLAB-Desktops an die eigenen Bedürfnisse anzupassen und die einzelnen Fenster beliebig zu platzieren. Alle Teilfenster besitzen folgende Einstellmöglichkeiten: das Kreuz rechts oben schließt das Fenster, der Pfeil daneben entkoppelt das Fenster von dem übergeordneten MATLAB-Desktop. Es lässt sich somit frei auf dem Windows-Desktop bewegen. Zum erneuten Andocken des Fensters klickt man einfach erneut auf den Pfeil. 2.3 Menü und Symbolleisten Die Menüleiste enthält die Menüs FILE, EDIT, DEBUG, DISTRIBUTED, DESKTOP, WINDOW und HELP. Das FILE Menü enthält Menüpunkte zum Neu anlegen, Öffnen und Speichern von Variablen. Weiterhin existieren Menüpunkte zur Einstellung grundlegender MATLAB-Parameter, zu Visualisierungen und Skripten. Im EDIT Menü sind Funktionen enthalten, die dem Menü BEARBEITEN von Microsoft Office Produkten entsprechen. Variablen und Inhalte sowie eingegebene Befehle können ausgeschnitten, in die Zwischenablage kopiert und wieder eingefügt werden. Das DEBUG Menü enthält Funktionen zur Fehlersuche und -bereinigung. Das DESKTOP Menü enthält Einträge aller möglichen Fenster auf dem MATLAB-Desktop. Mit diesen Einträgen kann man sich den MATLAB-Desktop individuell einrichten und die Fensteranordnung zur späteren Verwendung speichern. Das WINDOW Menü zeigt alle im MATLAB-Desktop geöffneten Fenster an. Durch einen Klick auf einen Eintrag, springen Sie direkt dorthin. Ein Klick auf COMMAND WINDOW positioniert den Cursor direkt im Arbeitsfenster. Ist das Teilfenster WORKSPACE aktiviert, so steht zusätzlich das Menü GRAPHICS zur Verfügung. In diesem Menü befinden sich Funktionen, die Sie bei der Datenvisualisierung unterstützen. Menü Symbolleiste Seite 8 von 142

10 Shortcut-Leiste Abbildung 2-3: MATLAB Menüleiste Die Symbolleiste enthält verschiedene Symbole, mit deren Hilfe man eine Menüfunktion schnell aufrufen kann. Verschiedene Symbole sind bereits aus Microsoft Office Produkten bekannt, z.b. Datei öffnen. Weiterhin lässt sich das Arbeitsverzeichnis (CURRENT DIRECTORY) von Matlab einstellen. Mit dem Knopf gelangt man zu einem Standard-Dialog zur Verzeichnisauswahl von Windows. Durch Drücken des Knopfes wechselt man in die nächst höhere Verzeichnisebene. Die Shortcut-Leiste beinhaltet frei definierbare Knöpfe. Jedem neu generierten Knopf können mehrere MATLAB-Befehle hinzugefügt werden. Wie das funktioniert, erfährt man nach dem Drücken des Knopfes HOW TO ADD. 2.4 Start Menü Oft vergessen und wenig beachtet ist das MATLAB-START-Menü. Dies liegt auch daran, dass viele dort aufgeführte Funktionen bereits über die Menüleiste erreicht werden können. Die Bedienung ist angelehnt an die Bedienung des Windows-Start-Menüs. Abbildung 2-4: MATLAB Startmenü Seite 9 von 142

11 Unter dem Punkt MATLAB befinden sich weitere hilfreiche Programme, die bestimmte Tätigkeiten erleichtern. Der IMPORT WIZARD beispielsweise hilft beim Laden von Daten aus Dateien unterschiedlicher Formate. Er wird später erklärt. Der PROFILER ist ein nützliches Tool zur Performance-Steigerung von MATLAB Programmen und Skripten. NOTEBOOK richtet eine neue Dokumentenvorlage in Microsoft Word ein. Damit kann man MATLAB-Kommandos sowie deren Ausgaben direkt in einem Word-Dokument speichern. Unter dem Punkt TOOLBOXES finden sich alle installierten MATLAB-Toolboxen. Toolboxen sind Programm-Pakete die Funktionen für spezifische Berechnungen zur Verfügung stellen. Zum Beispiel enthält die IMAGE PROCESSING Toolbox viele Funktionen zur Verarbeitung von Bildern. 2.5 Command Window Abbildung 2-5: MATLAB Startmenü - Toolboxes Das COMMAND WINDOW ist ein zentrales Element von MATLAB. In ihm werden alle MATLAB-Befehle eingegeben, die nach der Eingabe sofort ausgeführt werden. Die Ergebnisse der Befehle sowie Warnungen und Fehlermeldungen werden im Eingabefenster angezeigt. Der Prompt >> zeigt an, dass MATLAB bereit zur Ausführung von eingegebenen Befehlen ist. Diese werden direkt hinter dem Prompt eingegeben. Zum Beispiel führt die Eingabe von Seite 10 von 142

12 1 + 1 zur Ausgabe von 2 ans steht für answer, also für die Antwort des Programms. So einfach ist es, mit MATLAB zu rechnen. 2.6 Workspace / Current Directory Links neben dem COMMAND WINDOW befindet sich das Fenster mit der Bezeichnung WORKSPACE. Dieses besteht aus einer Symbolleiste, in der sich Funktionen zum Anlegen, Speichern, Einlesen und Drucken von Variablen finden. Was Variablen sind, wird später erläutert. Im WORKSPACE finden sich alle Variablen, die erstellt und verwendet wurden Abbildung 2-6: MATLAB Workspace Am unteren Rand des Fensters befinden sich zwei Registerkarten. Die Registerkarte WORKSPACE ist ausgewählt und das Fenster zeigt den Inhalt des Arbeitsbereiches an. Drückt man nun auf die Registerkarte CURRENT DIRECTORY, erhält man einen Mini-Browser, der den Inhalt des aktuellen Arbeitsverzeichnisses anzeigt. Durch einen Doppelklick auf eine Datei oder ein Verzeichnis wird dieses geöffnet. Handelt es sich bei der Datei um eine Datendatei, so wird der IMPORT WIZARD gestartet. Ist es eine Textdatei, so öffnet sich der MATLAB eigene Editor und der Inhalt der Datei wird angezeigt. Seite 11 von 142

13 Abbildung 2-7: MATLAB Folder Browser In dem Mini-Browser findet man aus Windows bekannte Symbole zum Wechseln des Verzeichnisses auf die nächst-höhere Verzeichnisebene und zum Anlegen neuer Ordner. Das Symbol ruft die Dateisuche auf. Hat man im oberen Bereich eine MATLAB-Datendatei angeklickt, sieht man im unteren Bereich eine Vorschau ihres Inhalts. Seite 12 von 142

14 2.7 Command History Über dem Start-Menü befindet sich das Fenster COMMAND HISTORY. Es enthält alle im COMMAND WINDOW eingegebenen MATLAB-Befehle. Abbildung 2-8: MATLAB Command History Möchte man nun einen oder mehrere bereits eingegebene Befehle nochmals ausführen, so kann man wie folgt vor gehen: 1. Den/die Befehl(e) in der COMMAND HISTORY durch einen Klick mit der Maus markieren. Zur Auswahl mehrerer einzelner Befehle die Taste Strg auf der Tastatur gedrückt halten und dann auf die benötigten Befehle klicken. Um mehrere hintereinander stehende Befehle auszuwählen, markiert man den ersten Befehl mit einem Mausklick, drückt dann auf der Tastatur die Shift -Taste (Umschalttaste) und klickt dann mit dem Mauszeiger auf den letzten Befehl der Befehlsreihe. 2. Mit der rechten Maustaste auf einen markierten Befehl klicken. Das Kontextmenü erscheint. Im Kontextmenü gibt es verschiedene Möglichkeiten. Man kann mit CUT die Befehle ausschneiden, mit COPY die Befehle in die Windows-Zwischenablage kopieren, mit EVALUATE SELECTION die markierten Befehle ausführen oder diese mit DELETE SELECTION löschen. CLEAR ENTIRE HISTORY löscht den kompletten Inhalt des Fensters COMMAND HISTORY. CREATE M-FILE erzeugt eine Datei, die die Befehle enthält, CREATE SHORTCUT fügt einen Knopf mit der Funktionalität der Befehle in die Shortcut-Leiste ein und PROFILE CODE startet ein Tool zur Performance-Analyse der Befehle. Seite 13 von 142

15 3. Der Kommandozeilen-Editor bietet eine weitere Möglichkeit Kommandos zu wiederholen: Durch betätigen der Pfeiltasten Aufwärts und Abwärts kann man durch die letzten Kommandos navigieren. Seite 14 von 142

16 3 Hilfe zu MATLAB 3.1 help die MATLAB Hilfefunktion Der Befehl help() bietet im Eingabefenster Hilfe zu Funktionen, deren Namen bekannt sein muss. Beispielsweise liefert die Eingabe von help('sin') SIN Sine of argument in radians. SIN(X) is the sine of the elements of X. See also asin, sind. Overloaded methods: darray/sin Reference page in Help browser Syntax 3-1: help doc sin Informationen zum Gebrauch der Funktion sin, die den Sinus eines Eingabewertes berechnet. Die erhaltene Ausgabe wird direkt vom Programmierer der Funktion in der entsprechenden Datei erstellt. Dementsprechend fällt auch der Informationsgehalt aus. MATLAB besitzt jedoch eine umfangreiche technische Dokumentation zu allen Funktionen und Befehlen. 3.2 Die MATLAB Dokumentation Die Dokumentation zu zahlreichen Befehlen und Funktionen in MATLAB startet man mit der Eingabe doc Syntax 3-2: Help Browser - Doc Nach dieser Eingabe öffnet sich der MATLAB HELP BROWSER. Dieser kann auch gestartet werden, indem man im Menü HELP den Eintrag MATLAB HELP auswählt, die F1-Taste auf der Tastatur drückt oder in der Symbolleiste das Fragezeichensymbol anklickt. Der HELP BROWSER ist eines der wichtigste Werkzeuge bei der Arbeit mit MATLAB. Er enthält den kompletten Inhalt der MATLAB Handbücher und darüber hinaus noch zahlreiche weitere Beispiele. Das Menü des HELP BROWSER ist mit den Einträgen VIEW, GO und FAVORITES an die Bedienung von Internet-Browsern angelehnt. Im Menü GO befinden sich Einträge zum Zurückgehen (BACK) und zum Aktualisieren (REFRESH) des Browserinhalts. Im Menüpunkt FAVORITES kann man eigene Favoriten- Seiten ablegen. Im Menü VIEW lassen sich zusätzlich zur Hilfeseite auch noch deren Quelltext im HTML-Format anzeigen. Seite 15 von 142

17 Abbildung 3-1: MATLAB Dokumentation In der Symbolleiste des HELP BROWSERS befinden sich zusätzliche Hilfen zur Navigation. Mit den Pfeiltasten kann man ähnlich dem Internet Browser vorwärts und rückwärts in den bereits betrachteten Seiten navigieren. Um nach einem Begriff zu suchen, gibt man ihn einfach oben links in das Eingabefeld ein und drückt dann Enter. Seite 16 von 142

18 Abbildung 3-2: MATLAB Dokumentation - Stichwortsuche Abbildung 3-3: MATLAB Dokumentation - Suchergebnisse Links werden nun alle Suchergebnisse, nach Relevanz geordnet, aufgelistet. Seite 17 von 142

19 Die Hilfeseiten sind standardisiert aufgebaut. Zuerst steht der Name des Befehls bzw. der Funktion mit einer kurzen Erläuterung. Danach bekommt man ein Beispiel für die Syntax, also wie der Befehl bzw. die Funktion im COMMAND WINDOW richtig eingegeben wird. Danach findet sich eine ausführliche Beschreibung sowie ein Beispiel, das man auch direkt in MATLAB ausführen kann. Je nach Befehl bzw. Funktion kommen danach noch Hinweise zur Definition und zum Algorithmus, den MATLAB für die Berechnung verwendet. Am Schluss erhält man noch Hinweise auf weitere ähnliche Funktionen. Besonders hilfreich ist häufig, die Funktionen nach Kategorien anzeigen zu lassen. Abbildung 3-4: MATLAB Dokumentation - Suchergebnisse Seite 18 von 142

20 3.3 Hilfe im Internet MATLAB Central Wenn sich Fragen oder Probleme in MATLAB auftun, zu denen sich keine Lösung in der Dokumentation findet, so besteht die Möglichkeit im Internet nach Lösungen zu suchen. The Mathworks stellt dazu eine Internetseite MATLAB Central zur Verfügung. Die Erfahrung zeigt, dass dort zu sehr vielen Problemen Lösungen sowie fertig programmierte MATLAB-Funktionen zur Verfügung stehen. Die Seite findet sich unter Es gibt verschiedene Möglichkeiten, direkt auf MATLAB Central zuzugreifen. Im Menü HELP findet sich unter dem Eintrag WEB RESOURCES der Punkt MATLAB CENTRAL. Abbildung 3-5: MATLAB - Hilfemenü Seite 19 von 142

21 Abbildung 3-6: MATLAB Central Einen schnellen Zugriff auf die benötigte Hilfe bieten die Navigationsleiste und die Suchfunktion. Die Navigationsleiste ist unterteilt in folgende Abschnitte: Abbildung 3-7: MATLAB Central Navigation File Exchange Hier finden sich implementierte Lösungen zu einer Vielzahl von Fragestellungen. MATLAB Newsgroup In der MATLAB Newsgroup können Fragen zu Problemen eingestellt werden. Meistens werden die Fragen von erfahrenen MATLAB-Usern schnell beantwortet. Link Exchange Im Link Exchange finden sich kommentierte URLs zu MATLAB-Lösungen im Internet. Blogs Hier schreiben Mitarbeiter von The Mathworks über Tricks und Tipps im Umgang mit MATLAB. Ein Blick lohnt sich auf jeden Fall zur Erweiterung der MATLAB-Kenntnisse. Contest The Mathworks schreibt Programmier-Wettbewerbe aus. Weitere Informationen dazu gibt es hier. Zur Suche nach aktuellen Problemlösungen ist diese Rubrik nicht geeignet. Seite 20 von 142

22 Mathworks.com Dieser Link führt direkt zur Internetseite Um bei einem bestehenden Problem nicht alle Rubriken von Hand durchsuchen zu müssen, bietet die Internetseite natürlich auch eine Suchfunktion an. Rechts oben finden sich die entsprechenden Bedienelemente. Zusätzlich zur Eingabe eines Suchwortes kann man die Suchregion auf die oben genannten Rubriken einschränken oder die Suche auf die ganze Seite von Mathworks.com ausdehnen. Abbildung 3-8: MATLAB Central Suche Seite 21 von 142

23 4 Arbeiten mit MATLAB 4.1 MATLAB als Taschenrechner MATLAB ist zunächst einmal ein sehr mächtiger Taschenrechner. Als erster Einstieg dienen ein paar einfache Rechnungen: Wenn man Folgendes im COMMAND WINDOW eingibt 1+2 antwortet MATLAB mit: 3 MATLAB lässt sich also genauso wie ein Taschenrechner mit den gewöhnlichen mathematischen Symbolen +, -", *, /, der Potenzierung ^ und den runden Klammern benutzen: (20+4*4)/9 5^ Code 4-1: Taschenrechner Das Ergebnis wird dabei jeweils in der Variablen ans (für answer ) abgespeichert. MATLAB verfügt auch über eine Vielzahl von mathematischen Funktionen, auf die aber später eingegangen wird. 4.2 Grundlegende Befehle Bevor wir uns in die Tiefen von MATLAB wagen, zunächst noch ein paar grundlegende Befehle. Wenn man wissen will, welche Variablen sich im Workspace befinden, tippt man who Syntax 4-1: who ein. MATLAB teilt mit, dass sich die Variablen a und ans im Workspace befinden. Your variables are: a ans Um zum Beispiel die Variable a zu löschen tippt man Seite 22 von 142

24 clear('a') Syntax 4-2: clear() ein. Um nun zu überprüfen ob die Variable a wirklich aus dem Workspace entfernt wurde, kann man sich einfach wieder alle Variablen anzeigen lassen: who Your variables are: ans Code 4-2: Beispiel who Der Befehl clear ohne Argument bewirkt eine Bereinigung des kompletten Workspace. Ein weiterer hilfreicher Befehl ist clc. Dieser löscht das Command Window. Dies ist häufig nützlich wenn man mit etwas Neuem anfängt, da man so leichter Übersicht behält. Die Befehle werden hierdurch allerdings nicht aus der Command History gelöscht. Auch der Inhalt des Workspace bleibt erhalten. 4.3 Vektoren und Matrizen MATLAB hat im Vergleich zu einem normalen Taschenrechner einen entscheidenden Vorteil: Es kann auch mit Vektoren und Matrizen arbeiten. Um Matrizen einzugeben, bedient man sich folgender Syntax: Man gibt die Matrix zeilenweise ein, wobei die einzelnen Elemente einer Zeile durch ein Leerzeichen oder durch ein Komma getrennt werden. Die Zeilen werden durch ein Strichpunkt getrennt und die gesamte Matrix von eckigen Klammern umschlossen. Um Vektoren einzugeben muss, man diese nur als Matrix mit einer Dimension gleich 1 betrachten und kann analog vorgehen. Einige Beispiele: [ ; 2,2,2,2; ; 4,4,4,4] [ ] [1; 2; 3; 4] 1 2 Seite 23 von 142

25 3 4 Code 4-3: Beispiel Matrizen Mit diesen Matrizen kann man natürlich auch rechnen. Dabei erkennt MATLAB automatisch, ob eine Matrix mit einem Skalar oder einer weiteren Matrix verknüpft werden soll. [1, 2; 2, 4] Code 4-4: Beispiel Skalaraddition MATLAB hat also zu jedem Element der Matrix die Zahl 4 addiert. Was passiert nun aber, wenn man eine Matrix addiert? [1, 2; 2, 4] + [1, 2; 3, 4] Code 4-5: Beispiel Matrixaddition Nun wurden die Elemente an den entsprechenden Positionen addiert. MATLAB kann also zwischen Skalaren und Matrizen unterscheiden und sich entsprechend verhalten. Nun zur Multiplikation: [1, 2; 3, 4] * [1, 2; 3, 4] Code 4-6: Beispiel Matrixmultiplikation Dies ist das Ergebnis einer normalen Matrixmultiplikation. Um alternativ die Matrizen elementeweise zu multiplizieren, fügt man einen Punkt vor dem Operator ein: [1, 2; 3, 4].* [1, 2; 3, 4] Code 4-7: Beispiel elementweise Multiplikation (Punktoperator) Seite 24 von 142

26 Der Punkt vor einem Operator bewirkt eine elementeweise Ausführung der Operation. Seite 25 von 142

27 4.4 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: + Addition - Subtraktion * Multiplikation / Division ^ Potenzierung () Klammern zur Festlegung der Reihenfolge. Elementweise Verarbeitung einer Matrix [] Eingabe von Matrizen und Vektoren ; Trennen der Zeilen einer Matrix, Trennen der Elemente einer Zeile clc clear() who Command Window leeren Variable(n) löschen Variablen im Arbeitspeicher anzeigen Tabelle 4-1: Zusammenfassung Kapitel 4 Seite 26 von 142

28 5 Matrizen 5.1 Ein magisches Quadrat Matrizen sind die Grundlage, um Probleme und Daten in MATLAB darzustellen. Da fast alle Datentypen von MATLAB als Matrizen dargestellt werden (ein Skalar ist für MATLAB beispielsweise eine 1x1 Matrix), bietet es sich an, zu allererst diese Sichtweise und den Umgang damit zu erlernen. Als Beispiel für den Einstieg soll eine Matrix aus dem Renaissance Holzschnitt Melancholia I des deutschen Künstlers Albrecht Dürer dienen. Abbildung 5-1: Magisches Quadrat - Albrecht Dürer Sie stellt ein sogenanntes magisches Quadrat dar, welches folgende Eigenschaften besitzt: Die Summen der Zeilen sind gleich Die Summen der Spalten sind gleich Die Summen der Diagonalen sind gleich Die Summen der Zeilen, Spalten und Diagonalen sind gleich. Im Folgenden soll Dürers Matrix auf diese Eigenschaften untersucht werden. Seite 27 von 142

29 5.2 Eingabe von Matrizen Um nun Dürers Matrix zu untersuchen, muss diese natürlich zuerst eingegeben werden. Damit dies nur einmal zu geschehen hat, wird diese der Variablen A zugewiesen, über die sie von nun an erreichbar ist. A = [ ; ; ; ] A = Code 5-1: Eingabe einer Matrix MATLAB hat die Matrix aus dem Holzschnitt jetzt im Arbeitsspeicher unter dem Namen A abgelegt. 5.3 Summe, Transposition und Spur Die erste Eigenschaft einer magischen Matrix ist die Gleichheit der Spalten- und Zeilensummen. Um diese zu überprüfen, kann man wie folgt vorgehen: sum(a) Code 5-2: Spaltensumme sum() Wenn keine Ausgabevariable spezifiziert wird, speichert MATLAB das Ergebnis in der Variablen ans. Der sum() Befehl hat einen Zeilenvektor gebildet, welcher die Spaltensummen der Matrix A enthält. Jede der Spalten hat also als Summe die Zahl 34. Wie lassen sich nun die Zeilensummen überprüfen? Die meisten MATLAB Befehle wirken, wie am Beispiel von sum() gesehen, spaltenweise. Daher ist die einfachste Methode, um die Zeilensummen zu bilden, den Befehl sum() auf die transponierte Matrix von A anzuwenden und dann das Ergebnis erneut zu transponieren. Um eine Matrix zu transponieren benutzt man den 'Operator: A' Code 5-3: Transposition Hinweis: Der ' Operator ist über folgende Tastenkombination zu erreichen: Shift-# Seite 28 von 142

30 Um die Zeilensummen von A zu bilden, kann man also Folgendes machen: sum(a')' Code 5-4: Summe mit Transposition und erhält die Zeilensummen von A in einem Spaltenvektor. Die zweite Eigenschaft eines magischen Quadrats ist, dass die Summe der Elemente auf der Hauptdiagonalen ebenfalls gleich der Spaltensumme sein muss. Zur Bestimmung der Elemente auf der Hauptdiagonalen der Matrix A nutzen wir die Funktion diag(). diag(a) Code 5-5: Extrahieren der Hauptdiagonalen einer Matrix - diag() Die Summe ist also ganz einfach zu ermitteln: sum(diag(a)) 34 Code 5-6: Summe Hauptdiagonale mit diag() Um nun auch noch die Gegendiagonale zu untersuchen, muss man sich eines kleinen Tricks bedienen. Da MATLAB keine spezielle Funktion anbietet, um die Elemente der Gegendiagonalen auszugeben, muss man diese eben zur Hauptdiagonalen machen. Dies geht ganz einfach, indem man die Matrix an ihrer Mittelsenkrechten spiegelt: fliplr(a) Code 5-7: Matrix an Mittelsenkrechter spiegeln - fliplr() Seite 29 von 142

31 Nun stehen die Elemente der Gegendiagonalen von A auf der Hauptdiagonalen und man kann genauso verfahren, wie zuvor: sum(diag(fliplr(a))) 34 Code 5-8: Summe Gegendiagonale mit diag() und fliplr() Damit sind alle Eigenschaften eines magischen Quadrates für die Matrix A überprüft. 5.4 Indizierung Matlab kann natürlich auch einzelne Elemente einer Matrix indizieren. Das Element in Zeile i und Spalte j wird mit A(i,j) angesprochen. Zum Beispiel gibt A(3,2) 6 Code 5-9: Matrix-Indizierung das Element in der 3. Zeile und 2. Spalte von A. Zu beachten ist hierbei, dass MATLAB nicht, wie von vielen Programmiersprachen bekannt, bei 0 zu zählen beginnt, sondern bei 1. Es ist auch möglich, ein Element über einen einzelnen Index k anzusprechen. Normalerweise wird dies bei Vektoren angewendet, kann aber auch bei Matrizen benutzt werden. In diesem Falle wird die Matrix A als ein einziger Spaltenvektor betrachtet, der aus der Aneinanderreihung der Spalten von A entsteht. Im Fall von Dürers Matrix ist also A(8) 15 Code 5-10: Indizierung - Reihung eine weitere Möglichkeit das Element (4,2) anzusprechen. Eine Matrix kann also auch als eine Aneinanderreihung von Spaltenvektoren betrachtet werden. Wenn man einen Wert außerhalb der Matrix aufruft, teilt MATLAB dies mit: Seite 30 von 142

32 A(4,5)??? Index exceeds matrix dimensions. Code 5-11: Indizierung - Fehler Allerdings ist es möglich, einen Wert außerhalb der Feldgrenzen zu speichern. Dabei erweitert MATLAB die Größe der Matrix einfach passend: X = A; X(6,6) = 29 X = Code 5-12: Zuweisen von Werten außerhalb der Feldgrenzen Nicht bestimmte Zellen werden bei der Erweiterung mit Nullen aufgefüllt. Der Strichpunkt am Ende der Eingabe unterdrückt die Ausgabe. Das heißt, wenn man den Befehl X = A; eingibt wird die Matrix X zwar im Speicher angelegt, aber nicht ausgegeben. 5.5 Indexbereiche Einer der wichtigsten Operatoren in MATLAB ist der Doppelpunkt. Er tritt immer im Zusammenhang mit einem Bereich auf. Um zum Beispiel die Zahlen von 1 bis 15 zu erhalten, tippt man einfach: 1: Code 5-13: Bereichsangabe Die Ausgabe ist ein Zeilenvektor der die Zahlen von 1 bis 15 der Reihe nach enthält. Es ist auch möglich andere Schrittweiten zu wählen: 121:-11: :pi/8:pi Seite 31 von 142

33 Code 5-14: Bereichsangabe mit Schrittweite Der Doppelpunkt lässt sich aber auch zur Indizierung verwenden. Diese bezieht sich dann auf Teile von Matrizen: A(1:2,4) 13 8 Code 5-15: Indizierung mit Bereichsangabe ergibt einen Spaltenvektor bestehend aus den ersten beiden Elementen der 4. Spalte von A. Um die Summe aller Elemente der 4. Spalte von A zu berechnen kann man nun also schreiben: sum(a(1:4,4)) 34 Code 5-16: Summe mit Bereichsangabe Dies lässt sich sogar noch einfacher lösen. Der alleinstehende Doppelpunkt indiziert alle Elemente einer Spalte oder Zeile. sum(a(:,4)) 34 Code 5-17: Indizierung mit : Das Schlüsselwort end indiziert die letzte Spalte oder Zeile, ohne dass man wissen muss, wie groß die Matrix ist. sum(a(:,end)) 34 Code 5-18: Indizierung mit end berechnet also die Summe der letzten Zeile von A. Im Grunde stellen die Indizes selbst wieder einen Vektor dar. Seite 32 von 142

34 Wenn man nun z.b. die 2. und 3. Spalte von A vertauschen will, kann man dies wie folgt machen: A = A(:,[ ]) Code 5-19: Spalten vertauschen 5.6 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: : Indizierung eines Bereiches ' (i,j) diag() end fliplr() pi sum() Transponierte einer Matrix oder eines Vektors (Tastenkombination Shift-#) Indizierung in einer Matrix Elemente auf der Hauptdiagonale Die letzte Spalte oder Zeile einer Matrix Spiegel der Matrix an ihrer Mittellinie Die Zahl pi Summe Tabelle 5-1: Zusammenfassung Kapitel 5 Seite 33 von 142

35 6 Mathematische Ausdrücke 6.1 Variablen Im Unterschied zu den meisten gängigen Programmiersprachen benötigt MATLAB keine Typdeklaration oder Dimensionsangaben. Der Benutzer kann neue Variablen einfach benutzen, oder alte überschreiben. Der Inhalt der Variablen interessiert MATLAB an dieser Stelle nicht, dieser kann sich auch jederzeit während der Laufzeit des Programms ändern. MATLAB kümmert sich um den Rest. Dieses Verhalten ist häufig sehr komfortabel, birgt aber auch eine nicht zu unterschätzende Fehlerquelle. Der Benutzer hat dafür zu sorgen, dass seine Variablen im Programmablauf konsistent sind und die richtigen Inhalte aufweisen. Dies ist gerade bei größeren Programmen oft nicht ganz trivial. Variablennamen bestehen aus mindestens einem Buchstaben am Anfang, gefolgt von maximal 62 Buchstaben, Zahlen und Unterstrichen. MATLAB unterscheidet zwischen Groß- und Kleinbuchstaben. Im Folgenden ein paar Beispiele: x = 5; X = 7; Mein_Name = 'Student'; x = 'Hallo' Code 6-1: Beispiele für gültige Variablennamen Bei Eingabe obiger Kommandos wird der Variablen x zuerst die Zahl 5 zugewiesen, und dann anschließend durch die Zeichenkette Hallo ersetzt. 6.2 Zahlen MATLAB versteht sowohl die wissenschaftliche Schreibweise (1.23e4 = 12300) als auch die normale Dezimalschreibweise. (MATLAB kann außerdem Zahlen zu beliebiger Basis verarbeiten, dies wird an späterer Stelle gezeigt). Zu beachten ist, dass das im Deutschen bei Dezimalzahlen übliche Komma durch einen Punkt zu ersetzen ist, da MATLAB aus dem amerikanischen Sprachraum stammt. Imaginäre Zahlen werden durch ein hinten angestelltes i oder j dargestellt. Man kann die Buchstaben i und j auch als Variablennamen benutzen. Dies überschreibt die imaginäre Einheit. Beispiele für gültige Zahlendarstellung sind: e-20 1i j 3e5i inf Seite 34 von 142

36 MATLAB speichert alle Zahlen im double-format nach IEEE 754. Die Genauigkeit hängt von der Zahlengröße ab (für Details sei auf die IEEE754 Norm verwiesen). Der Wertebereich liegt zwischen ca. und. Weiterhin sind 0, pi, eps (relative Genauigkeit eps gibt den Abstand von 1 zur nächst größeren Gleitkommazahl an, die darstellbar ist) und Inf (das MATLAB Kürzel für Unendlich) als spezielle Zahlenwerte vorhanden. 6.3 Operatoren MATLAB verwendet folgende arithmetische Operatoren mit ihren jeweiligen Prioritätsregeln: + Addition - Subtraktion * Multiplikation / Division ^ ' Potenzierung Transposition () Klammern zur Festlegung der Auswertereihenfolge Tabelle 6-1: Operatoren Diese Operatoren können mit Matrizen sowie mit Skalaren arbeiten. Die Verarbeitung ist daher kontextabhängig. Ein Beispiel ist das Skalar- sowie das Matrixprodukt. Beide bedienen sich desselben Operators - * -, der die Eingabe kontextabhängig verarbeitet. A = [ ] A = A * A' 55 A' * A A * A ??? Error using ==> mtimes Seite 35 von 142

37 Inner matrix dimensions must agree. Code 6-2: Beispiele Multiplikation Weiterhin gibt es noch einen besonderen Operator (Punkt-Operator.), welcher zur elementweisen Ausführung eines Operators auf einer Matrix dient: A = A^2 A.^ Code 6-3: Beispiele Exponentialrechnung Im ersten Fall wurde das Matrixprodukt der Matrix A mit sich selbst gebildet. Der Punkt vor dem Operator bewirkt, dass jedes Element einzeln quadriert wird. 6.4 Vordefinierte Funktionen MATLAB stellt eine Fülle von Funktionen zur Verfügung. Eine Liste aller Funktionen erhält man über die MATLAB Hilfe. Eine Funktion wird verwendet, indem man ihren Namen gefolgt von den Argumenten von runden Klammern umschlossen eingibt. Die meisten mathematischen Funktionen können sowohl mit Skalaren, als auch mit Matrizen arbeiten. Einige Beispiele: Die Quadratwurzel erhält man über sqrt() x = (2+sqrt(67))/3 x = Code 6-4: Quadratwurzel - sqrt() Seite 36 von 142

38 Der Absolutbetrag einer (komplexen) Zahl wird über die Funktion abs() bestimmt a = abs(5-37i) a = Code 6-5: Absolutwert abs() Um den Phasenwinkel einer komplexen Zahl zu erhalten nutzt man angle() angle(5-37i) Code 6-6: Phasenwinkel im Bogenmaß angle() Der Phasenwinkel wird im Bogenmaß ausgegeben! Um den Winkel nun in Grad zu bekommen macht man Folgendes: angle(5-37i) *180/pi Code 6-7: Phasenwinkel in Grad Um die konjungiert-komplexe Zahl zu einer Variablen zu erhalten, gibt es zwei Möglichkeiten: Die erste ist, die Funktion conj() zu benutzen. Man kann allerdings auch den ' Operator verwenden. conj(5-37i) 5-37i' i i Code 6-8: konjungiert komplexe Zahlen conj() Eine komplexe Zahl lässt sich mittels der Funktionen imag() und real() in Imaginär- und Realteil aufspalten. imag(5-37i) -37 real(5-37i) Seite 37 von 142

39 5 Code 6-9: Imaginär- und Realteil imag(), real() Für die Exponentialfunktion schreibt man exp(x). Für den natürlichen Logarithmus log(). b = exp(log(5)) b = 5 Code 6-10: Exponentialfunktion und natürlicher Logarithmus exp(), log() Für die Zahl unendlich schreibt MATLAB Inf, was für infinity steht. c = 1/0 c = Inf Code 6-11: Unendlich - Inf Der dekadische Logarithmus wird in MATLAB als log10() geschrieben. d = log10(100) d = 2 Code 6-12: dekadischer Logarithmus log10() Funktionen und Anweisungen lassen sich beliebig schachteln. e = exp(log10([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])) e = Code 6-13: Funktionsschachtelung Seite 38 von 142

40 6.5 Arbeiten mit Matrizen MATLAB stellt einige Funktionen zur Erzeugung grundlegender Matrizen zur Verfügung: zeros() ones() Nullmatrix Matrix aus Einsen Tabelle 6-2: Elementare Matrizen Diese dienen vor allem zur Initialisierung. Beispiele: A = zeros(5,3)+2 A = B = ones(5,3)*2 B = Code 6-14: Matrizen initialisieren Matrizen können auch zusammengesetzt werden. Dafür benützt man einfach den []-Operator: E = [A B; C' D'] E = Code 6-15: Matrizen zusammensetzen Seite 39 von 142

41 Genauso einfach ist es, Zeilen und Spalten zu löschen: E(:,3) = [] E = Code 6-16: Spalten löschen löscht die dritte Spalte aus der Matrix E. 6.6 Logische Operatoren und Vergleiche Mit Hilfe von logischen Operatoren und den Booleschen Größen true und false wird der Ablauf durch Bedingungen gesteuert. MATLAB stellt folgende logische Operatoren und Vergleiche zur Verfügung. Zu beachten ist hierbei, dass MATLAB eine 0 als false und jede andere Zahl als true interpretiert. < kleiner <= kleiner gleich > größer >= größer gleich == gleich ~= ungleich && und oder ~ nicht xor entweder oder Seite 40 von 142

42 any all 1 falls mindestens ein Element eines Vektors ungleich 0 ist (OR Gatter) 1 falls alle Elemente eines Vektors ungleich 0 sind (AND Gatter) Tabelle 6-3: logische Operatoren Die meisten logischen Operatoren arbeiten elementweise auf Matrizen, geben also wieder eine Matrix (mit Booleschen Werten) aus. Die Befehle any() und all() wirken bei Matrizen dagegen spaltenweise. Außerdem ist zu beachten, dass die Vergleichsoperatoren eine stärkere Bindung haben, als die logischen Operatoren. Man kann also häufig auf Klammern verzichten. 5 > 4 2 < > 4 && 2 < 1 0 Code 6-17: Bindung bei logischen Operatoren Im Folgenden soll überprüft werden, ob die zwei Matrizen A und B gleich sind: A = [1 2 3; 4 5 6; 7 8 9] A = B = [9 8 7; 6 5 4; 3 2 1] B = A == B Code 6-18: Matrixvergleich Man sieht, dass die Matrizen in einem Element, dem Mittleren, übereinstimmen. Aber um zu überprüfen, ob die Matrizen vollständig übereinstimmen, reicht der elementeweise Vergleich nicht aus. Hierfür könnte man zusätzlich die Funktion all() verwenden: all(a==b) Seite 41 von 142

43 0 0 0 Code 6-19: Matrixvergleich spaltenweise all() wirkt immer nur in einer Dimension, das heißt in diesem Fall spaltenweise. Um also die Gleichheit der Matrizen vollständig zu überprüfen muss man all() zweimal hintereinander ausführen: all(all(a == B)) 0 Code 6-20: Matrizen - Gleichheit Um das Ganze einfacher und besser lesbar zu machen, kann man allerdings auch eine spezielle Funktion verwenden isequal(). Diese Überprüft die Gleichheit der beiden Eingabewerte: isequal(a,b) 0 Code 6-21: Matrixvergleich isequal() isequal() funktioniert im Gegensatz zu Überprüfung mittels == auch dann, wenn A und B verschiedene Dimensionen haben. Eine weitere Funktion, die in diesem Kontext häufig benötigt wird, ist: isempty(a) 0 Code 6-22: prüfen auf Leerheit Sie überprüft, ob eine Matrix leer ist. Darüber hinaus bietet MATLAB eine Vielzahl weiterer Funktionen der Form is (siehe MATLAB-Hilfe), mit denen Variablen auf bestimmte Eigenschaften überprüft werden können. Es ist wichtig, zwischen dem Zuweisungsoperator = und dem Vergleichsoperator == zu unterscheiden! Seite 42 von 142

44 6.7 Logische Indizierung In MATLAB arbeiten auch logische Operatoren vektoriell. [1, 2, 3, 4] > [1, 1, 3, 3] Code 6-23: vektorielle Anwendung logischer Operatoren Um dies nun sinnvoll nutzen zu können, stellt MATLAB einige sehr mächtige Funktionen zur Verfügung: find() gibt die Indizes der Elemente einer Matrix wieder, welche ungleich 0 sind any() gibt eine 0 aus, wenn alle Elemente einer Matrix gleich 0 sind, sonst eine 1 all() gibt eine 1 aus, wenn alle Elemente einer Matrix ungleich 0 sind, sonst eine 0 Hierzu ein Beispiel: In einem gegebenen Vektor sollen alle Elemente die kleiner als sind durch ersetzt werden. x = [1, 0.005, 0.01, 0.02, , 200]; x(find(x < 0.01)) = 0 x = Code 6-24: Suchen und ersetzen in einem Vektor find() Noch schneller funktioniert folgende Variante: x = [1, 0.005, 0.01, 0.02, , 200]; x(x < 0.01) = 0 x = Code 6-25: Suchen und ersetzen in einem Vektor mit logischer Indizierung Man kann sich also die find()-operation sparen, wenn man nicht die Indizes ausgeben will. Zur Indizierung genügt ein (logischer) Vektor aus Nullen und Einsen. 6.8 Zufallszahlen Häufig benötig man Vektoren oder Matrizen mit Zufallszahlen, sei es um eine Funktion zu testen, oder um zum Beispiel einen Würfelwurf zu simulieren. Besonders hilfreich ist es, wenn man dabei auch noch die Verteilung der Zufallszahlen festlegen kann. Seite 43 von 142

45 6.8.1 rand() Um einen Vektor mit gleichverteilten Zufallszahlen aus dem Intervall [0,1] zu erhalten, benutzt man die Funktion rand(). Der Aufruf rand(x,y) Syntax 6-1: Gleichverteilte Zufallszahlen rand() liefert einen x*y Vektor mit gleichverteilten Zufallszahlen. Natürlich handelt es sich nicht um wirklich zufällige Zahlen, sondern um so genannte Pseudozufallszahlen. Diese werden nach bestimmten mathematischen Mustern erzeugt, was bedeutet, dass man bei genau gleichen Ausgangsbedingungen auch immer dieselbe Zahl erhält randi() Sehr ähnlich zu rand() funktioniert der Befehl randi(), allerdings gibt diese Funktion einen Vektor mit gleichverteilten ganzzahligen Zufallszahlen zurück. randi(m, x, y) Syntax 6-2: Gleichverteilte ganzzahlige Zufallszahlen - randi() liefert eine x*y-matrix gefüllt mit gleichverteilten ganzzahligen Zufallszahlen aus dem Bereich 1..M. Möchte man nur eine einzige Zufallszahl erhalten so genügt: randi(m) Syntax 6-3: randi() ohne Dimensionsangabe randn() Benötigt man normalverteilte Zufallszahlen, so ist auch dies sehr einfach möglich. Die Funktion randn() hat dieselbe Syntax wie rand(), liefert jedoch normalverteilte Zufallszahlen mit Mittelwert 0 und Standardabweichung 1. Durch Addition einer Konstanten und geeignete Skalierung lassen sich mittels randn() auch normalverteilte Zufallszahlen mit beliebigem Mittelwert und Standardabweichung gewinnen. Seite 44 von 142

46 6.9 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: < kleiner <= kleiner gleich > größer >= größer gleich == gleich ~= ungleich && und oder ~ nicht abs() all angle() any conj() exp() find() imag() Inf isempty() isequal() log() log10() Betrag einer komplexen Zahl 1 falls alle Elemente der Spalte ungleich 0 sind (UND-Gatter) Phasenwinkel einer komplexen Zahl 1 falls irgendein Element der Spalte ungleich 0 ist (ODER-Gatter) konjungiert komplexe Zahl Exponentialfunktion gibt die Indizes der Elemente einer Boolschen Matrix, welche ungleich 0 sind wieder Imaginärteil einer komplexen Zahl Unendlich Überprüft ob das Argument eine leere Matrix ist Gleichheit zweier Objekte natürlicher Logarithmus dekadischer Logarithmus Seite 45 von 142

47 ones() rand() randi() randn() real() sqrt() xor zeros() Matrix aus Einsen Gleichverteilte Zufallszahlen erzeugen Gleichverteilte ganzzahlige Zufallszahlen erzeugen Normalverteilte Zufallszahlen erzeugen Realteil einer komplexen Zahl Quadratwurzel entweder oder Nullmatrix Tabelle 6-4: Zusammenfassung Kapitel 6 Seite 46 von 142

48 7 Lineare Algebra 7.1 Grundsätzliches Um mehr über die Lineare Algebra mit MATLAB zu lernen, sollen nun einige wichtige Operationen anhand von Dürers magischem Quadrat durchgeführt werden. A = magic(4) A = Code 7-1: magic() Die Funktion magic() erzeugt also ein magisches Quadrat beliebiger Ordnung. Wenn man nun A zu ihrer Transponierten addiert, erhält man eine symmetrische Matrix: A + A' Code 7-2: Symmetrische Matrix 1 Man kann auch eine symmetrische Matrix erhalten, wenn man die Matrix mit ihrer Transponierten multipliziert: A * A' Code 7-3: Symmetrische Matrix 2 Nun die Determinante dieser Matrix: d = det(a) d = Seite 47 von 142

49 0 Code 7-4: Determinante einer Matrix det() Den Rang einer Matrix bestimmt man über rank(). Hierzu ein Beispiel: B = rank(b) 4 Code 7-5: Rang einer Matrix rank() Die Matrix B hat also vollen Rang. Die Inverse Matrix erhält man über inv(b) Code 7-6: inverse Matrix inv() Nun zu A: r = rank(a) r = 3 Code 7-7: singuläre Matrix A ist also singulär (sie hat nicht vollen Rang hat linear abhängige Zeilen). Es ist bekannt, dass die Inverse einer singulären Matrix nicht definiert, diese zu berechnen für A also nicht möglich ist. Was macht nun aber MATLAB, wenn man es trotzdem versucht? X = inv(a) Warning: Matrix is close to singular or badly scaled. X = Results may be inaccurate. RCOND = e-017. Seite 48 von 142

50 1.0e+014 * Code 7-8: inverse einer singulären Matrix MATLAB kann also die Inverse einer singulären Matrix berechnen wie ist das möglich? Des Rätsels Lösung liegt darin, dass MATLAB numerisch rechnet. Da alle Zahlen als Double Wert vorliegen, kann der Algorithmus sehr kleine Werte nicht unterscheiden. Daher kann er auch nicht mit Sicherheit feststellen, ob die Matrix singulär ist. Dies heißt aber auch, dass bei der Verwendung solcher Funktionen Vorsicht geboten ist, da der Computer möglicherweise Dinge berechnet, die mathematisch nicht möglich, und damit Unfug sind. Um die Dimensionen der Matrix zu bestimmen tippt man: size(a) 4 4 Code 7-9: Matrix-Dimensionen size() Die Eigenwerte der Matrix gibt folgende Funktion: e = eig(a) e = Code 7-10: Eigenwerte einer Matrix eig() Das charakteristische Polynom erhält man mit a = poly(a) a = 1.0e+003 * Code 7-11: Charakteristisches Polynom einer Matrix poly() Der Vektor a enthält die Koeffizienten des charakteristischen Polynoms. Dieses lautet hier also: Seite 49 von 142

51 Seite 50 von 142 MATLAB

52 7.2 Lineare Gleichungssysteme Um das lineare Gleichungssystem zu lösen, bietet MATLAB verschiedene Möglichkeiten. Ein Beispiel: Eine Möglichkeit besteht darin, das Gleichungssystem umzustellen und dann die Inverse von A zu berechnen: x = inv(a)*b x = Code 7-12: Lösung eines linearen Gleichungssystems Hierfür gibt es auch noch eine Kurzschreibweise, die Linksdivision: x = A\b x = Code 7-13: Linksdivision Dies funktioniert allerdings nur dann korrekt, wenn A nicht singulär und nicht überbestimmt ist. Um allgemeine Gleichungssysteme zu lösen bietet MATLAB eine Implementierung der L-R-Zerlegung. Die Funktion rref() eliminiert linear abhängige Zeilen und bringt die Matrix auf obere Dreiecksform. Seite 51 von 142

53 Um das Gleichungssystem zu lösen benötigt rref() noch den Ergebnisvektor. Dieser wird der Matrix A als weitere Spalte rechts angehängt. B = [A b] B = rref(b) Code 7-14: Gleichungssystem - Lösung mit rref() Diese Matrix enthält in ihrer rechten Spalte die Lösungen des Gleichungssystems für bis 7.3 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: \ Linksdivision eig() inv() magic() poly() rank() rref() Eigenwerte Inverse Matrix Magisches Quadrat charakteristisches Polynom Rang L-R-Zerlegung Tabelle 7-1 Zusammenfassung Kapitel 7 Seite 52 von 142

54 8 2D Grafiken Häufig möchte man sich ein Problem nicht nur in Form von Zahlenwerten betrachten, sondern als Grafik visualisieren. Hierfür bietet MATLAB mächtige Werkzeuge. Ein paar davon sollen im Folgenden dargestellt werden. 8.1 Erstellen eines linearen Plots Die wohl grundlegendste Grafik ist der zweidimensionale lineare Plot. Die MATLAB Funktion hierfür heißt plot(). Falls man der Funktion nur einen Vektor als Argument übergibt, erstellt MATLAB einen stückweisen linearen Graphen der Elemente des Arguments über ihrem Index. Die Funktion lässt sich aber auch in der Form plot(x,y) aufrufen, wobei dann die Elemente von y über den Elementen von x dargestellt werden. Hierzu zwei kurze Beispiele: x = 0:pi/100:2*pi; y = sin(x); plot(y) Code 8-1: plot() 2D Darstellung y über Index Abbildung 8-1: plot() 2D Darstellung y über Index (Code 8-1) Seite 53 von 142

55 plot(x,y) Code 8-2: plot() 2D Darstellung y über x Abbildung 8-2: plot() 2D Darstellung y über x (Code 8-2) Seite 54 von 142

56 Es lassen sich auch mehrere Graphen in einem Plot darstellen: y2 = cos(x); plot(x,y,x,y2) Code 8-3: plot() mehrere Graphen Abbildung 8-3: plot() mehrere Graphen (Code 8-3) Des Weiteren kann auch das Aussehen jeder Kurve definiert werden. Dazu wird der Funktion plot() ein drittes Argument übergeben, also plot(x,y,'fms'). FMS stellt die Codierung für Farbe, Linientyp und Datenmarker dar. Die Auswahlmöglichkeiten für diese drei Attribute gibt folgende Liste wieder: Linienfarbe - F o c cyan hellblau o m magenta violett o y yellow gelb o r red rot o g green grün o b blue blau o w white weiß o k black schwarz Seite 55 von 142

57 Linientyp - M o - durchgezogen o -- gestrichelt o : gepunktet o.- gestrichpunktet o none keine Linie Plotsymbol - S o + Plus o o Kreise o * Sterne o x Kreuze o. Punkte o s Quadrate o d Diamanten o v Dreiecke o < Dreieck links o > Dreieck rechts o p Pentagramme o h Hexagramme Die Defaultwerte sind hierbei die durchgezogene blaue Linie ohne Plotsymbol. Es können auch ein oder mehrere Attribute weggelassen werden. Diese werden dann automatisch durch die default- Werte ersetzt. Die Reihenfolge der Attribute ist beliebig. Wie dies nun genau funktioniert lässt sich am besten anhand eines Beispiels zeigen. Eine kleine Modifikation des obigen Plots: x = 0:pi/20:2*pi; y = sin(x); y2 = cos(x); plot(x,y,'-o',x,y2,'r-') Code 8-4: plot() mit Attributen Seite 56 von 142

58 Abbildung 8-4: plot() mit Attributen (Code 8-4) In diesem Beispiel wurden die Farbe der 1. Kurve und das Plotsymbol der 2. Kurve weggelassen. Es lassen sich auch noch viele weitere Eigenschaften der Grafik verändern, die Syntax hierzu ist: plot(x,y,'fms',..., 'Eigenschaft', 'Wert') Syntax 8-1: plot() FMS steht hierbei für die oben diskutierte Eigenschaften Farbe, Datenmarker und Linienstil. In folgender Tabelle werden einige wichtige Eigenschaften dargestellt: Eigenschaftsname Bedeutung Werte Default LineWidth Linienbreite in Points reelle Zahl 0.5 MarkerEdgeColor Berandungsfarbe der b, g, r, Datenmarker MarkerFaceColor Flächenfarbe der b, g, r, Datenmarker MarkerSize Größe des reelle Zahl 6 Datensymbols in Points Tabelle 8-1: Eigenschaften plot() Ein Beispiel: Seite 57 von 142

59 x = linspace(-2*pi, 2*pi, 20); y = sin(x); z = sin(x+pi/6); plot(x,y,x,z) Code 8-5: Beispiel 1 plot() Abbildung 8-5: Beispiel 1 plot() (Code 8-5) Der Darstellungsbereich wird hier definiert über: x = linspace(-2*pi, 2*pi, 20). Dies generiert einen Vektor von bis mit 20 Zwischenwerten. Ein weiteres Beispiel: plot(x,y,'ro',x,z,'bp:','linewidth',2,'markeredgecolor','y',... 'MarkerFaceColor','g','MarkerSize',10) Code 8-6: Beispiel 2 plot() Seite 58 von 142

60 Abbildung 8-6: Beispiel 2 plot() (Code 8-6) Für eine Übersicht über alle möglichen Eigenschaft-Wert-Kombinationen sei auf das Buch Matlab kompakt verwiesen. 8.2 Bildfenster Die Funktion plot() öffnet automatisch ein neues Bildfenster, wenn noch keines vorhanden ist. Ansonsten verwendet plot() das gerade aktive Bildfenster (i.d.r. das zuletzt geöffnete) und ersetzt dessen Inhalt. Um ein weiteres Bildfenster zu erzeugen, gibt man figure() Syntax 8-2: figure() - Erzeugen einer neuen Abbildung ein. Um ein bereits vorhandenes Bildfenster zu aktivieren, gibt man figure(n) Syntax 8-3: figure() - Aktivieren einer bestehenden Abbildung ein, wobei n die Nummer des Bildfensters ist, welches aktiviert werden soll. Seite 59 von 142

61 8.3 Grafiken erweitern Das Kommando hold()macht es möglich, Teile zu einer bereits vorhandenen Grafik hinzuzufügen, ohne diese zu ersetzen. Der hold-modus wird durch Eingabe von hold ('on') hold ('off') Syntax 8-4: hold() gesteuert. Während der hold-modus aktiviert ist, fügt MATLAB neue Grafikelemente zur aktuell aktiven Grafik hinzu. Dies ist also eine weitere Möglichkeit, mehrere Graphen in einem Bild zu plotten: x = 0:pi/100:2*pi; y = sin(x); y2 = cos(x); plot(x,y) hold ('on') plot (x,y2,'r-') Code 8-7: Graphen hinzufügen mit hold() Abbildung 8-7: Graphen hinzufügen mit hold() (Code 8-7) Seite 60 von 142

62 8.4 Teilbilder erzeugen Um ein Fenster in mehrere Teilbilder zu unterteilen, dient der Befehl subplot(x,y,i). Dieser Befehl teilt das Bildfenster in ein Raster von x Zeilen und y Spalten. Die Zahl i markiert das aktive Teilbild, wobei die Teilbilder zeilenweise durchnummeriert sind. Mit diesem Befehl kann man nun die cos-funktion unter der sin-funktion darstellen: x = 0:pi/100:2*pi; y = sin(x); y2 = cos(x); subplot(2,1,1) plot(x,y) subplot(2,1,2) plot(x,y2) Code 8-8: Teilbilder erzeugen mit subplot() 8.5 Polardarstellung Abbildung 8-8: Teilbilder erzeugen mit subplot() (Code 8-8) Um einen Polarplot zu erzeugen nutzt man die Funktion polar(alpha, r, 'FMS', ). Hierbei sind alpha ein Vektor mit den Winkelargumenten in rad, r ein Vektor mit den Radien und FMS die Seite 61 von 142

63 Codierung für Farbe, Linientyp und Datenmarker analog zu plot(). Auch die weiteren Eigenschaften werden analog zu plot() definiert. theta = 0:0.1:2*pi; r = sin(theta).* sin(3*theta); polar(theta,r,'m--') Code 8-9: Polarplot erzeugen mit polar() 8.6 Logarithmische Plots Abbildung 8-9: Polarplot erzeugen mit polar() (Code 8-9) Um Daten mit logarithmischen Achsen zu plotten, stellt MATLAB die Funktionen loglog(), semilogx() und semilogy() zur Verfügung. Wie die Namen schon andeuten, dient loglog() der doppelt logarithmischen Darstellung, bei den beiden anderen Funktionen wird entweder nur die x- oder die y-achse logarithmisch dargestellt. Die sonstige Syntax entspricht der von plot(). x = 1:1000; y = exp(-x/5); plot(x,y) Code 8-10: Exponentialfunktion, linearer Plot Seite 62 von 142

64 semilogy(x,y) Abbildung 8-10: Exponentialfunktion, linearer Plot (Code 8-10) Code 8-11: Exponentialfunktion, halblogarithmischer Plot nach y Abbildung 8-11: Exponentialfunktion, halblogarithmischer Plot nach y (Code 8-11) Seite 63 von 142

65 semilogx(x,y) Code 8-12: Exponentialfunktion, halblogarithmischer Plot nach x loglog(x,y) Abbildung 8-12: Exponentialfunktion, halblogarithmischer Plot nach x (Code 8-12) Code 8-13: Exponentialfunktion, doppelt logarithmischer Plot Seite 64 von 142

66 Abbildung 8-13: Exponentialfunktion, doppelt logarithmischer Plot (Code 8-13) Neben der logarithmischen Darstellung lassen sich auch Zahlenwerte mit logarithmischem Abstand generieren: Die Funktion logspace() funktioniert ähnlich wie linspace(), erzeugt jedoch einen Vektor mit logarithmisch äquidistanten Datenpunkten. v = logspace(-2,2,500); plot(v) Code 8-14: Logarithmisch äquidistante Datenvektoren mit logspace() Seite 65 von 142

67 semilogy(v) Abbildung 8-14: Logarithmisch äquidistante Datenvektoren mit logspace() (Code 8-14) Code 8-15: Logarithmisch äquidistante Datenvektoren mit logspace() Abbildung 8-15: Logarithmisch äquidistante Datenvektoren mit logspace() (Code 8-15) Seite 66 von 142

68 8.7 Komplexe Zahlen Die Funktion plot() ist auch in der Lage, komplexe Zahlen darzustellen. Hierfür muss nur ein entsprechender Vektor mit den komplexen Zahlen als Argument übergeben werden: t = 0:pi/20:2*pi; plot(exp(i*t),'-+') Code 8-16: Einheitskreis Abbildung 8-16: Einheitskreis (Code 8-16) Sieht man von der Verzerrung der Achsen ab, stellt die obige Grafik den komplexen Einheitskreis dar. Wie daraus wirklich ein Kreis wird, folgt im nächsten Kapitel. Seite 67 von 142

69 8.8 Achsenwahl Normalerweise bestimmt MATLAB die Maxima und Minima der Daten und wählt ein geeignetes Bildformat sowie die passende Achsenskalierung. Mithilfe der Funktion axis kann man diese Vorgaben überschreiben: axis ('square') axis ('equal') axis ('auto') axis ('on') axis ('off') axis([xmin xmax ymin ymax]) Achsen mit gleicher Länge Achsen mit gleichem Maßstab und gleicher Skalierung Automatische Skalierung Achsen eingeblendet Achsen ausgeblendet Benutzerdefinierte Achsen mit x Werten von xmin bis xmax und y Werten von ymin bis ymax axis('tight') Achsengrenzen exakt durch dargestellte Daten beschränkt axis('normal') Wechselt zu default-werten Tabelle 8-2: Parameter axis() Des Weiteren kann man mit dem Befehl grid('on') bzw grid('off')gitternetzlinien einbzw. ausblenden. Um ein feineres Gitter zu erzeugen benutzt man grid('minor'). axis ('square') grid ('on') Code 8-17: Quadratische Achsenskalierung mit Gitter Seite 68 von 142

70 Abbildung 8-17: Quadratische Achsenskalierung mit Gitter (Code 8-17) 8.9 Achsenbeschriftung und Titel Zum Beschriften der Achsen benutzt man die Funktionen xlabel() und ylabel(). Die Funktion title() fügt eine Titelzeile oberhalb der Grafik ein. Mit der Funktion text()kann man an beliebiger Stelle einen Text in die Grafik einfügen. Um eine Legende zu erstellen, dient die Funktion legend('s1', 's2',, pos). Hierbei stehen die Strings sx für den Legendeneintrag zur x. Kurve in der Abbildung. Der Wert pos bestimmt, wo die Legende positioniert sein soll: pos Bedeutung -1 außerhalb der Achsenbegrenzung 0 innerhalb der Achsenbegrenzung mit minimaler Überlappung mit den Plotpunkten 1 rechte obere Ecke 2 linke obere Ecke 3 linke untere Ecke 4 rechte untere Ecke Tabelle 8-3: Legendenpositionen Seite 69 von 142

71 Als Beispiel diene diesmal die sin-funktion: t = -pi:pi/1000:pi; y = sin(t); plot(t, y) axis([-pi pi -1 1]) xlabel('-pi bis pi') ylabel('sin(t)') title('graph der Sinus Funktion') text(0,-1/3,'beachte die Punktsymmetrie.') legend('sin',-1) Code 8-18: Darstellung der Sinusfunktion mit Legende und Beschriftung Abbildung 8-18: Darstellung der SInusfunktion (Code 8-18) 8.10 Formatierung mit LaTex Befehlen Es lassen sich bei allen Texten auch LaTex Befehle verwenden, um den Text zu formatieren und eine mathematische Syntax zu erstellen. Hierzu eine kurze Übersicht der wichtigsten LaTex Befehle. Zu beachten ist, dass bei LaTex Notation Argumente von Funktionen immer durch geschweifte Klammern, nicht durch runde Klammern wie bei MATLAB, gekennzeichnet werden. Seite 70 von 142

72 Syntax Formatierung von Text \it{x} \bf{x} Griechische und hebräische Buchstaben \alpha \beta \gamma \delta \epsilon \varepsilon \zeta \eta \theta \vartheta \iota \kappa \lambda \mu \nu \xi \pi \varpi \rho \varrho \sigma \varsigma \tau \upsilon \phi \varphi \chi \psi \omega \Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi Bedeutung Text x wird kursiv dargestellt Text x wird fett dargestellt α β γ δ ϵ ε ζ η θ ϑ ι κ λ μ ν ξ π ϖ ρ ϱ σ ς τ σ ϕ υ τ υ φ Γ Δ Θ Λ Ξ Π Σ Υ Φ Ψ Seite 71 von 142

73 Syntax \Omega \beth \gimel \daleth Symbole \ast \cdot \div \wedge \vee \bullet \circ \cap \cup \pm ± \times \int \approx \cong \equiv \in \geq \leq \neq \ni \subset \supset \subseteq \supseteq \leftarrow \rightarrow \leftrightarrow \Leftarrow \Rightarrow \Leftrightarrow Tabelle 8-4: LaTex Befehle Bedeutung MATLAB stellt noch weitere Möglichkeiten bereit, Formeln mit dem LaTex Textsatzsystem zu formatieren, auf diese soll hier allerdings nicht näher eingegangen werden. Ω ℶ ℷ ℸ Seite 72 von 142

74 Im Folgenden nun obiges Beispiel mit LaTex Notation: t = -pi:pi/1000:pi; y = sin(t); plot(t, y) axis([-pi pi -1 1]) xlabel('-\pi \leq {\itt} \leq \pi') ylabel('sin({\itt})') title('graph der Sinus Funktion') text(0,-1/3,'\it{beachte die Punktsymmetrie.}') Code 8-19: Beispiel LaTex Notation Abbildung 8-19: Plot mit LaTex Notation (Code 8-19) Seite 73 von 142

75 8.11 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: axis() cos() figure() grid() hold linspace() loglog() logspace() plot() polar() semilogx() semilogy() sin() subplot() text() title() xlabel() ylabel() Achsen einstellen Cosinus Bildfensterwechsel Gitternetzlinien ein- und ausschalten hold Modus Erstellung eines Vektors mit gleichmäßig verteilten Zwischenwerten doppelt logarithmischer Plot Erzeugt Vektor mit logarithmischem Abstand zweidimensionaler, linearer Plot Polarplot halb logarithmischer Plot Sinus Teilbilder Text einfügen Titelzeile x-achse beschriften y-achse beschriften Tabelle 8-5: Zusammenfassung Kapitel 8 Seite 74 von 142

76 9 3D Grafiken Möchte man Funktionen zweier Variablen darstellen, benötigt man drei-dimensionale Grafikfunktionen. 9.1 Lineare 3D Plots Das drei-dimensionale Gegenstück zu plot() heißt plot3(x, y, z, 'FMS',, 'Eigenschaft', 'Wert') Syntax 9-1: plot3() und benutzt nahezu dieselbe Syntax wie plot(). t = 0:0.01:5; x = exp(-t/3).* cos(2*pi*t); y = exp(-t/3).* sin(2*pi*t); z = t.^2; plot3(x,y,z) xlabel('x(t) = e^{-t/3} cos(2\pit)') ylabel('y(t) = e^{-t/3} sin(2\pit)') zlabel('t^2') Code 9-1: Beispiel plot3() - Schraubenkurve Abbildung 9-1: Beispiel plot3() - Schraubenkurve (Code 9-1) Seite 75 von 142

77 9.2 Gittergrafiken Die Funktion mesh() erstellt eine dreidimensionale Gittergrafik aus farbigen Linien. Im einfachsten Fall ruft man die Funktion in der Form mesh(z) auf. Dabei wird der Inhalt der MxN Matrix Z als Höhengitter über der X-Y-Ebene dargestellt. Die Rasterpunkte ergeben sich dabei in x-richtung zu 1, 2, M und in Y-Richtung zu 1, 2, N. Ein Beispiel: Z=zeros(6,12); Z(3:4,4:9)=1 Code 9-2: Einsen und Nullen erzeugt die Matrix Z = mesh(z),axis tight Code 9-3: mesh() einfache Höhenmatrix Abbildung 9-2: mesh () einfache Höhenmatrix Seite 76 von 142

78 Die allgemeine Syntax lautet mesh(x, y, z, c,, 'Eigenschaft', 'Wert') Syntax 9-2: mesh() wobei c eine optionale Farbmatrix ist. Alle Parameter sind MxN Matrizen, die die Koordinaten (x,y,z) und Farbwerte c der einzelnen Rasterpunkte enthalten. Eine zur Erzeugung passender Rasterpunkte geeignete Funktion ist meshgrid(). Sie gibt die Rasterpunkte der Koordinaten in der XY Ebene in Form zweier 2D Matrizen X und Y zurück. Als Parameter dienen die entsprechenden 1D-Rastervektoren. Als Beispiel dient die rotationssymmetrische Funktion von mit einer Schrittweite von dargestellt werden:. Diese soll im Bereich [X, Y] = meshgrid((-10:.1:10),(-10:.1:10)); r = sqrt(x.^2 + Y.^2); Z = sin(r)./r; figure() mesh(x,y,z) title('mesh') Code 9-4: Beispiel meshgrid() - Zuckerhut Hier noch ein Ausschnitt in Vergrößerung: Abbildung 9-3: Beispiel meshgrid() - Zuckerhut (Code 9-4) Seite 77 von 142

79 Abbildung 9-4: Zuckerhut (Ausschnitt) Weitere Funktionen zur Erzeugung von Gittergrafiken sind meshc()und meshz(). Die Funktion meshc() superponiert einen Konturplot, funktioniert aber ansonsten genauso wie mesh(). meshc(x,y,z) Syntax 9-3: Gittergrafik mit Kontur - meshc() Abbildung 9-5: Gittergrafik mit Kontur - meshc() Die Funktion meshz() erzeugt einen zusätzlichen Sockell. meshz(x,y,z) Syntax 9-4: Gittergrafik mit Sockel - meshz() Seite 78 von 142

80 Abbildung 9-6: Gittergrafik mit Sockel meshz() Eine weitere Möglichkeit bietet der Wasserfallplot: [x,y] = meshgrid([-2.:0.1:2]); z = x.^2 - y.^2; waterfall(x,y,z) Code 9-5: Wasserfallplot waterfall() Abbildung 9-7: Wasserfallplot waterfall() (Code 9-5) Da hier keine Verbindungen zwischen den Spaltenelementen gezeichnet werden, eignet sich diese Darstellungsform gut für die 3D Visualisierung von einander unabhängiger Datenvektoren. Seite 79 von 142

81 9.3 Flächengrafiken Um Flächengrafiken zu erstellen, nutzt man die Funktion surf(). Die Syntax ist identisch zu der der Funktion mesh(), auch gibt es analog eine Funktion surfc(). [X, Y] = meshgrid(-10:.1:10); r = sqrt(x.^2 + Y.^2); Z = sin(r)./r; figure() surf(x,y,z) title('surf') Code 9-6: Flächengrafik mit surf() Abbildung 9-8: Zuckerhut - Flächengrafik Seite 80 von 142

82 surfc(x,y,z) Syntax 9-5: Flächengrafik mit Sockel surfc() Abbildung 9-9: Zuckerhut Flächengrafik mit Sockel Hier ein Ausschnitt, um die Besonderheit von surf() besser erkennen zu können. Abbildung 9-10: Ausschnitt aus Flächengrafik Seite 81 von 142

83 Um die Gitterlinien zu unterdrücken, benutzt man den optionalen Parameter 'edgealpha', gefolgt von einer Zahl zwischen 0 und 1. Hierbei steht 0 für vollständig transparente (ausgebledete) und 1 für vollständig undurchlässige (sichtbare) Linien. surfc(x,y,z,'edgealpha',0) Syntax 9-6: surfc() Flächengrafik ohne Gitterlinien Abbildung 9-11: Flächengrafik ohne Gitterlinien Seite 82 von 142

84 9.4 Farbbalken Mit Hilfe des Befehles colorbar() lassen sich in die Grafiken Farbbalken, wie sie aus Landkarten für die Höhe bekannt sind, einblenden: x = -1:0.1:1; [X,Y] = meshgrid(x,x); Z = 25*X.^2 + Y.^2; mesh(x,y,z) colorbar; Code 9-7: Farbbalken colorbar() Abbildung 9-12: Farbbalken Seite 83 von 142

85 9.5 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: colorbar() mesh() meshc() meshgrid() meshz() plot3() surf() surfc() waterfall() Farbbalken erzeugen 3D Gittergrafik 3D Gittergrafik mit Kontur unterlegt Rasterpunkte für 3D Plot erzeugen 3D Gittergrafik mit Sockel Lineare 3D Grafik 3D Flächengrafik 3D Flächengrafik mit Kontur unterlegt 3D Wasserfallgrafik Tabelle 9-1: Zusammenfassung Kapitel 9 Seite 84 von 142

86 10 Ablaufsteuerung MATLAB stellt, wie die meisten imperativen Programmiersprachen, auch Befehle zur Ablaufsteuerung zur Verfügung. Hierbei handelt es sich zu allererst um logische Operatoren und Vergleichsoperatoren, mit welchen Bedingungen geprüft werden können. Hinzu kommen dann noch verschiedenen Schleifen- und Verzweigungskommandos if Anweisung Die if Anweisung wertet einen logischen Ausdruck aus und führt eine Anweisung oder eine Gruppe von Anweisungen aus, wenn der Ausdruck wahr ist. Mit den Schlüsselwörtern else und elseif kann ein alternativer Block angeboten werden, falls der Ausdruck falsch ist. Das Schlüsselwort end beendet den Block. if x == y disp('x gleich y') elseif x < y else end disp('x kleiner y') disp('x größer y') Syntax 10-1: if-block 10.2 switch case Anweisung Die switch Anweisung führt Befehlsgruppen abhängig von den Werten einer Variablen oder eines Ausdrucks aus. Diese Blöcke werden durch case und otherwise begrenzt. Die switch Anweisung muss mit einem end beendet werden. switch (x + y) end case 0 case 1 disp('die Summe von x und y ist null') disp('die Summe von x und y ist eins') otherwise Syntax 10-2: switch() disp('die Summe von x und y ist mir zu groß') Seite 85 von 142

87 10.3 for Schleifen Die for-schleife durchläuft eine Gruppe von Anweisungen, bis die vorgegebene Anzahl an Durchläufen erreicht ist. end beendet den Anweisungsblock. for i = 1:n end z = z+i; Syntax 10-3: for Schleife Die for-schleife verwendet man immer dann, wenn die Anzahl der benötigten Schleifendurchläufe vor Beginn der Schleife bereits bekannt ist while Schleifen Die while Schleife wiederholt einen Anweisungsblock solange eine Bedingung erfüllt ist. end terminiert den Anweisungsblock. a = 0; while a<b end a = a+c; Syntax 10-4: while Schleife Die while Schleife verwendet man dann, wenn die Anzahl der benötigten Schleifendurchläufe vorab nicht bekannt ist und vom aktuellen Berechnungsergebnis abhängt break Die break Anweisung beendet die Ausführung einer for oder while Schleife vorzeitig. a = 0; while a<b end a = a+1; if a == 5 end Code 10-1: break break; Wenn a gleich 5 ist, wird hier die Ausführung der while Schleife abgebrochen, unabhängig davon, ob. Seite 86 von 142

88 Es ist wichtig darauf zu achten, dass Schleifen immer eine Abbruchbedingung haben, die auch erfüllt wird. Die Gefahr, eine Endlosschleife zu erzeugen, ist sonst sehr hoch. Generell sollte man explizite Schleifen vermeiden und soweit möglich durch die in der Regel schnelleren vektororientierten Operationen ersetzen. Dies wird im Teil zur effizienten MATLAB Programmierung noch genauer betrachtet. Seite 87 von 142

89 10.6 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: break case else elseif end for if otherwise switch while Vorzeitiges Abbrechen einer Schleife Überprüft ob die Variable in switch mit dem case übereinstimmt wenn die vorherige Bedingung nicht erfüllt wurde wird das ausgeführt weitere Bedingung, die vorherige Bedingung darf nicht erfüllt worden sein Ende einer Schleifen- oder Bedingungsblockes Schleife mit einer Zählbedingung Bedingte Ausführung eines Codeblockes führt ansonsten den nachfolgenden Code aus Eine Variable als Bedingung Schleife mit Abbruchbedingung Tabelle 10-1: Zusammenfassung Kapitel 10 Seite 88 von 142

90 11 Script-Dateien (m-files) Die einfachste Art eine Aufgabe in MATLAB automatisiert ablaufen zu lassen, ist die Erstellung einer Script-Datei. Ein Script ist eine Sammlung von MATLAB Kommandos, wie sie auch im Command Window eingegeben werden könnten. Diese Kommandos werden in einer Textdatei mit der Endung *.m gespeichert und können dann über diese wieder ausgeführt werden Beispiel Gegeben ist folgende Aufgabe: Zeichen Sie die Sinus- und Kosinusfunktion im Intervall [-2π,2π]. In einem Grafikfenster sollen untereinander zuerst die Sinusfunktion, dann die Kosinusfunktion und dann beide zusammen gezeichnet werden. Beschriften Sie auch die einzelnen Koordinatensysteme. Um wie gefordert die Funktionen untereinander darzustellen benutzt man subplot(). Die Lösung der Aufgabe sieht also im Kommando-Fenster zunächst wie folgt aus: x = linspace(-2*pi, 2*pi, 1000); y1 = sin(x); y2 = cos(x); subplot(3,1,1); plot(x, y1); axis([-2*pi, 2*pi, -1, 1]); title('sinus'); subplot(3,1,2); plot(x,y2); axis([-2*pi, 2*pi, -1, 1]); title('cosinus'); subplot(3,1,3); plot(x,y1,x,y2); axis([-2*pi, 2*pi, -1, 1]); title('sinus und Cosinus'); Code 11-1: Beispiel Script Seite 89 von 142

91 Abbildung 11-1: Beispiel Script (Code 11-1) Um nun ein Script zu erstellen, welches die obige Aufgabe automatisch löst, gibt es mehrere Möglichkeiten, die im Folgenden vorgestellt werden Erstellung aus der Command History Alle Befehle, die man eingegeben hat, findet man in der Command History (in der Basiseinstellung auf der linken Seite des MATLAB Fensters). Die einfachste Möglichkeit ein Script zu erstellen ist nun, die Befehle in der Command History zu markieren und mit der rechten Maustaste das Kontextmenü aufzurufen. Seite 90 von 142

92 Abbildung 11-2: Scripterstellung aus der Command History Wenn man den Menüpunkt Create m-file auswählt erstellt MATLAB automatisch aus den markierten Befehlen eine Textdatei mit der Endung *.m, welche man dann im Editor sehen kann. Das Beispiel wird unter einem prägnanten Namen (z.b. sin_cos_plot.m) abgespeichert, über den man das Script in Zukunft aufrufen kann. Um dieses Script nun zu benutzen, gibt man den Namen sin_cos_plot ohne die Endung.m im Command Window ein Erstellen im Editor Wie leicht zu sehen ist, stehen in dem m-file einfach die Befehle, die man sonst in das Command Window eingegeben hätte. Man kann diese Befehle daher auch von Anfang an mit Hilfe des MATLAB Editors in ein m-file schreiben. Genauso kann man ein bereits bestehendes m-file im Editor verändern. Mit dem Kommando edit sin_cos_plot wird das m-file mit dem MATLAB Editor geöffnet. Falls die Datei noch nicht existiert, startet der Editor mit einem neuen Fenster Kommentare Das Script ist jetzt schon voll funktionsfähig, aber wenn man es jemand anderem gibt, wird dieser eventuell Schwierigkeiten haben, zu verstehen, was das Script eigentlich macht. Es wäre also schön wenn man noch Hilfestellungen in das Script schreiben könnte. Hierzu dient in MATLAB das % Zeichen. Alles, was hinter einem %-Zeichen in einem m-file steht, stellt einen Kommentar dar und wird von MATLAB nicht ausgeführt. Seite 91 von 142

93 % Dieses Script zeichnet die Funktionen Sinus und Cosinus im Bereich % x = [-2*pi, 2*pi] % Erster Teilplot x = linspace(-2*pi, 2*pi, 1000); % 1000 Aszissenwerte generieren y1 = sin(x); y2 = cos(x); subplot(3,1,1); plot(x, y1); axis([-2*pi, 2*pi, -1, 1]); title('sinus'); % Zweiter Teilplot subplot(3,1,2); plot(x,y2); axis([-2*pi, 2*pi, -1, 1]); title('cosinus'); % Dritter Teilplot subplot(3,1,3); plot(x,y1,x,y2); axis([-2*pi, 2*pi, -1, 1]); title('sinus und Cosinus'); Code 11-2: Beispielscript mit Kommentaren In den ersten zwei Zeilen stehen allgemeine Hinweise zu diesem Script. Da diese dem Nutzer grundlegende Informationen geben, macht MATLAB sie auf besonders einfache Art verfügbar: help sin_cos_plot Dieses Script zeichnet die Funktionen Sinus und Cosinus im Bereich x = [-2*pi, 2*pi] Code 11-3: eigene Hilfefunktion Die help Funktion ist auch für alle MATLAB internen Funktionen definiert und gibt den ersten zusammenhängenden Kommentarblock eines m-files aus. Seite 92 von 142

94 11.5 Debugger Um Laufzeitfehler in MATLAB Programmen zu finden, oder einen Programmablauf einfacher nachvollziehen zu können, kann man sich des Debuggers bedienen. Dieser bietet die Möglichkeit, den Programmablauf an beliebiger Stelle zu unterbrechen und dann schrittweise abzuarbeiten. Dabei können sämtliche Variablen eingesehen und gegebenenfalls auch modifiziert werden. Als Beispiel diene dieses kurze Script, welches berechnet. Abbildung 11-3: Script zum Debuggen Um nun bei jeder Wiederholung der Schleife anzuhalten, muss man zuerst einen Haltepunkt (Breakpoint) setzen. Dies geschieht durch Klicken auf den kleinen Strich neben dem Zeilencounter (im Bild unter dem Mauszeiger). Im folgenden Bild sieht man den roten Punkt der dann erscheint, zusammen mit einem weiteren Haltepunkt in Zeile 6: Abbildung 11-4: Script mit Breakpoints Wenn man das Script nun startet, stoppt es bei jedem Schleifendurchlauf vor Ausführung der 3. Zeile. Seite 93 von 142

95 Abbildung 11-5: Script gestoppt am ersten Breakpoint Der grüne Pfeil symbolisiert hierbei die aktuelle Position im Code. Nun bestehen folgende Möglichkeiten: Ansehen der Variablen im Workspace (zum Beispiel durch Positionieren des Mauszeigers (Mouse-Over) über der Variable im Quelltext oder im Workspace-Browser) Den Code zeilenweise weiter ausführen mittels der Taste F10 oder über das Menü Debug Step Den Code bis zum nächsten Haltepunkt weiter ausführen mittels der Taste F5 oder über das Menü Debug Continue. Falls es keinen weiteren Haltepunkt gibt, wird der Code bis zum Ende ausgeführt. Go Until Cursor Der Menüeintrag Debug Go Until Cursor führt den Code bis zur aktuellen Cursorposition aus. Dieser Eintrag ist auch über das Kontextmenü (Rechtsklick) verfügbar. Neben den gezeigten einfachen Haltepunkten gibt es auch die Möglichkeit, bedingte Haltepunkte (Programm stoppt nur, wenn Bedingung erfüllt ist) zu setzen, oder automatisch den Sprung in den Debugger zu veranlassen, sobald MATLAB einen Laufzeitfehler erkennt. Es steht der volle Umfang des Kontrollfensters zur Verfügung. Man kann daher Variablen modifizieren, Zwischenberechnungen durchführen oder auch Feldinhalte zur Kontrolle grafisch darstellen. Setzt man dann den Programmablauf fort, arbeitet MATLAB mit den modifizierten Inhalten weiter. Seite 94 von 142

96 Mit Hilfe des Kommandos dbstop if error wird eine Überwachungsfunktion aktiviert, die bei Laufzeitfehlern automatisch den Debugmodus startet. Dabei wird der Programmablauf in der letzten korrekten Befehlszeile vor Auftreten des Fehlers angehalten. Seite 95 von 142

97 11.6 Speichern und Laden von Daten Im Rahmen der Arbeit mit MATLAB wird man häufig an den Punkt kommen, die Variablen, die man zur Zeit im Workspace hat, auf die Festplatte speichern zu wollen, um diese zu einem späteren Zeitpunkt erneut zur Verfügung zu haben. Den kompletten Workspace-Inhalt kann man mittels save meine_daten.mat Syntax 11-1: save() In die Datei namens meine_daten.mat speichern. Die Dateiendung.mat kennzeichnet das MATLAB eigene Dateiformat für die Datenspeicherung. Ähnlich einfach wie das Speichern von Daten ist auch das Laden: load meine_daten.mat Syntax 11-2: load() Nun ist der Inhalt der angegebenen Datei wieder im Workspace verfügbar. Zu beachten ist, dass MATLAB immer im aktuellen Arbeitsverzeichnis nach der angegebenen Datei sucht, wenn kein Pfad angegeben ist. Alternativ kann der vollständige Dateipfad angegeben werden. Hierzu ein Beispiel: save C:\Users\Marcus\Documents\MATLAB\meine_daten.mat Syntax 11-3: save() mit Pfadangabe Allerdings muss der Ordner bereits bestehen. MATLAB wird nicht automatisch einen nicht vorhandenen Ordner anlegen. Möchte man nun nicht den kompletten Workspace abspeichern, sondern nur einzelne Variablen so kann man save() dies sehr einfach mitteilen: save meine_daten.mat x y Syntax 11-4: save() mit Variableneingrenzung In diesem Beispiel wurden nun nur die Variablen x und y gespeichert. Auf diese Art lässt sich bei Bedarf auch der load-befehl auf bestimmte Variablen einschränken: load meine_daten.mat x Syntax 11-5: load() mit Variableneingrenzung Hier wurde jetzt nur die Variable x aus der Datei geladen, unabhängig davon, was die Datei sonst noch beinhaltet. Seite 96 von 142

98 11.7 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: % Ab hier wird die Zeile als Kommentar betrachtet und nicht ausgewertet edit help() load() save() Startet den MATLAB Editor Gibt den ersten zusammenhängenden Kommentarblock eines Scriptes aus Laden von Daten Speichern von Daten Tabelle 11-1: Zusammenfassung Kapitel 11 Seite 97 von 142

99 12 Modulare Programmierung Sich und anderen Anwendern zu Liebe sollte man sich beim Erstellen von MATLAB-Code von Anfang an einen klaren, übersichtlichen und robusten Programmierstil aneignen. Neben der klaren Dokumentation der Programme und der Verwendung aussagekräftiger Variablennamen zählt zu einem guten Programmierstil insbesondere die modulare Programmierung mit Hilfe von Funktionen Die Funktion Formal ist eine Funktion eine Black Box mit Eingängen und Ausgängen. In dieser Black Box werden die Eingangswerte zu Ausgangswerten verarbeitet. Eingang Black Box Ausgang Eine Funktion kann eine beliebige Anzahl an Eingangs- und Ausgangswerten haben. Natürlich gibt es auch Funktionen ohne Eingangs- und/oder Ausgangswerte. Funktionen werden wie Scripte in m-files gespeichert und haben folgende Syntax: function Ausgangswert = funktionsname( Eingangswert ) Syntax 12-1: Funktion mit einem Rückgabewert Mehrere Eingangs- und Ausgabewerte können wie folgt definiert werden: function [Aus1, Aus2, ] = funktionsname(ein1, Ein2, Ein3, ) Syntax 12-2: Function mit mehreren Parametern Diese Zeile stellt die erste Zeile des m-files einer Funktion dar. Kommentare können auf die gleiche Weise geschrieben werden, wie bei Scripten, also mit einem vorangestellten % Beispiel für eine Funktion: Kurvendiskussion Gegeben ist folgende Aufgabe: Es soll eine Funktion erstellt werden, welcher ein Polynom und ein Bereich übergeben werden, und die dann eine vollständige Kurvendiskussion des Polynoms im vorgegebenen Bereich durchführt und das Polynom zeichnet. Die Kurvendiskussion umfasst die Bestimmung der Nullstellen, der Extrempunkte und der Wendepunkte. Seite 98 von 142

100 Polynom Bereich Kurvendiskussion Nullstellen Wendepunkte Extrempunkte Zuerst ist zu überlegen, wie man der Funktion ein Polynom übergeben kann. Ein Polynom ist durch seinen Koeffizientenvektor eindeutig bestimmt, so dass man diesen an unsere Funktion übergeben kann. Der Bereich besteht aus drei Werten, einem Anfangs- und einem Endwert sowie der Schrittweite. Hierbei ist zu beachten, dass die Schrittweite nur für die grafische Darstellung benötigt wird, die Nullstellen und Ableitungen werden dagegen exakt berechnet. Die Ausgaben stellen jeweils einen Vektor von x-werten dar. Nach diesen grundsätzlichen Überlegungen kann man jetzt mit der Programmierung der Funktion beginnen. Im MATLAB Editor erzeugt man ein neues, leeres m-file und gibt den Code ein: function [Nullstellen, Wendepunkte, Extrempunkte] = Kurv_Disk(Polynom, Bereich) % function [Nullstellen, Wendepunkte, Extrempunkte] = % Kurv_Disk(Polynom, Bereich) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Diese Funktion führt eine Kurvendiskussion für ein Polynom durch % und stellt das Ergebnis grafisch dar. % % input: Polynom: Koeffizientenvektor des Polynoms % Bereich: [Start, Ende, Schrittweite] % % output: Nullstellen: Vektor mit den x-werten der Nullstellen % Wendepunkte: Vektor mit den x-werten der Wendepunkte % Extrempunkte: Vektor mit den x-werten der Extrempunkte %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Erzeugung der x-werte x = [Bereich(1):Bereich(3):Bereich(2)]; % Erzeugung der y-werte y = polyval(polynom, x); % Berechnung der Nullstellen Nullstellen = roots(polynom); Seite 99 von 142

101 % Erzeugung der ersten Ableitung, deren y-werte und Nullstellen Polynom_1 = polyder(polynom); % Koeffizienten der 1. Ableitung y_1 = polyval(polynom_1, x); Extrempunkte = roots(polynom_1); Extrempunkte_y = polyval(polynom, Extrempunkte); % Erzeugung der zweiten Ableitung, deren y-werte und Nullstellen Polynom_2 = polyder(polynom_1); % Koeffizienten der 2. Ableitung y_2 = polyval(polynom_2, x); Wendepunkte = roots(polynom_2); Wendepunkte_y = polyval(polynom, Wendepunkte); % Plotten der Funktionen plot(x, y, 'b-'); hold('on'); plot(x, y_1, 'r-'); plot(x, y_2, 'm-'); scatter(nullstellen, zeros(1,length(nullstellen)), 'go'); scatter(extrempunkte, Extrempunkte_y, 'co'); scatter(wendepunkte, Wendepunkte_y, 'ko'); grid('on'); title('kurvendiskussion'); xlabel('x-achse'); ylabel('y-achse'); legend('polynom','erste Ableitung', 'Zweite Ableitung', 'Nullstellen', 'Extrempunkte', 'Wendepunkte',4); hold('off'); Code 12-1: Kurv_Disk Die Kopfzeile wurde im Kommentarblock wiederholt. Bei Aufruf der MATLAB Hilfe wird dadurch die Anzahl und Reihenfolge der Parameter deutlich Die Funktion scatter() liefert einen Graphen aus einzelnen Punkten, die nicht verbunden werden. Diese Punkte werden über ihre x und y Werte angegeben. Seite 100 von 142

102 Nun muss man das m-file noch speichern. MATLAB fragt hierbei nach einem Namen es ist wichtig, dass der Name des m-files mit dem Namen der Funktion (hier: Kurv_Disk) übereinstimmt. Nun ein Test der Funktion anhand eines Beispiels: Der Koeffizientenvektor lautet also: koef = [1, -4, 0, 7]. Als Bereich soll werden: betrachtet [Nus, Wp, Ep] = Kurv_Disk(koef, [-5, 5, 0.01]) Nus = Ep = Wp = Code 12-2: Aufruf von Kurv_Disk (Code 12-1) Seite 101 von 142

103 Abbildung 12-1: Kurv_Disk (Code 12-2) Beim Aufruf einer Funktion werden sowohl Eingabewerte, wie auch Ausgabewerte anhand ihrer Reihenfolge zugeordnet. Es ist also wichtig zu wissen, welchen Wert eine Funktion an welcher Stelle erwartet. Bei Funktionen mit vielen Parametern ist die Zuordnung nach Reihenfolge allerdings manchmal lästig und fehleranfällig. MATLAB bietet daher auch Methoden, die es erlauben, Eingaben und Ausgaben flexibler zu gestalten. Beim Aufruf einer Funktion erfolgt die Zuordnung von Eingabe- wie auch Ausgabewerten ausschließlich über die Reihenfolge der Parameter in der Liste. Seite 102 von 142

104 12.3 Arbeitsbereiche und Variablentypen MATLAB benutzt beim Abarbeiten von Funktionen ein Konzept lokaler Arbeitsbereiche. Einer dieser Arbeitsbereiche ist der bereits bekannte MATLAB Hauptarbeitsbereich, welchen man benutzt, wenn man im COMMAND WINDOW Variablen erzeugt oder Script-Files abarbeitet. Jede aufgerufene Funktion hat jedoch wiederum ihren eigenen Arbeitsbereich. Variablen, die in einer Funktion definiert werden, existieren nur lokal innerhalb ihres Arbeitsbereiches und sind auch nur innerhalb dieser Funktion sichtbar und veränderbar. Das heißt, mehrere Funktionen können gleichzeitig Variablen mit gleichem Namen (z.b. die Laufvariable i) benutzen, ohne sich dabei gegenseitig zu beeinflussen. Soll eine Variable im aktuellen Arbeitsbereich mit Hilfe einer Funktion bearbeitet werden, muss diese Variable beim Aufruf der Funktion explizit als Parameter mit angegeben werden. Funktionsaufrufe erfolgen call-by-value, es wird also eine lokale Kopie jeder übergebenen Variablen erzeugt, mit der die Funktion dann arbeitet. Schreibzugriffe verändern die Kopie, das Original bleibt dagegen im ursprünglichen Zustand. Soll die Veränderung nach Ablauf der Funktion auch auf den Arbeitsbereich des aufrufenden Programms wirken, muss das Ergebnis explizit als Ausgabeparameter zurückgegeben werden. Die call-by-value Funktionalität von MATLAB arbeitet dabei ausgesprochen effizient, es werden also insbesondere bei großen Matrizen nicht einfach vollständige Kopien erzeugt, sondern geschickt nur die Änderungen dynamisch verwaltet. Es soll an dieser Stelle nicht unerwähnt bleiben, dass MATLAB auch sogenannte globale Variablen unterstützt. Diese werden einmal im Hauptprogramm deklariert und sind dann ohne explizite Parameterübergabe auch in Funktionen unter ihrem Namen sichtbar und veränderbar. Diese zunächst praktisch erscheinende Möglichkeit birgt aber aufgrund der mangelnden Kontrollmöglichkeiten ein erhebliches Fehlerrisiko in sich. Das Konzept der lokalen Arbeitsbereiche mit expliziter Parameterübergabe hat dagegen klar strukturierte und sichere Datenpfade zur Folge und verhindert insbesondere bei komplexeren Programmen unkontrollierte und meist schwer nachvollziehbare Schreibzugriffe über Funktionsgrenzen hinweg. Auf globale Variablen kann und sollte man daher (bis auf sehr seltene Spezialfälle) unbedingt verzichten! Finger weg von globalen Variablen!!!! Seite 103 von 142

105 12.4 Matlab-eigene Funktionen Viele in MATLAB eingebaute Operationen liegen als Funktionen in m-files vor, so dass man sich jederzeit ansehen kann, was MATLAB bei ihrem Aufruf tut. Ein Beispiel hierfür ist die Funktion poly(): function c = poly(x) Nun kommt der Kommentarblock, welcher von der Hilfe ausgegeben wird: %POLY Convert roots to polynomial. % POLY(A), when A is an N by N matrix, is a row vector with % N+1 elements which are the coefficients of the % characteristic polynomial, DET(lambda*EYE(SIZE(A)) - A). % % POLY(V), when V is a vector, is a vector whose elements are % the coefficients of the polynomial whose roots are the % elements of V. For vectors, ROOTS and POLY are inverse % functions of each other, up to ordering, scaling, and % roundoff error. % % ROOTS(POLY(1:20)) generates Wilkinson's famous example. % % Class support for inputs A,V: % float: double, single % % See also ROOTS, CONV, RESIDUE, POLYVAL. Ab hier steht es nicht mehr in der Hilfe % Copyright The MathWorks, Inc. % $Revision: $ $Date: 2004/03/02 21:47:54 $ Hier beginnt nun die Berechnung [m,n] = size(x); if m == n % Characteristic polynomial (square x) e = eig(x); elseif (m==1) (n==1) else e = x; Seite 104 von 142

106 error('matlab:poly:inputsize','argument must be a vector or a square matrix.') end % Strip out infinities e = e( isfinite(e) ); % Expand recursion formula n = length(e); c = [1 zeros(1,n,class(x))]; for j=1:n c(2:(j+1)) = c(2:(j+1)) - e(j).*c(1:j); end % The result should be real if the roots are complex conjugates. if isequal(sort(e(imag(e)>0)),sort(conj(e(imag(e)<0)))) c = real(c); end Code 12-3: poly Generell sollte man sich auch beim Schreiben eigener Funktionen von Anfang an einen transparenten und strukturierten Programmierstil aneignen. Vorschläge und Anregungen dazu finden sich z.b. in den MATLAB Programming Style Guidelines, die im Downloadbereich zur Vorlesung verfügbar sind Debugger bei Funktionen Die grundlegenden Funktionalitäten des Debuggers wurden schon im Kapitel 11 aufgezeigt. Allerdings bietet der Debugger bei der Nutzung von Funktionen weitere Möglichkeiten. Step Der Menüeintrag Debug Step (Taste F10) führt die aktuelle Codezeile aus. Step In Der Menüeintrag Debug Step In (Taste F11) führt die aktuelle Codezeile aus. Falls eine Funtion aufgerufen wird, springt der Debugger in diese hinein. Step Out Der Menüeintrag Debug Step Out (Taste Umschalt+F11), nach Step In, führt den Rest der aktuellen Funktion aus und springt zurück in dieübergeordnete Funktion. Seite 105 von 142

107 Wichtig ist es immer, den Gültigkeitsbereich der Variablen (Stack) zu beachten. Veränderungen beziehen sich immer auf die aktuelle Funktion 12.6 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: function scatter() Beginn einer Funktion Ein Plot aus einzelnen Punkten Tabelle 12-1: Zusammenfassung Kapitel 12 Seite 106 von 142

108 13 Effiziente Programmierung 13.1 Vektorisierung Um höchstmögliche Arbeitsgeschwindigkeit zu erreichen, sollte man in MATLAB-Algorithmen vektorisieren, wo immer möglich. Dort wo andere Programmiersprachen vielleicht for- oder do- Schleifen benötigen, kann MATLAB meist Vektor- oder Matrix-Operationen ausführen. Das bringt gewöhnlich einen Geschwindigkeitsvorteil gegenüber der Verwendung von Schleifen. Die Zeit, welche die Ausführung eines Programmteils benötigt, lässt sich sehr einfach mit Hilfe der Stoppuhr Befehle tic und toc ermitteln. Der Befehl tic startet die Stoppuhr und toc stoppt die Uhr wieder. Ein einfaches Beispiel: tic; t = 0.1; for k = 1:1000 end x(k) = t; y(k) = log10(t); t = t + 0.1; plot(x,y); toc; Elapsed time is seconds. Code 13-1: Zeitmessung - Schleife Nun die gleiche Funktionalität in vektorisierter Form: tic; x = 0.1:.1:100; y = log10(x); plot(x,y); toc; Elapsed time is seconds. Code 13-2: Zeitmessung vektorisiert Seite 107 von 142

109 13.2 Matrizen verändern Häufig ist es wichtig, die Dimensionen von Matrizen zu verändern. Hierfür stellt MATLAB einige sehr mächtige Funktionen zur Verfügung: reshape() ändert die Dimensionierung einer Matrix. Hierbei können folgende Parameterkombinationen benutzt werden: B = reshape(a,m,n) Syntax 13-1: reshape() A steht für die Matrix, deren Dimensionierung verändert werden soll, m und n stehen für die Anzahl der Elemente in der jeweiligen Dimension. Entweder m oder n kann auch durch [] ersetzt werden, damit MATLAB die Anzahl der Elemente selbst bestimmt. Die Gesamtzahl der Elemente der Matrix muss natürlich unverändert bleiben. Ein Beispiel: A = B = reshape(a,2,[]) B = Code 13-3: reshape() repmat() erzeugt eine Matrix aus Replikationen der Eingabematrix Hierbei können folgende Parameterer benutzt werden: B = repmat(a,m,n) Syntax 13-2: repmat() A steht für die Matrix, die repliziert werden soll. m und n bezeichnen die Anzahl von Kopien von A in der entsprechenden Dimension. Auch hierzu ein Beispiel: A = magic(3) A = B = repmat(a,2,3) B = Seite 108 von 142

110 Code 13-4: repmat() 13.3 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: tic toc repmat() reshape() Start der Stoppuhr Ende der Stoppuhr Vervielfältigt die Eingabematrix Ändert die Dimensionierung einer Matrix Tabelle 13-1: Zusammenfassung Kapitel 13 Seite 109 von 142

111 14 Datentypen Bisher wurden Variablen einfach benutzt, ohne sich weiter Gedanken darüber zu machen, welche Datentypen diesen Variablen eigentlich zugrunde liegen. Im Folgenden soll nun dargestellt werden, welche Datentypen MATLAB zur Verfügung stellt Numerische Datentypen Fließkommazahlen double precision (64 Bit) Dies ist die Standardgenauigkeit, mit der MATLAB arbeitet, wenn nichts anderes deklariert wurde. single precision (32 Bit) Benötigt weniger Speicherplatz, auch werden einfache Berechnungen schneller. Um eine Variable in eine single precision Variable zu wandeln kann man eine der folgenden Möglichkeiten verwenden: o o x = single(x) x = cast(x, 'single') Die Zahlen werden dabei durch Rundung gekürzt. Mit o o x = double(x) x = cast(x, 'double') kann man eine single precision Variable wieder in eine double precision Variable umwandeln. Zu beachten ist, dass fehlende Stellen hierbei zufällig aufgefüllt werden (es wird der neu requirierte Registerbereich einfach übernommen, das Ergebnis hängt also von den vorherigen Operationen ab, ist allerdings aufgrund der dynamischen Speicherverwaltung von MATLAB nicht vorhersagbar). Seite 110 von 142

112 Ganzzahlige Werte MATLAB unterstützt folgende ganzzahlige Datentypen: int8 (8 Bit) Zahlenbereich: uint8 (8 Bit) Zahlenbereich: int16 (16 Bit) Zahlenbereich: uint16 (16 Bit) Zahlenbereich: int32 (32 Bit) Zahlenbereich: uint32 (32 Bit) Zahlenbereich: int64 (64 Bit) Zahlenbereich: uint64 (64 Bit) Zahlenbereich: Die Umwandlung geschieht analog der Fließkommazahlen entweder durch cast() oder durch den Namen des Datentyps gefolgt von der Variablen als Funktionsparameter. Das u steht hierbei für unsigned englisch für ohne Vorzeichen. Bei ganzzahligen Werten ist teilweise die Ausführungsreihenfolge (MATLAB führt Befehle von links nach rechts aus) zu beachten, damit es nicht zu einem Zahlen Überlauf kommt! Seite 111 von 142

113 Dazu ein Beispiel: x = uint8(8) x = 8 y = uint8(6) y = 6 -y+x 8 x-y 2 Code 14-1: Beispiel Zahlenüberlauf bei ganzzahligen Datentypen Seite 112 von 142

114 Weitere Darstellungen MATLAB kann auch mit Zahlen im hexadezimalen und binären Zahlensystem, sowie mit Zahlen zu einer beliebigen Basis umgehen. Hierzu gibt es Umwandlungsfunktionen: Hexadezimalzahlen diese werden mit o o hex2dec() dec2hex() zu Dezimalzahlen gewandelt und umgekehrt. Dualzahlen diese werden mit o o bin2dec() dec2bin() zu Dezimalzahlen umgewandelt und umgekehrt. Zum Schluß noch Zahlen einer beliebigen Basis diese werden mit o o base2dec() dec2base() zu Dezimalzahlen umgewandelt und umgekehrt Logische Variablen MATLAB kennt keinen eigenen Datentyp für logische Variablen. Es wird einzig und allein zwischen 0 (= logisch falsch) und nicht 0 (= logisch wahr) unterschieden. Obwohl also jede Zahl als wahr interpretiert wird sollte man sich angewöhnen mit und zu arbeiten, um Fehlern vorzubeugen und den Code besser lesbar zu machen Char und String MATLAB benutzt den Unicode Standard (eine Erweiterung von ASCII) um Buchstaben und Zeichen darzustellen. Ein String ist ein Array von Zeichen (chars). Um ein char einzugeben, kann man entweder die Funktion char() mit der Zahl in Unicode als Argument benutzen, oder die Zeichen direkt, von ' umschlossen eingeben. x = char([72 105]) x = Hi Code 14-2: Zeichenkette erzeugen mit char() entspricht y = 'Hi' Seite 113 von 142

115 y = Hi Code 14-3: Zeichenkette erzeugen als String Normalerweise wird man natürlich die zweite Variante bevorzugen Stringfunktionen Verketten von Strings Um zwei oder mehr Strings zu einem einzigen, längeren String zu verketten, benutzt man die Funktion strcat() mit den einzelnen Strings als Argument. a = 'Hallo'; b = ' Benutzer'; c = ' ich heiße Matlab'; d = strcat(a, b, c, '!!!') d = Hallo Benutzer ich heiße Matlab!!! Code 14-4: Verketten von Strings mit strcat() Eine Alternative hierzu ist es, die Teilstrings in einem Array zusammenzufassen. Ein Beispiel macht das Ganze plastischer: a = 'Hallo'; b = ' Benutzer'; c = ' ich heiße Matlab'; d = [a b c '!!!'] d = Hallo Benutzer ich heiße Matlab!!! Code 14-5: verketten von Strings mit [] Finden eines Strings innerhalb eines anderen Um einen Teilstring in einer Zeichenkette zu lokalisieren bedient man sich der Funktion findstr(). d = Hallo Benutzer ich heiße Matlab!!! findstr('ich', d) 16 Code 14-6: Beispiel findstr() - Fund Die Funktion findstr() gibt dabei bei Erfolg die Position des ersten Buchstabens des gesuchten Teilstrings in der Zeichenkette zurück. Seite 114 von 142

116 Ist der Teilstring nicht in der Zeichenkette enthalten, gibt MATLAB ein leeres Array aus: findstr('du', d) [] Code 14-7: Beispiel findstr() - kein Fund Wenn ein String mehrmals enthalten ist, gibt MATLAB alle Positionen aus: findstr(' ', d) Code 14-8: Beispiel findstr() - mehrere Fundstellen Vergleichen von Zeichenketten Um zwei Zeichenketten miteinander zu vergleichen benutzt man strcmp(). e = strcat(a, b, c) e = Hallo Benutzer ich heiße Matlab strcmp(d,e) 0 Code 14-9: Vergleichen von Strings mit strcmp() Die beiden Zeichenketten sind natürlich nicht gleich, da ja e die drei! am Ende nicht enthält. Will man nur die ersten n Zeichen vergleichen benutzt man strcnmp(). strncmp(d,e,16) 1 Code 14-10: Vergleichen von Strings mit strncmp() Die ersten 16 Zeichen der Strings sind also gleich Wandeln von Zahlen und Strings Häufig liefern Benutzereingaben Strings zurück. Diese können natürlich auch Zahlen enthalten. Wenn man nun diese Zahlen weiterverarbeiten möchte benötigt man eine Möglichkeit zur Umwandlung eines Strings in eine Zahl. Genau dies ermöglicht die Funktion str2num(): a = ' ' a = whos a Name Size Bytes Class Attributes Seite 115 von 142

117 a 1x10 20 char a = str2num(a) a = e+004 whos a Name Size Bytes Class Attributes a 1x1 8 double Code 14-11: Umwandlung eines Strings in eine Fließkommazahl - str2num() Natürlich ist die Umwandlung nicht nur in diese Richtung möglich. Die Funktion num2str() erledigt den Transfer in der anderen Richtung (Variable a von obigem Beispiel): a = num2str(a) a = whos a Name Size Bytes Class Attributes a 1x10 20 char Code 14-12: Umwandlung einer Fließkommazahl in einen String - num2str() Dies ist zum Beispiel bei der formatierten Ausgabe von Berechnungsergebnissen hilfreich: a = sqrt(5); disp(['das Ergebnis ist ' num2str(a)]) Code 14-13: Beispiel: Formatierte Ausgabe mit num2str() 14.5 Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: '' base2dec() bin2dec() cast() char() dec2base() dec2bin() dec2hex() String Zahl einer Basis n in Dezimal umwandeln Binär in Dezimal umwandeln Datentyp umwandeln Datentyp in char umwandeln Dezimal in Zahl einer Basis n umwandeln Dezimal in Binär umwandeln Dezimal in Hexadezimal umwandeln Seite 116 von 142

118 double() findstr() hex2dec() int8() int16() int32() int64() num2str() single() uint8() uint16() uint32() uint64() str2num() strcat() strcmp() strncmp() Datentyp in double precision umwandeln Lokalisiert einen Teilstring in einer Zeichenkette Hexadezimal in Dezimal umwandeln Datentyp in Integer 8 umwandeln Datentyp in Integer 16 umwandeln Datentyp in Integer 32 umwandeln Datentyp in Integer 64 umwandeln Zahl in Zeichenkette umwandeln Datentyp in single precision umwandeln Datentyp in unsigned Integer 8 umwandeln Datentyp in unsigned Integer 16 umwandeln Datentyp in unsigned Integer 32 umwandeln Datentyp in unsigned Integer 64 umwandeln Zeichenkette in Zahl umwandeln Verkettung von Strings Vergleicht zwei Zeichenketten Vergleicht die ersten n Buchstaben zweier Zeichenketten Tabelle 14-1: Zusammenfassung Kapitel 14 Seite 117 von 142

119 15 Datenstrukturen Außer den Standard Matrix-orientierten Datentypen bietet MATLAB weitere Möglichkeiten, Daten zu strukturieren Cell-Arrays Die Elemente eines MATLAB Arrays müssen alle vom selben Datentyp (zum Beispiel Char) sein. Um diese Beschränkung aufzuheben und mehr Flexibilität im Umgang mit Daten zu bieten, stellt MATLAB sogenannte Cell-Arrays zur Verfügung. Bei diesen stellt jede Zelle einen Container dar, in dem beliebige Inhalte liegen können. Auch sind die einzelnen Container/Zellen vollkommen unabhängig voneinander. Im Unterschied zu einem normalen Vektor- oder Matrix-Array wird auf den Inhalt eines Cell-Arrays mit Hilfe von geschweiften Klammern {} statt runden Klammern () zugegriffen. Ein Beispiel: C = {[1 2 3; 4 5 6; 7 8 9], 'Hallo'; , pi} C = [3x3 double] 'Hallo' [1.6844e+010] [3.1416] Code 15-1: Cell-Array Das Cell-Array C besteht also aus 4 Zellen. Nun soll der Inhalt der Zellen wieder ausgeben werden. C{1} C{2} C{3} e+010 Hallo C{4} C(1) [3x3 double] Code 15-2: Zugriff auf Zellen Seite 118 von 142

120 15.2 Strukturen Wenn man die runden Klammern () anstatt der geschweiften Klammern {} verwendet, bekommt man die Zelle selber, also den Container, nicht dessen Inhalt. MATLAB bietet noch eine weitere Möglichkeit, Daten strukturiert abzulegen das sogenannte Struct. Diese Datenstruktur ist wie ein Baum organisiert. Von einem Hauptstamm gehen Zweige ab, an deren Ende wiederum weitere Zweige hängen können. Die eigentlichen Daten hängen immer am Ende eines Zweiges. In der MATLAB Syntax wird ein Knoten, von dem mehrere Zweige abgehen, durch einen Punkt(.) gekennzeichnet. Am besten sieht man dies anhand eines Beispiels: Die Aufgabe ist, für die Verwaltung der Universität eine Datenstruktur zu entwerfen, mit der die Daten der Studenten abgelegt werden können. Die Daten sollen wie folgt aussehen: Student Name MatrikelNr Nachname Vorname Strasse Adresse Hausnummer Postleitzahl Ort Nun soll das Ganze in MATLAB implementiert werden. student.matrikelnr = student = MatrikelNr: student.name.nachname = 'Müller' student = Name: [1x1 struct] MatrikelNr: student.name.vorname = 'Max'; student.adresse.strasse = 'Werner-Heisenberg-Weg'; student.adresse.hausnummer = 121; student.adresse.postleitzahl = 83779; Seite 119 von 142

121 student.adresse.ort = 'Neubiberg'; student student = Name: [1x1 struct] MatrikelNr: Adresse: [1x1 struct] student.adresse Strasse: 'Werner-Heisenberg-Weg' Hausnummer: 121 Postleitzahl: student.name Ort: 'Neubiberg' Nachname: 'Müller' Vorname: 'Max' Code 15-3: Struct Student Dies ist also die geforderte Struktur. Bisher ist aber nur ein einziger Student angelegt, die Verwaltung benötigt dies aber ohne Zweifel für eine Vielzahl von Studenten. Glücklicherweise bietet MATLAB auch hierfür eine ganz einfache Lösung. Das struct, welches eben erschaffen wurde, ist in Wahrheit nur das erste Element eines Arrays, eines sogenannten struct-arrays. Daher kann man es auch benutzten wie ein Array. student(1) Name: [1x1 struct] MatrikelNr: Adresse: [1x1 struct] Code 15-4: Ausgabe Struct Student (Code 15-3) Dies ist genau der eben erzeugte Eintrag. Nun soll also ein weiterer Student hinzugefügt werden: student(2).matrikelnr = student = 1x2 struct array with fields: Name MatrikelNr Adresse student(2).adresse.strasse = 'Bahnhofstraße'; Seite 120 von 142

122 student(2).adresse.hausnummer = -11; student(2).adresse.postleitzahl = ; student(2).adresse.ort = 'Tantenhausen'; student(2).name.nachname = 'Stu'; student(2).name.vorname = 'dent'; student(2) Name: [1x1 struct] MatrikelNr: Adresse: [1x1 struct] student(2).adresse Strasse: 'Bahnhofstraße' Hausnummer: -11 Postleitzahl: Ort: 'Tantenhausen' student(2).name Nachname: 'Stu' Vorname: 'dent' Code 15-5: noch ein Student 15.3 Einige wichtige Funktionen struct2cell() Um eine Struktur in ein Cell-Array zu überführen, bietet MATLAB die Funktion struct2cell() an. s.category = 'tree'; s.height = 37.4; s.name = 'birch' s = category: 'tree' height: name: 'birch' c = struct2cell(s) c = 'tree' [ ] Seite 121 von 142

123 'birch' Code 15-6: Struktur in ein Cell-Array wandeln - struct2cell() Wie man sieht, wurden die Inhalte in das Cell-Array geschrieben. Die Feldnamen werden nicht übernommen fieldnames() Falls man an den Feldnamen interessiert ist, benutzt man die Funktion fieldnames(): n = fieldnames(s) n = 'category' 'height' 'name' Code 15-7: Feldnamen extrahieren - fieldnames() isfield() Es ist auch möglich zu überprüfen, ob ein Feldname in der Struktur vorhanden ist. Hierzu dient isfield(): isfield(s, 'name') 1 isfield(s, 'width') 0 Code 15-8: Feld auf Existenz prüfen - isfield() rmfield() Nun soll ein Feld der Struktur gelöscht werden. Diese Aufgabe löst rmfield(): s = rmfield(s, 'name') s = category: 'tree' height: Code 15-9: Feld aus Struktur entfernen rmfield() Die Variable wird nur geändert, wenn ihr die Struktur nach dem Löschen wieder zugewiesen wird. (Daher s = rmfield( ) im obigen Beispiel.) Seite 122 von 142

124 num2cell() Möchte man ein numerisches Array in ein Cell-Array überführen, benutzt man den Befehl num2cell(). Hierzu als Beispiel ein magisches Quadrat: x = magic(4) x = Code 15-10: magic Seite 123 von 142

125 Das magische Quadrat x soll nun in ein Cell-Array y umgewandelt werden: y = num2cell(x) y = [16] [ 2] [ 3] [13] [ 5] [11] [10] [ 8] [ 9] [ 7] [ 6] [12] [ 4] [14] [15] [ 1] Code 15-11: Numerisches Array in Cell-Array wandeln - num2cell() Für die weitere Verarbeitung der Werte ist es wichtig, folgenden Unterschied im Zugriff auf y zu beachten: y(1) y{1} [16] 16 Code 15-12: Zugriffe Es ist auch möglich diese Umwandlung nur auf eine bestimmte Dimension anzuwenden. Der Optionale 2. Parameter der Funktion num2cell() gibt die Dimension an, entlang der die Umwandlung durchgeführt werden soll: y = num2cell(x,1) y = [4x1 double] [4x1 double] [4x1 double] [4x1 double] y = num2cell(x,2) y = [1x4 double] [1x4 double] [1x4 double] [1x4 double] Code 15-13: num2cell() mit Dimensionseinschränkung Seite 124 von 142

126 cell2mat() Natürlich gibt es auch für die umgekehrte Richtung eine Funktion: cell2mat(). x_2 = cell2mat(y) x_2 = Code 15-14: Cell-Array in numerisches Array wandeln cell2mat() Die generierte Matrix hat nach der Umwandlung die Größe, die sich aus der Summe der Größen der Teilmatrizen entlang der jeweiligen Dimension ergibt. Wichtig ist, dass sich aus den Teilmatrizen eine "rechtwinklige" Matrix bilden lässt - das heißt, die Länge jeder Zeile muss gleich sein, genauso wie die Länge jeder Spalte. Weiterhin müssen alle Elemente des Cell-Arrays vom gleichen Typ (zum Beispiel Double) sein, damit die Umwandlung funktionieren kann Zusammenfassung In diesem Kapitel wurden folgende Befehle vorgestellt: cell2mat() fieldnames() isfield() num2cell() rmfield() struct2cell() Cell-Array in Matrix umwandeln Feldnamen einer Struktur in ein Cell-Array schreiben Überprüft, ob die Eingabe ein Feld der Struktur ist Matrix in Cell-Array umwandeln Entfernt ein Feld aus einer Struktur Inhalte einer Struktur in ein Cell-Array schreiben Tabelle 15-1: Zusammenfassung Kapitel 15 Seite 125 von 142

127 16 Benutzerschnittstellen Bisher haben wir nur sehr einfache Möglichkeiten zur Interaktion mit dem Benutzer verwendet. Im Wesentlichen waren dies die direkte Ein- und Ausgabe im Kommandofenster sowie die Ausgabe mittels Funktionsgraphen. In diesem Kapitel werden einige weitere Möglichkeiten zur Nutzerinteraktion vorgestellt Kommandozeile Um eine Ausgabe auf der Kommandozeile zu erzeugen benutzt man den Befehl disp(). Dieser Befehl kann sowohl Strings, als auch Zahlen oder Matrizen ausgeben. Um eine Eingabe vom Benutzer zu erhalten kann man den Befehl input() benutzen. Dies funktioniert wie folgt: x = input('wie heißt du? ', 's'); disp(strcat('hallo ',x)); Code 16-1: Nutzerdialog auf Kommandozeile input() Das Argument 's' im Input() Befehl lässt die Eingabe als String behandeln, unabhängig davon, was der Nutzer eingibt. Wenn man den optionalen Parameter 's' weglässt, versucht input() den Typ der Eingabe selbst zu erkennen (z.b. Zahl, Matrix ) Dialogboxen Eine weitere Möglichkeit mit dem Benutzer zu kommunizieren bieten Dialogboxen. Einige davon werden nun gezeigt Hilfebox helpdlg('hallo Benutzer','Hilfebox'); Syntax 16-1: Dialogbox: Hilfe helpdlg() Abbildung 16-1: Dialogbox Hilfe helpdlg() (Syntax 16-1) Seite 126 von 142

128 Inputbox Eine Möglichkeit eine Eingabe vom Benutzer zu erhalten ist die Inputbox. Die Syntax lautet hierbei antwort = inputdlg(frage, Titel, Zeilenanzahl, Default); Syntax 16-2: Dialogbox Nutzereingabe inputdlg() Auch hierzu ein Beispiel: Frage = 'Wie heißt du?:'; Titel = 'Name'; Zeilen = 1; Default = {'Student'}; Antwort = inputdlg(frage, Titel, Zeilen, Default); Code 16-2: Dialogbox Nutzereingabe inputdlg() Abbildung 16-2: Dialogbox Nutzereingabe inputdlg() (Code 16-2) Messagebox Um eine Nachricht an den Benutzer auszugeben benutzt man die Messagebox. Die Syntax ist: msgbox(message,title,icon); Syntax 16-3: msgbox Die Variable Icon kann hierbei einen folgender Werte haben: 'none', 'error', 'help', 'warn' msgbox('hallo du', 'Hallo', 'warn'); Code 16-3: Dialogbox Nachricht msgbox() Abbildung 16-3: Dialogbox Nachricht msgbox() (Code 16-3) Seite 127 von 142

129 Questionbox Um dem Benutzer eine Frage mit bis zu drei alternativen Antwortmöglichkeiten zu stellen, benutzt man eine questionbox. Die Syntax ist: Button = questdlg('qstring','title','str1','str2','str3','default'); Syntax 16-4: Dialogbox Frage questdlg() Die drei Strings 'str1' 'str3' enthalten die Beschriftung der Knöpfe, der String default enthält einen der drei Strings der Knöpfe, dieser ist dann als default gesetzt. Button=questdlg('Speichern?','Titel','Ja','Nein','Abbrechen','Ja'); Code 16-4: Dialogbox Frage questdlg() Abbildung 16-4: Dialogbox Frage questdlg() (Code 16-4) Neben diesen einfachen Dialog- und Hinweisboxen bietet MATLAB auch die Möglichkeit, umfangreiche und komfortable graphischen Benutzerschnittstellen (Graphical User Interface GUI) zu erstellen. Die zugehörigen Methoden und die zur interaktiven Steuerung verwendete Technik der Callbacks werden in der aufbauenden Lehrveranstaltung MATLAB - advanced besprochen Zusammenfassung In diesem Kapitel wurden folgende Befehle und Operatoren vorgestellt: disp() input() inputdlg() helpdlg() msgbox() questdlg() Ausgabe auf der Kommandozeile Benutzereingabe aus der Kommandozeile Dialogbox: Eingabe Dialogbox: Hilfe Dialogbox: Nachricht Dialogbox: Frage Tabelle 16-1: Zusammenfassung Kapitel 16 Seite 128 von 142

Erzherzog Johann Jahr 2009

Erzherzog Johann Jahr 2009 Erzherzog Johann Jahr 2009 Der Erzherzog Johann Tag an der FH JOANNEUM in Kapfenberg Was wird zur Erstellung einer Webseite benötigt? Um eine Webseite zu erstellen, sind die folgenden Dinge nötig: 1. Ein

Mehr

Office-Programme starten und beenden

Office-Programme starten und beenden Office-Programme starten und beenden 1 Viele Wege führen nach Rom und auch zur Arbeit mit den Office- Programmen. Die gängigsten Wege beschreiben wir in diesem Abschnitt. Schritt 1 Um ein Programm aufzurufen,

Mehr

LÖSUNGEN AUFGABEN: EXCEL XP (OHNE DATEIEN)

LÖSUNGEN AUFGABEN: EXCEL XP (OHNE DATEIEN) LÖSUNGEN AUFGABEN: EXCEL XP (OHNE DATEIEN) Übung (1) Elemente des Excelfensters Ordnen Sie die Begriffe richtig zu: [1] Titelleiste (Programmleiste) [9] waagrechte/horizontale Bildlaufleiste [2] Menüleiste

Mehr

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle Bedienungsanleitung Einsatzplanung Dieses Programm ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen, also Typ.xlm, deshalb werden Sie

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Übung 4: Einführung in die Programmierung mit MATLAB

Übung 4: Einführung in die Programmierung mit MATLAB Übung 4: Einführung in die Programmierung mit MATLAB AUFGABE 1 Was bewirkt der Strichpunkt? - Der Strichpunkt (Semikola) unterdrück die Anzeige der (Zwischen-) Resultate. Welche Rolle spielt ans? - Wenn

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Text-Zahlen-Formatieren

Text-Zahlen-Formatieren Text-Zahlen-Formatieren Beobachtung: Bei der Formatierung einer Zahl in eine Textzahl und umgekehrt zeigt Excel ein merkwürdiges Verhalten, welches nachfolgend skizziert werden soll: Wir öffnen eine neue

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen Das können wir Ihnen versprechen: An der neuen Taskleiste in Windows 7 werden Sie sehr viel Freude haben. Denn diese sorgt

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Urlaubsregel in David

Urlaubsregel in David Urlaubsregel in David Inhaltsverzeichnis KlickDown Beitrag von Tobit...3 Präambel...3 Benachrichtigung externer Absender...3 Erstellen oder Anpassen des Anworttextes...3 Erstellen oder Anpassen der Auto-Reply-Regel...5

Mehr

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen Dateiname: ecdl2_05_03_documentation Speicherdatum: 22.11.2004 ECDL 2003 Modul 2 Computermanagement

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Was Sie bald kennen und können

Was Sie bald kennen und können Den Rechner verwenden 6 Heutzutage gehört auf jeden Schreibtisch auch ein Taschenrechner denn wer vertraut im Computer-Zeitalter noch seinen eigenen Rechenkünsten? Und da Microsoft mit Windows die Vision

Mehr

Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen

Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen Handbuch ECDL 2003 Basic Modul 2: Computermanagement und Dateiverwaltung Dateien löschen und wiederherstellen Dateiname: ecdl2_05_03_documentation.doc Speicherdatum: 16.03.2005 ECDL 2003 Modul 2 Computermanagement

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung Nach dem Update auf die Version 1.70 bekommen Sie eine Fehlermeldung,

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Hilfe zur Dokumentenverwaltung

Hilfe zur Dokumentenverwaltung Hilfe zur Dokumentenverwaltung Die Dokumentenverwaltung von Coffee-CRM ist sehr mächtig und umfangreich, aber keine Angst die Bedienung ist kinderleicht. Im Gegensatz zur Foto Galeria können Dokumente

Mehr

Computeria Rorschach Mit Excel Diagramme erstellen

Computeria Rorschach Mit Excel Diagramme erstellen Mit Excel Diagramme erstellen 25.12.2010 Roland Liebing Mit Excel Diagramme erstellen Diagramme können Zahlenwerte veranschaulichen, das heisst, mit Hilfe eines Diagramms können Zahlen besser miteinander

Mehr

Erstellen einer digitalen Signatur für Adobe-Formulare

Erstellen einer digitalen Signatur für Adobe-Formulare Erstellen einer digitalen Signatur für Adobe-Formulare (Hubert Straub 24.07.13) Die beiden Probleme beim Versenden digitaler Dokumente sind einmal die Prüfung der Authentizität des Absenders (was meist

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

Schaltfläche Start/Drucker und Faxgeräte, mit rechter Maustaste auf Druckersymbol klicken, Befehl Eigenschaften wählen.

Schaltfläche Start/Drucker und Faxgeräte, mit rechter Maustaste auf Druckersymbol klicken, Befehl Eigenschaften wählen. Fragen und Antworten zu Modul 2 Computerbenutzung 1. Wie kann man die Schriftart der einzelnen Menüs verändern? Mit rechter Maustaste auf Desktop klicken, Befehl Eigenschaften, Register Darstellung, Erweitert,

Mehr

Newsletter. 1 Erzbistum Köln Newsletter

Newsletter. 1 Erzbistum Köln Newsletter Newsletter 1 Erzbistum Köln Newsletter Inhalt 1. Newsletter verwalten... 3 Schritt 1: Administration... 3 Schritt 2: Newsletter Verwaltung... 3 Schritt 3: Schaltflächen... 3 Schritt 3.1: Abonnenten Verwaltung...

Mehr

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint

Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Bilingual konkret Jeopardy and andere Quizformate im bilingualen Sachfachunterricht Tipps zur Erstellung mit Powerpoint Moderner Unterricht ist ohne die Unterstützung durch Computer und das Internet fast

Mehr

Anleitungen zum Publizieren Ihrer Homepage

Anleitungen zum Publizieren Ihrer Homepage Anleitungen zum Publizieren Ihrer Homepage Einrichtung und Konfiguration zum Veröffentlichen Ihrer Homepage mit einem Programm Ihrer Wahl Stand Februar 2015 Die Anleitungen gelten für die Homepage-Produkte:

Mehr

Workshop 6. März 2013

Workshop 6. März 2013 Workshop 6. März 2013 81.92 kurad Weiterbildung Excel / Calc Tipps und Tricks Excel Aktuelles Datum bzw. Uhrzeit per Tastatur eingeben Wenn schnell in einer Tabellenzeile die aktuelle Uhrzeit bzw das aktuelle

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Berechnungen in Access Teil I

Berechnungen in Access Teil I in Access Teil I Viele Daten müssen in eine Datenbank nicht eingetragen werden, weil sie sich aus anderen Daten berechnen lassen. Zum Beispiel lässt sich die Mehrwertsteuer oder der Bruttopreis in einer

Mehr

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt. Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden

Mehr

Einfügen von Bildern innerhalb eines Beitrages

Einfügen von Bildern innerhalb eines Beitrages Version 1.2 Einfügen von Bildern innerhalb eines Beitrages Um eigene Bilder ins Forum einzufügen, gibt es zwei Möglichkeiten. 1.) Ein Bild vom eigenem PC wird auf den Webspace von Baue-die-Bismarck.de

Mehr

3. GLIEDERUNG. Aufgabe:

3. GLIEDERUNG. Aufgabe: 3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung

Mehr

Einfügen mit Hilfe des Assistenten: Um eine Seite hinzufügen zu können, müssen Sie nur mehr auf ein Symbol Stelle klicken.

Einfügen mit Hilfe des Assistenten: Um eine Seite hinzufügen zu können, müssen Sie nur mehr auf ein Symbol Stelle klicken. 2. SEITE ERSTELLEN 2.1 Seite hinzufügen Klicken Sie in der Navigationsleiste mit der rechten Maustaste auf das Symbol vor dem Seitentitel. Es öffnet sich ein neues Kontextmenü. Wenn Sie nun in diesem Kontextmenü

Mehr

iphone-kontakte zu Exchange übertragen

iphone-kontakte zu Exchange übertragen iphone-kontakte zu Exchange übertragen Übertragen von iphone-kontakten in ein Exchange Postfach Zunächst muss das iphone an den Rechner, an dem es üblicherweise synchronisiert wird, angeschlossen werden.

Mehr

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

3 ORDNER UND DATEIEN. 3.1 Ordner

3 ORDNER UND DATEIEN. 3.1 Ordner Ordner und Dateien PC-EINSTEIGER 3 ORDNER UND DATEIEN Themen in diesem Kapitel: Erstellung von Ordnern bzw Dateien Umbenennen von Datei- und Ordnernamen Speicherung von Daten 3.1 Ordner Ordner sind wie

Mehr

Firefox: Die Lesezeichen im Griff

Firefox: Die Lesezeichen im Griff Firefox: Die Lesezeichen im Griff Die Favoriten im Internet Explorer sind eine Lachnummer gegen die Lesezeichen im Firefox. Eingetippte Schlagworte reichen, um sie aufzurufen. Außerdem können ganze Befehlsfolgen

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Dossier: Rechnungen und Lieferscheine in Word

Dossier: Rechnungen und Lieferscheine in Word www.sekretaerinnen-service.de Dossier: Rechnungen und Lieferscheine in Word Es muss nicht immer Excel sein Wenn Sie eine Vorlage für eine Rechnung oder einen Lieferschein erstellen möchten, brauchen Sie

Mehr

Outlook Web App 2010 Kurzanleitung

Outlook Web App 2010 Kurzanleitung Seite 1 von 6 Outlook Web App 2010 Einleitung Der Zugriff über Outlook Web App ist von jedem Computer der weltweit mit dem Internet verbunden ist möglich. Die Benutzeroberfläche ist ähnlich zum Microsoft

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) 3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Speichern. Speichern unter

Speichern. Speichern unter Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen

Grundlagen Word Eigene Symbolleisten. Eigene Symbolleisten in Word erstellen Eigene Symbolleisten in Word erstellen Diese Anleitung beschreibt, wie man in Word eigene Symbolleisten erstellt und mit Schaltflächen füllt. Im zweiten Teil wird erklärt, wie man mit dem Makrorekorder

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

1. So einfach ist der Excel-Bildschirm

1. So einfach ist der Excel-Bildschirm 1. So einfach ist der Excel-Bildschirm So sieht Excel aus, wenn ich es gestartet habe. Leider ist bei vielen Symbolen in der Menüleiste nicht auf den ersten Blick zu erkennen, welche Funktion sie übernehmen.

Mehr

Eine Einführung in die Installation und Nutzung von cygwin

Eine Einführung in die Installation und Nutzung von cygwin Eine Einführung in die Installation und Nutzung von cygwin 1 1. Woher bekomme ich cygwin? Cygwin ist im Internet auf http://www.cygwin.com/ zu finden. Dort lädt man sich die setup.exe in ein beliebiges

Mehr

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern

Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Handbuch ECDL 2003 Professional Modul 2: Tabellenkalkulation Vorlagen benutzen und ändern Dateiname: ecdl_p2_02_03_documentation.doc Speicherdatum: 08.12.2004 ECDL 2003 Professional Modul 2 Tabellenkalkulation

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Kleines Handbuch zur Fotogalerie der Pixel AG

Kleines Handbuch zur Fotogalerie der Pixel AG 1 1. Anmelden an der Galerie Um mit der Galerie arbeiten zu können muss man sich zuerst anmelden. Aufrufen der Galerie entweder über die Homepage (www.pixel-ag-bottwartal.de) oder über den direkten Link

Mehr

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können.

Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Excel-Schnittstelle Im Folgenden wird Ihnen an einem Beispiel erklärt, wie Sie Excel-Anlagen und Excel-Vorlagen erstellen können. Voraussetzung: Microsoft Office Excel ab Version 2000 Zum verwendeten Beispiel:

Mehr

Seite 1. Datum einfügen

Seite 1. Datum einfügen Seite 1 Den Text zu schreiben ist einerseits Abhängig von der DIN 5008, an die man sich halten sollte. Andererseits sind Schriftart und Aussehen durch die schnell erkennbaren Symbole leicht zu gestalten.

Mehr

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an.

Es gibt situationsabhängig verschiedene Varianten zum Speichern der Dokumente. Word bietet im Menü DATEI unterschiedliche Optionen an. 3. SPEICHERN DATEIEN SPEICHERN Dateien werden in Word Dokumente genannt. Jede Art von Datei, die Sie auf Ihrem Computer neu erstellen, befindet sich zuerst im Arbeitsspeicher des Rechners. Der Arbeitsspeicher

Mehr

OS Anwendungsbeschreibung

OS Anwendungsbeschreibung Inhalt Einleitung... 2 Start des Programms... 2 Scannen einer neuen Zeitungsseite... 4 Presse-Clipping... 8 Artikel ausschneiden und bearbeiten... 11 Übernahme aus der Zwischenablage... 19 Ausdruck in

Mehr

VB.net Programmierung und Beispielprogramm für GSV

VB.net Programmierung und Beispielprogramm für GSV VB.net Programmierung und Beispielprogramm für GSV Dokumentation Stand vom 26.05.2011 Tel +49 (0)3302 78620 60, Fax +49 (0)3302 78620 69, info@me-systeme.de, www.me-systeme.de 1 Inhaltsverzeichnis Vorwort...2

Mehr

EINFACHES HAUSHALT- KASSABUCH

EINFACHES HAUSHALT- KASSABUCH EINFACHES HAUSHALT- KASSABUCH Arbeiten mit Excel Wir erstellen ein einfaches Kassabuch zur Führung einer Haushalts- oder Portokasse Roland Liebing, im November 2012 Eine einfache Haushalt-Buchhaltung (Kassabuch)

Mehr

Dingsda - Bedienungsanleitung unter Windows

Dingsda - Bedienungsanleitung unter Windows Dingsda - Bedienungsanleitung unter Windows Benötigte Software Um die Dateien von Dingsda zu öffnen und zu bearbeiten, benötigen Sie ein Textverarbeitungsprogramm, das doc- oder rtf-dateien lesen kann

Mehr

Kurzeinführung Moodle

Kurzeinführung Moodle Kurzeinführung Moodle 1. Einstieg, Kursinhalte, Datei-Download Nachdem Sie sich erfolgreich registriert und eingeloggt haben, gelangen Sie zu Ihrer Hauptseite. Aktivieren Sie Meine Startsteite um Ihren/Ihre

Mehr

Informatik I Tutorial

Informatik I Tutorial ETH Zürich, D-INFK/D-BAUG Herbstsemester 2015 Dr. Martin Hirt Daniel Jost Informatik I Tutorial Dieses Tutorial hat zum Ziel, die notwendigen Tools auf dem eigenen Computer zu installieren, so dass ihr

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Eigenen Farbverlauf erstellen

Eigenen Farbverlauf erstellen Diese Serie ist an totale Neulinge gerichtet. Neu bei PhotoLine, evtl. sogar komplett neu, was Bildbearbeitung betrifft. So versuche ich, hier alles einfach zu halten. Ich habe sogar PhotoLine ein zweites

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

:LQGRZV([SORUHU &KULVWLQH%HHU

:LQGRZV([SORUHU &KULVWLQH%HHU Der Windows Explorer 1. Starten des Windows Explorers Die Aufgabe des Explorers ist die Verwaltung und Organisation von Dateien und Ordnern. Mit seiner Hilfe kann man u.a. Ordner erstellen oder Daten von

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Übersichtlichkeit im Dokumentenmanagement

Übersichtlichkeit im Dokumentenmanagement Übersichtlichkeit im Dokumentenmanagement Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 www.workshop-software.de Verfasser: SK info@workshop-software.de Datum: 02/2012

Mehr

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen

Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen Handbuch ECDL 2003 Basic Modul 6: Präsentation Diagramm auf einer Folie erstellen Dateiname: ecdl6_05_01_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 6 Präsentation - Diagramm

Mehr

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen. Medizintechnik MATHCAD Kapitel. Einfache Rechnungen mit MATHCAD ohne Variablendefinition In diesem kleinen Kapitel wollen wir die ersten Schritte mit MATHCAD tun und folgende Aufgaben lösen: 8 a: 5 =?

Mehr

Bilder verkleinert per E-Mail versenden mit Windows XP

Bilder verkleinert per E-Mail versenden mit Windows XP Es empfiehlt sich, Bilder, die per E-Mail gesendet werden sollen, vorher durch Verkleinern zu optimieren, da sehr große Dateien von manchen E-Mail-Systemen nicht übertragen werden. Viele E- Mail-Server

Mehr

Übung 1. Explorer. Paint. Paint. Explorer

Übung 1. Explorer. Paint. Paint. Explorer Seite 1 Übung 1 1. Öffnen Sie das Programm PAINT 2. Maximieren Sie das Fenster 3. Verkleinern Sie das Fenster (Nicht Minimieren!!) 4. Öffnen Sie ZUSÄTZLICH zu PAINT den Windows Explorer 5. Verkleinern

Mehr

Navigieren auf dem Desktop

Navigieren auf dem Desktop Navigieren auf dem Desktop Sie kennen Windows 7 noch nicht? Obwohl Windows 7 viel mit den Versionen von Windows gemein hat, die Ihnen ggf. bereits vertraut sind, werden Sie möglicherweise an der einen

Mehr

Tipps und Tricks zu Word. Flickflauder.ch Webdesign/Webprogramming. www.flickflauder.ch Mail: info@flickflauder.ch

Tipps und Tricks zu Word. Flickflauder.ch Webdesign/Webprogramming. www.flickflauder.ch Mail: info@flickflauder.ch Tipps und Tricks zu Word Flickflauder.ch Webdesign/Webprogramming www.flickflauder.ch Mail: info@flickflauder.ch Textpassagen markieren 1. Markieren mit Mausklicks: Mit Maus an den Anfang klicken, dann

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen

Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Handbuch ECDL 2003 Basic Modul 5: Datenbank Access starten und neue Datenbank anlegen Dateiname: ecdl5_01_02_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Access

Mehr

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager

Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Anleitung zur Pflege der Homepage über den Raiffeisen-Homepage-Manager Homepage-Manager Navigation Home Der Homepage-Manager bietet die Möglichkeit im Startmenü unter dem Punkt Home einfach und schnell

Mehr

Neue Schriftarten installieren

Neue Schriftarten installieren .DIE Neue Schriftarten installieren Die Informationen zu jeder Schriftart (Font) sind in jeweils einer Datei untergebracht, der sog. Font-Datei mit der Endung.ttf ttf steht für True Type Font und bedeutet,

Mehr

Gebrauchsanweisung Template Lernumgebung Einführung Übersicht:

Gebrauchsanweisung Template Lernumgebung Einführung Übersicht: Einführung Willkommen. Auf den nächsten Seiten erfahren Sie, wie Sie das Template Autodidaktische Lernumgebung benutzen, um Ihre eigene Lernumgebung zu erstellen. Sie werden Ihre Lernumgebung in Dreamweaver

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure Erste Schritte... 1 Artikel erstellen... 2 Artikelinhalt bearbeiten... 3 Artikel bearbeiten... 3 Grunddaten ändern... 5 Weitere Artikeleigenschaften... 5 Der WYSIWYG-Editor... 6

Mehr

12. Dokumente Speichern und Drucken

12. Dokumente Speichern und Drucken 12. Dokumente Speichern und Drucken 12.1 Überblick Wie oft sollte man sein Dokument speichern? Nachdem Sie ein Word Dokument erstellt oder bearbeitet haben, sollten Sie es immer speichern. Sie sollten

Mehr

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server

Whitepaper. Produkt: combit address manager / combit Relationship Manager. Datenabgleich zwischen Notebook und Desktop-PC / Server combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit address manager / combit Relationship Manager Datenabgleich zwischen Notebook und Desktop-PC / Server Datenabgleich zwischen Notebook

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Anleitungen zum Einfügen eines Partnerlinks in Ihre Website

Anleitungen zum Einfügen eines Partnerlinks in Ihre Website www.satnam.de Anleitungen zum Einfügen eines Partnerlinks in Ihre Website A. Mittels eines Content-Management-Systems (CMS) oder Weblogs Seiten 2-6 B. Mittels eines Homepagebaukastens, z.b. von 1&1 Seiten

Mehr

Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern

Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern Dateien mit Hilfe des Dateimanagers vom USB-Stick kopieren und auf der Festplatte speichern Allgemein USB-Stick Dateimanager Explorer (Windows XP) - Dateien auf dem USB-STick finden Nachdem der Stick über

Mehr

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung.

Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Installation. Arbeiten mit der MATLAB-Entwicklungsumgebung. MATLAB als Taschenrechner mit Matrix- und Vektorrechnung. Die heutige Sitzung dient dem ersten Kennenlernen von MATLAB. Wir wollen MATLAB zuerst

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

Anleitung Homepage TAfIE

Anleitung Homepage TAfIE Anleitung Homepage TAfIE Wichtig: Die HP kann nur mit Mozilla Firefox korrekt bearbeitet werden. Wer den Browser noch nicht am Computer hat, muss ihn herunterladen und installieren. Freigabe von Veröffentlichungen:

Mehr

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG it4sport GmbH HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG Stand 10.07.2014 Version 2.0 1. INHALTSVERZEICHNIS 2. Abbildungsverzeichnis... 3 3. Dokumentenumfang... 4 4. Dokumente anzeigen... 5 4.1 Dokumente

Mehr

K. Hartmann-Consulting. Schulungsunterlage Outlook 2013 Kompakt Teil 1

K. Hartmann-Consulting. Schulungsunterlage Outlook 2013 Kompakt Teil 1 K. Hartmann-Consulting Schulungsunterlage Outlook 03 Kompakt Teil Inhaltsverzeichnis Outlook... 4. Das Menüband... 4. Die Oberfläche im Überblick... 4.. Ordner hinzufügen... 5.. Ordner zu den Favoriten

Mehr

Erstellen einer GoTalk-Auflage

Erstellen einer GoTalk-Auflage Erstellen einer GoTalk-Auflage 1. Bei dem Startbild Vorlage öffnen wählen 2. In dem folgenden Fenster Geräte Schablonen doppelt anklicken. - und schon öffnet sich der gesamte Katalog der verfügbaren Talker-Auflagen...eigentlich

Mehr

Diese Anleitung zeigt dir, wie du eine Einladung mit Microsoft Word gestalten kannst.

Diese Anleitung zeigt dir, wie du eine Einladung mit Microsoft Word gestalten kannst. Diese Anleitung zeigt dir, wie du eine Einladung mit Microsoft Word gestalten kannst. Bevor es losgeht Wenn du mal etwas falsch machst ist das in Word eigentlich kein Problem! Den Rückgängig-Pfeil (siehe

Mehr

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Visio 2013. Grundlagen. Linda York. 1. Ausgabe, Oktober 2013 Visio 2013 Linda York 1. Ausgabe, Oktober 2013 Grundlagen V2013 2 Visio 2013 - Grundlagen 2 Einfache Zeichnungen erstellen In diesem Kapitel erfahren Sie wie Sie Shapes einfügen, kopieren und löschen was

Mehr