Eine kleine Anleitung zum Programmieren mit MATLAB

Ähnliche Dokumente
Strings. Daten aus Dateien einlesen und in Dateien speichern.

WiMa-Praktikum 1. Woche 8

Funktionen in Matlab. Lehrstuhl für Angewandte Mathematik Sommersemester und 29. Mai 2008

Fachhochschule Südwestfalen Wir geben Impulse. Kontrollstrukturen und Schleifen in Octave

R-Fehlermeldungsleitfaden

Kleine Einführung in den Matlab-GUI-Editor

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

Variablen in MATLAB. Unterschiede zur Mathematik: Symbolisches und numerisches Rechnen. Skriptdateien. for-schleifen.

Informatik I - Übung 2 Programmieren in Eclipse

Vorsemesterkurs Informatik Sommersemester Aufgabenblatt Nr. 5A. Lösung zu Aufgabe 1 (Fehler in Haskell-Quelltext: Parsefehler)

Übungsblatt 1. Java Vorkurs (WS 2017)

Programmieren in MATLAB Mehr als nur ein Taschenrechner

Wima 1 - Praktikum (Woche 6)

Zweiter Teil des Tutorials. Workspace M-files Matrizen Flow Control Weitere Datenstrukturen Gemeinsames Beispiel erarbeiten

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

Funktionen in JavaScript

Greenfoot: Verzweigungen

Greenfoot: Verzweigungen Nicolas Ruh und Dieter Koch

01 Einführung in PHP. Einführung in PHP 1/13 PHP in Aktion

FuxMedia GmbH & Co. KG Bautzner Straße Dresden

Funktionen in JavaScript

Übungspaket 17 Der gcc Compiler

m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.

2017/01/23 15:50 1/5 Bedienung

Ingenieurinformatik II Numerik für Ingenieure Teil 2

Tag 9: Datenstrukturen

3 Kurzeinführung in Matlab

PPS "Bits on Air" 1. Teil, Matlab-Tutorial Vorbereitungsaufgaben (Lösungsvorschläge)

Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Octave-E-Learnig für Nichtinformatiker

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Programmieren mit statistischer Software

Programmieren. Aufgabe 1 (Eine erste Datenstruktur)

STACK Mathematische Aufgaben mit ILIAS testen (Ein Frage-Typ im ILIAS-Objekt Test)

Quadrieren Sie die Zahlen 3, pi, 1 und i mit Hilfe des Operators ^ und ziehen Sie aus den Ergebnissen jeweils die Wurzel.

Funktionen in PHP 1/7

Programmsteuerung mit PHP - if/else, elseif,switch

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Arbeitsblatt 6: Programmierung geometrischer Figuren

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Grundlagen der Programmiersprache C++

Informatik I. Übung 2 : Programmieren in Eclipse. 5. März Daniel Hentzen

Einführung in MATLAB + MATLAB Simulink. Dipl.-Inf. Markus Appel

Der CodeBug. A) Erste Schritte. 1) Einleitung

Programmieren in C(++) und Mathematica - Übungen 2 SS 2018

Übersicht Shell-Scripten

Praktikum Beobachtungsnetze. Matlab in Versuch Hydrologie Hilfestellungen

Aufgabenblatt 1: - Präsenzübung für die Übungen Do Mi Ausgabe Mi

*** Viel Erfolg! ***

Bash-Skripting Linux-Kurs der Unix-AG

Teil I Debuggen mit gdb

Schleifen: Immer wieder dasselbe tun

Probeklausur Informatik 2 Sommersemester 2010

Debugging mit ddd (Data Display Debugger)

1)Login Funktion ohne Datenbank

Python für Linguisten

41.8 LUA-Grundlagen - Tabelle, if und Albernheit

WESTFÄLISCHE WILHELMS-UNIVERSITÄT MÜNSTER. Advanced Matlab. living knowledge WWU Münster. Mario Ohlberger, Martin Drohmann, Stefan Girke 10/05/2012

KISSsys Anleitung: Lagerkräfte aus KISSsys Modell exportieren

Grundlagen der Programmentwicklung

06 While-Schleifen. While-Schleifen 1/7 Wiederholung: Schleifen

Eine JAVA Einführung ... Quellcode:... COMA Übung 3. T.Bosse. A.Griewank. Vorschau JAVA Programme Sprachen Kate

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmieren mit statistischer Software

Algorithmen und Programmierung

<? $ZeilenMax = 9; $SpaltenMax = 9; echo "<pre>";

Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten

pue02 October 28, 2016

Visual Basic Express Fehlerermittlung

Algorithmen und ihre Programmierung

Einführung in MATLAB Blockkurs DLR:

Institut für Informatik und Angewandte Kognitionswissenschaften

Grundlagen von MATLAB

Informationsverarbeitung im Bauwesen

Korrekturhinweise zum Skript Vertiefung der Wirtschaftsmathematik und Statistik

Programmieren mit dem TI-92

Wertebereich und Genauigkeit der Zahlendarstellung

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

MATLAB Ferienkurs WS 2010/2011

05 For-Schleifen. For-Schleifen 1/7 Was ist eine Schleife?

Grundlagen der Programmierung

Einführung in die Programmierung (MA8003)

Erste Schritte. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

This image cannot currently be displayed. Java à Matlab. bereitgestellt von Dr. Lukas Faessler 12/4/17

SYMPTOME U. a.: Wenn man nach der Datensicherung wieder mit dem ColorManager arbeiten will, kommt die Meldung. auf Deutsch oder.

Vorkurs Informatik WiSe 16/17

Scala. Funktionale (Zustandslose) Objekte

Informatik I - Einstiegskurs

Kapitel Was ist ein Header? Was ist ein Body? Header: public Account(String newowner, int newpin)

Programmiersprachen Einführung in C

Lineare Gleichungssystem

Programmierstarthilfe SS 2010 Fakultät für Ingenieurwissenschaften und Informatik 2. Blatt Für die Woche vom 3.5. bis zum 7.5.

Bash-Skripting Linux-Kurs der Unix-AG

Einführung in die Programmierung 1

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python

2. Einführung in das Ingenieurtool MATLAB

Funktionen nur wenn dann

Deduktive Systeme in Isabelle

Transkript:

Eine kleine Anleitung zum Programmieren mit MATLAB Kathrin Smetana 4. Oktober 2011 Dies ist eine (stetig erweiterbare) Liste der Dinge, die man beachten sollte, wenn man mit Matlab programmieren, sprich M-Files schreiben, möchte. 1 Organisatorisches 1.1 Name des M-Files Der Name des M-Files darf keine Sonderzeichen, sprich Zeichen, die entweder bereits Matlab -Operatoren sind ( +, (, ), - ), oder Umlaute (Matlab basiert auf der englischen Sprache) enthalten. Möchte man mehrere Wörter verwenden und diese trennen, so kann man dies mit den Zeichen _ oder. tun. Ein Beispiel: Dies_wird_ein.korrekt.bezeichnetes.MFile. Schreibt man zum Beispiel ein M-File namens flächeninhalt.m und führt dieses aus, so bringt Matlab die folgende Fehlermeldung:??? flächeninhalt Error: The input character is not valid in MATLAB statements or expressions. Korrigieren wir das ä, und benennen unser M-File in flaecheninhalt-rechteck.m um, so ergibt das diese Fehlermeldung:??? Undefined function or variable flaecheninhalt. Während die erste Fehlermeldung (The input character...) noch relativ einfach zu interpretieren ist, hilft die zweite Fehlermeldung (Undefined function...) insbesondere Programmieranfängern meist nicht unbedingt beim Fehler finden. Daher ist es sehr wichtig von vornherein zu versuchen Fehler zu vermeiden. Das heißt in diesem Fall, dass man ganz bewusst prüft, ob man das M-File richtig bezeichnet hat. 1

1.2 Ausführen des M-Files Ein M-File kann ausgeführt werden, indem man im Editor oben auf das weiße Blatt mit dem grünen Pfeil klickt, oder indem man im Command Window den Namen des Programms ohne die Endung.m eingibt und Enter drückt. 1.3 Funktionsaufruf im Hauptprogramm Will man im Hauptprogramm selbstgeschriebene Funktionen aufrufen (Kapitel 4.2 im Skript), so sollte man auf folgende Dinge achten: (a) Die Funktion (zum Beispiel Diagonale_Rechteck.m in Kapitel 4.2 im Skript, aufgerufen vom Hauptprogramm Rechteck.m) muss im selben Ordner gespeichert werden, da Matlab sonst die Funktion nicht findet. Liegt zum Beispiel die Funktion Diagonale_Rechteck.m nicht im selben Ordner wie das Hauptprogramm Rechteck.m, so gibt Matlab beim Ausführen des Hauptprogramms Rechteck.m folgenden Fehler aus:??? Undefined function or method Diagonale_Rechteck for input arguments of type double. Error in ==> Rechteck at 16 d = Diagonale_Rechteck(a,b); Das heißt, dass Matlab uns mitteilt, dass die Funktion Diagonale_ Rechteck.m nicht definiert ist. (b) Der Name der Funktion, welcher in der Definition gewählt wird (function d = Diagonale_Rechteck (a, b) ), der Name des M-Files der Funktion }{{}}{{} Funktionsname Argumente Diagonale_Rechteck.m und der Funktionsaufruf im Hauptprogramm d = Diagonale_Rechteck(a,b) müssen alle gleich sein (kurz: überall steht Diagonale_Rechteck). Das sollte bei jeder Funktion nachgeprüft werden. Ein kleiner Tipp: hat man seine Funktion geschrieben und will diese speichern, schlägt Matlab automatisch den richtigen Namen vor. (c) Sowohl bei der Definition der Funktion, als auch beim Funktionsaufruf bitte die Argumente (hier a und b) nicht vergessen. Bei der Benennung des M-Files dagegen auf keinen Fall die Argumente dazu schreiben, sondern lediglich den Funktionsnamen verwenden. (d) Wenn man mit solchen Funktionen arbeitet, kann es hilfreich sein, wenn man sich an mathematischen Funktionen orientiert. Ein Beispiel: function y=f(x). Der Umgang geht dann völlig analog. Man würde ja nun beispielsweise auch nicht y = f schreiben oder eine Funktion mit sin(x) bezeichnen. (e) Es wird immer das Hauptprogramm und nie die Funktion ausgeführt. 2

2 Syntaxfehler vermeiden/beheben 1. Rechts oben neben der Scrollbar findet man im Matlab ein kleines buntes Quadrat. Dieses ist entweder grün (= alles in bester Ordnung) orange (= Warning. Das Programm hat keine Fehler, lässt sich aber eventuell noch verbessern. Matlab gibt beispielsweise eine Warning aus, wenn ein Semikolon fehlt und damit die Matrix, Funktion,.. im Command Window ausgegeben wird, oder wenn in einer Schleife eine Matrix definiert wird, die vorher noch nicht initialisiert wurde. rot (= Syntaxfehler) Die Stelle welche das Warning oder den Syntaxfehler hervorruft markiert MAT- Lab einerseits mit einem Strich neben der Scrollbar (wenn man neben den Strich scrolled, ist die Warning/der Fehler in dem aktuellen Fenster zu sehen) und andererseits mit einer Welle unter dem Zeichen, welches die Warning/den Fehler hervorruft. Um Warnings oder Syntaxfehler zu beheben geht man mit der Maus auf die entsprechende Stelle im Code (also auf die Welle). Matlab gibt dann an wie der Fehler zu beheben bzw. der Code zu verbessern ist. Wenn man in dieser Anzeige auf FIX klickt, behebt Matlab den Fehler/die Warning selbstständig. 2. Schreibt man geschachtelte Schleifen oder Entscheidungen, so empfiehlt es sich die Anweisungen bzw. die neue Schleife/Entscheidung der Übersichtlichkeit wegen einzurücken. 3 Das Programm hat keine Syntaxfehler, funktioniert aber nicht, sondern liefert Fehler im Command Window Zunächst sollte geprüft werden, ob alle Punkte unter Kapitel 1: Organisatorisches beachtet wurden. Die Fehlermeldung, dass eine Variable unbekannt ist, wird zum Beispiel unter anderem dadurch verursacht, dass nicht das Hauptprogramm sondern die Funktion ausgeführt wurde. Ist dies geschehen und es gibt trotzdem noch Fehler, so muss man mit Hilfe der Fehlermeldung die Matlab im Command Window ausgibt den Fehler finden. Geben wir zum Beispiel im Programm Ableitung (S. 43 im Skript) nach dem Befehl f = @(x) sin(x); den Befehl plot(f) ein und führen das Programm aus, so gibt MATLab im Command Window den folgenden Fehler aus:??? Error using ==> plot\\ Conversion to double from function\_handle is not possible.\\ Error in ==> Ableitung at 13\\ plot(f); 3

Die unteren beiden Zeilen geben an, wo wir einen Fehler gemacht haben. Die oberen beiden Zeilen zeigen welcher Fehler gemacht wurde. In diesem Fall haben wir den plot-befehl falsch verwendet. Um den Fehler zu korrigieren verwenden wir die Hilfe und stellen fest, dass der plot-befehl nur Vektoren akzeptiert. Daher die Meldung (frei übersetzt), dass Matlab das Funktion Handle nicht in einen Vektor umwandeln konnte. Daher muss nun entweder die Funktion vektorisiert werden (Intervall splitten und die Funktion in den Gitterpunkten auswerten) oder man verwendet den Befehl ezplot. Kurz gesagt, sollte man bei der Fehlersuche also wie folgt vorgehen: 1. Wo wurde der Fehler gemacht (hier: Zeile 13, plot-befehl) 2. Herausfinden was falsch gemacht wurde (hier: plot-befehl falsch verwendet) 3. Genaue Fehlerquelle mit der Matlab -Hilfe finden (hier: es wurde kein Vektor sondern eine Funktion verwendet) 4. Fehler korrigieren (hier: mit Hilfe der von Literatur oder Matlab -Hilfe den richtigen Befehl finden) 4 Wie vermeide ich Fehler? Generell sollte jede Programmzeile die man schreibt nochmals durchgelesen werden bevor man weiterschreibt. Ferner sollte das Programm so bald es ausführbar ist getestet werden, ob es das richtige tut (=keine Fehler produziert und richtige Ergebnisse liefert). Ist dies der Fall fährt man fort. Nach jedem noch so kleinen zusätzlichen Programmcode testet man wieder. Beim Programm Ableitung.m sollte man zunächst testen, ob die anonyme Funktion richtig definiert wurde. Dazu führt man das Programm aus. Funktioniert das alles, so verwendet man den ezplot-befehl um zu schauen, ob auch die richtige Funktion definiert wurde (z.b. x^2 + 5 statt x^2 + 0.5). Die Verwendung des ezplot-befehls hat außerdem den Vorteil, dass man so weiter testen kann, ob die Funktion korrekt definiert wurde. Es kann nämlich passieren, dass erst die Verwendung von Funktionen, Matrizen,.. Fehler produziert, welche bei der reinen Definition derselbigen noch nicht zu Tage getreten sind. Ein Beispiel: Wir schreiben ein kleines M-File mit den beiden Zeilen f = @(x) x^2; g = @(x) f + 3; Führt man dieses Programm aus, so gibt Matlab keinen Fehler aus. Plotten wir nun g mit ezplot, schreiben also f = @(x) x^2; g = @(x) f + 3; ezplot(g); so gibt Matlab eine Fehlermeldung aus. Dies liegt nicht an der falschen Verwendung von ezplot (was man leicht nachprüfen kann, indem man f plottet), sondern 4

daran, dass die anonyme Funktion g nicht korrekt definiert wurde, wie ein Teil der Fehlermeldung zeigt:??? Undefined function or method plus for input arguments of type function_handle. Error in ==> @(x)f+3 Wir fahren nun mit dem Test unseres Programms Ableitung fort. Als nächstes lässt man sich den Vektor x ausgeben, um die Unterteilung zu überprüfen. Besonders bei der Verwendung von Formeln (wie in numableitung der Differenzenquotient) sollte nochmals ganz genau geprüft werden, ob alles richtig geschrieben wurde. Zum Schluss lässt man sich zur Kontrolle die Ableitung plotten. Besonders Programmieranfänger sollten beim Programmieren Schritt für Schritt vorgehen und nicht den Code auf einmal runterschreiben und dann testen. 5 Das Programm produziert zwar keine Fehler aber die Ergebnisse machen keinen Sinn Um den Fehler zu finden lässt man sich, wie in Kapitel 4 beschrieben, Zwischenergebnisse (Matrizen, Werte von Variablen,..) ausgeben und plottet die verwendeten Funktionen. So kann man feststellen bis zu welcher Stelle das Programm richtig rechnet und ab wann Fehler auftreten. Auf diese Weise lässt sich der Fehler lokalisieren. Hat man dies getan, so versucht man mit der Matlab -Hilfe den genauen Fehler zu finden und zu beheben. 5