Anwendungssoftware III (MATLAB)



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

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

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Berechnungen in Access Teil I

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

Artikel Schnittstelle über CSV

Informatik I Tutorial

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

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Mediator 9 - Lernprogramm

Datenbanken Kapitel 2

Visual Basic Express Debugging

Informatik 1 Tutorial

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

Excel Pivot-Tabellen 2010 effektiv

Installation und Inbetriebnahme von Microsoft Visual C Express

Software Engineering Interaktionsdiagramme

Second Steps in eport 2.0 So ordern Sie Credits und Berichte

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

1 Vom Problem zum Programm

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Anleitung, WebRecherche

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

! " # $ " % & Nicki Wruck worldwidewruck

Erstellen einer digitalen Signatur für Adobe-Formulare

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Speichern. Speichern unter

Task: Nmap Skripte ausführen

Kara-Programmierung AUFGABENSTELLUNG LERNPARCOURS. Abb. 1: Programmfenster. Welt neu erstellen; öffnen; erneut öffnen; speichern; speichern unter

Excel Funktionen durch eigene Funktionen erweitern.

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Text-Zahlen-Formatieren

Wir basteln einen Jahreskalender mit MS Excel.

GEONET Anleitung für Web-Autoren

Anwendungsbeispiele Buchhaltung

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

Objektorientierte Programmierung

Datensicherung. Beschreibung der Datensicherung

Starten der Software unter Windows 7

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Installationsleitfaden kabelsafe backup home unter MS Windows

WordPress. Dokumentation

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

SEPA-Umstellungshilfe für die VR-NetWorld Software

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Künstliches binäres Neuron

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Erste-Schritte VP 5.1

Einführung in die Programmierung

RÖK Typo3 Dokumentation

Qt-Projekte mit Visual Studio 2005

Comic Life 2.x. Fortbildung zum Mediencurriculum

Umstellung VPSMail von Java-Web-Start auf Installer

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

DOKUMENTATION VOGELZUCHT 2015 PLUS

Stapelverarbeitung Teil 1

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Werkschau Web-Präsentationen

Urlaubsregel in David

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Java-Tutorium WS 09/10

Netzlaufwerke der Domäne von zu Hause/extern verbinden

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Einrichten von Pegasus Mail zur Verwendung von MS Exchange und Übertragen der alten Maildaten auf den neuen Server

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

MSDE 2000 mit Service Pack 3a

Einführung in die Java- Programmierung

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

teischl.com Software Design & Services e.u. office@teischl.com

Eine Anwendung mit InstantRails 1.7

Einführung in TexMaker

Inkrementelles Backup

32.4 Anpassen von Menüs und Symbolleisten 795i

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

Step by Step Webserver unter Windows Server von Christian Bartl

Folgeanleitung für Fachlehrer

Der große VideoClip- Wettbewerb von Media Markt.

Erstellen von x-y-diagrammen in OpenOffice.calc

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Einstieg in Exact Online Buchungen erfassen. Stand 05/2014

lññáåé=iáåé===pìééçêíáåñçêã~íáçå=

VB.net Programmierung und Beispielprogramm für GSV

Arbeiten mit UMLed und Delphi

Informationen zur Verwendung von Visual Studio und cmake

Professionelle Seminare im Bereich MS-Office

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

Erklärung zum Internet-Bestellschein

Novell Client. Anleitung. zur Verfügung gestellt durch: ZID Dezentrale Systeme. Februar ZID Dezentrale Systeme

ODBC-Treiber Programmübersicht

M-net -Adressen einrichten - Apple iphone

Die Dateiablage Der Weg zur Dateiablage

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Transkript:

Anwendungssoftware III (MATLAB) VII - Spezielle Themen Michael Liedlgruber Fachbereich Computerwissenschaften Universität Salzburg Sommersemester 2014 M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 1 / 27

Im Folgenden behandeln wir folgende spezielle Themen: entwickeln (Vektorisiert, Java & MEX) Fehler leichter finden mit dem Debugger Langsame Stellen in einem Programm mit dem Profiler identifizieren Daten strukturieren mittels structure arrays Der große Bruder von Matrizen: Cell-arrays Parameter in Funktionen elegant mittels Input Parser abbilden Eigene Oberflächen mittels GUIDE entwickeln Hinweis: Es wird jeweils nur ein /Ausblick gegeben (um zu wissen, was neben dem bereits Erlernten noch so möglich ist in MATLAB). Bei Interesse für ein spezielles Thema, wird hier auf die Hilfe/Tutorials und Ressourcen im Internet verwiesen. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 2 / 27

Vektorisierung Java-Einbindung MEX-Dateien Entwickelt man in MATLAB komplexe Programme, gibt es üblicherweise mehrere Möglichkeiten, um den Zeitverbrauch für Berechnungen zu reduzieren. Vektorisiertes Programmieren Einbindung von Java-Code MEX-Dateien M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 3 / 27

Vektorisiertes Programmieren Vektorisierung Java-Einbindung Wie schon mehrmals erwähnt, können in MATLAB Programme sehr oft schneller ausgeführt werden, wenn man statt Schleifen vektorisierte Programmierung verwendet. Zum Beispiel: MEX-Dateien Vektor A Länge n Vektor B Länge N*n Es soll für jeden Teilabschnitt vonb die Summe der quadratischen Fehler zua berechnet werden. Eine Möglichkeit: n = size(a, 2); N = size(b, 2) / n; errors = zeros(1, N); for i=1:n errors(i) = sum((a-b((i-1)*n+1:i*n)).^2); end Problem: kann für großen sehr langsam werden. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 4 / 27

Vektorisiertes Programmieren Vektorisierung Java-Einbindung MEX-Dateien Mit Hilfe der bereits bekannten Funktionen repmat und reshape und vektorisierter Programmierung kann die Berechnung deutlich schneller durchgeführt werden. MatA = repmat(a, N, 1); MatB = reshape(b, n, N) ; errors = sum((mata-matb).^2, 2); Führen wir die Berechnung 100 mal durch mitn = 100 undn = 1000, läuft die vektorisierte Variante deutlich schneller (0.12 Sekunden vs. 0.65 Sekunden). Die vektorisierte Version ist mehr als fünf mal so schnell. Potenzielle Nachteile: Oftmals leidet die Lesbarkeit des Codes. In obigem Beispiel können die MatrizenMatA undmatb für große Werte für N undnsehr groß werden (erhöhter Speicherverbrauch). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 5 / 27

Java-Code einbinden Vektorisierung Java-Einbindung MEX-Dateien Eine weitere Möglichkeit, um Code schneller durchführen zu können, besteht darin, Java-Code in MATLAB aufzurufen. Die Vorgehensweise ist einfach: Eine Klasse in Java entwickeln, kompilieren und testen Den Pfad der Klasse in MATLAB hinzufügen (siehedoc javaaddpath) Eine Beispielklasse, welche das gleiche Problem wie vorhin löst: public class QuadError { public double[] computeerrors(double[] A, double[] B) { int n = A.length; int N = B.length/n; double[] errors = new double[n]; double tmp = 0.0; } } for (int i=0; i<n; i++) { for (int j=0; j<n; j++) { tmp = (A[j]-B[i*n+j]); errors[i] += tmp * tmp; } } return errors; M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 6 / 27

Java-Code einbinden Vektorisierung Java-Einbindung MEX-Dateien Nachdem die Klasse kompiliert wurde und der Pfad angepasst wurde, kann die Klasse wie folgt in MATLAB verwendet werden: >> q = QuadError(); % Instanz anlegen >> errors = q.computeerrors(a, B); % Methodenaufruf Unter gleichen Bedingungen wie vorher ist diese Variante noch etwas schneller (0.10 Sekunden vs. 0.12 und 0.65 Sekunden). Wichtig: Es muss darauf geachtet werden, dass die kompilierte Klasse von der in MATLAB benutzten Java-Version geladen werden kann. Die von MATLAB benutzte Java-Version kann mit dem Kommando version -java ermittelt werden. Bevor die Klasse neu kompiliert wird, sollteclear java aufgerufen werden (Achtung: Löscht alles im Workspace - auch globale Variablen). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 7 / 27

MEX-Dateien Vektorisierung Java-Einbindung MEX-Dateien Manchmal kann es sein, dass auch Java für eine gestellte Aufgabe zu langsam ist. Dann kann man sogenannte MEX-Dateien entwickeln. MEX-Dateien können in C, C++ oder Fortran geschrieben werden (wobei erstere beiden Programmiersprachen am häufigsten dafür benutzt werden). Vorteile: Sehr schnelle Programmteile möglich Nachteile: Bei Programmierfehlern in MEX-Dateien stürzt MATLAB gerne komplett ab. Eine MEX-Datei ist plattformabhängig. D.h., für Mac, Windows und Linux müssen verschiedene MEX-Dateien ausgeliefert werden (unter Umständen auch für 32-Bit/64-Bit und für verschiedene Compiler-Versionen). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 8 / 27

Zusammenfassung Vektorisierung Java-Einbindung MEX-Dateien Zusammenfassend ist also folgende Vorgehensweise empfehlenswert: 1. MATLAB-Code soweit wie möglich optimieren (z.b. Vektorisierung) 2. Wenn notwendig, Teile in ein Java-Programm auslagern. 3. Nur wenn sonst nichts mehr hilft, Programmteile in MEX-Dateien auslagern. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 9 / 27

Breakpoints Breakpoints Fehlersuche Gerade bei komplexen Programmen kann es manchmal hilfreich sein, die Programmausführung Schritt für Schritt abzuarbeiten um Fehler zu entdecken. Dafür notwendig: Breakpoints Mit Hilfe von Breakpoints kann festgelegt werden, an welcher Stelle in einem Programm die Programmausführung pausiert werden soll (funktioniert aber nur im MATLAB-Editor). Es gibt mehrere Möglichkeiten, in MATLAB einen Breakpoint zu setzen: Wenn die Windows-Tastaturbelegung aktiviert ist: in der gewünschten Zeile F12 drücken. Zur gewünschten Zeile navigieren und über das Menü Breakpoints Set/Clear einen Breakpoint setzen. In der entsprechenden Zeile neben die Zeilennummer klicken. Führt man die gleiche Aktion noch einmal aus, wird der Breakpoint wieder gelöscht. Ein aktiver Breakpoint wir als roter Punkt neben der Zeilennummer angezeigt (ein inaktiver Breakpoint wird grau dargestellt). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 10 / 27

Fehlersuche Breakpoints Fehlersuche Startet man nun das Programm, wird die Ausführung am ersten aktiven Breakpoint angehalten. (MATLAB befindet sich nun im Debugging-Modus). Zum Beispiel (Breakpoint in der Funktionmean): Man kann nun zum Beispiel: Variableninhalte im Workspace-Browser und im Command-Window ausgeben/verändern. Variableninhalte anzeigen, indem man mit der Maus im Editor über den Variablennamen fährt. Das Programm Schritt für Schritt weiter ausführen. Um den Debugging-Modus zu verlassen, drückt man einfachshift+f5 (bei Windows-Tastaturbelegung). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 11 / 27

Profiler Beispiel Um herauszufinden, welche Teile eines Programmes am meisten Zeit verbrauchen, kann man, wie bereits erwähnt, die Befehletic undtoc verwenden. Dies kann aber etwas umständlich werden. Gerade bei größeren Programmen empfiehlt es sich daher, den Profiler zu verwenden. Am einfachsten wird dieser durch Eingabe des Kommandos profile viewer im Command-Window gestartet. Es öffnet sich folgendes Fenster: Im Feld Run this code kann man nun z.b. einen Funktionsaufruf eintragen und dann durch einen Klick auf Start Profiling den Messvorgang starten. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 12 / 27

Profiler Beispiel: Beispiel Hinweis: beim Debuggen wird die Programmausführung üblicherweise merklich verlangsamt. Aber: das ist kein Problem. Wir wollen ja nur wissen, welche Teile in einem Programm im Vergleich zu anderen Teilen sehr langsam sind. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 13 / 27

Profiler Beispiel M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 14 / 27

Profiler Beispiel M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 15 / 27

anlegen anlegen Mehrere Einträge Sogenannte erlauben es, Daten in MATLAB strukturiert in Variablen abzulegen. Ein leeres wird mittels >> s = struct(); Wir können nun insfelder durch einfache Zuweisungen anlegen: >> s.x = 1; >> s.y = 2; Gibt man den Wert vonsaus, sieht das dann wie folgt aus: >> s s = x: 1 y: 2 Hinweis: über das Kommandostruct kann man auch schon Feldnamen im Vorhinein festlegen (siehedoc struct). M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 16 / 27

Mehrere Einträge in anlegen Mehrere Einträge mit mehreren Einträgen erhält man, indem man nach dem Variablennamen des einen Index angibt. Gibt man z.b. >> s(2).x = -21; >> s(2).y = 3; ein, enthältsnun zwei Elemente (funktioniert auch in mehreren Dimensionen). Ein Element in einem Structure Array kann natürlich auch Felder mit verschiedenen Datentypen enthalten: >> s = struct(); >> s.name = Max Müller ; >> s.alter = 34; >> s s = name: Max Müller alter: 34 M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 17 / 27

Was sind? Elemente adressieren sind sehr ähnlich zu Matrizen, bieten aber eine höhere Flexibilität. Im Gegensatz zu Matrizen, wo jede Zelle nur numerische Werte annehmen kann, können in einem Cell-Array beliebige Datentypen in den einzelnen Zellen enthalten sein. Wollen wir zum Beispiel ein Cell-Array der Größe2 4anlegen, kann das zum Beispiel wie folgt erreicht werden: >> c = cell(2, 4) c = [] [] [] [] [] [] [] [] Wir sehen: die einzelnen Zellen enthalten nach der Anlage jeweils eine leere Matrix. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 18 / 27

Elemente in adressieren Elemente adressieren Wichtiger Unterschied zu Matrizen: während bei Matrizen der zu adressierende Bereich immer in runden Klammern angegeben wird, geschieht dies bei entweder mit Hilfe von geschwungenen Klammern oder mit runden Klammern! Ansonsten geschieht das Adressieren weitgehend ähnlich. Zum Beispiel: >> c{1, 1} = test ; % String >> c{1, 2} = 3; % Double-Wert >> c{2, 3} = 2i % Komplexe Zahl c = test [3] [] [] [] [] [0.0000 + 2.0000i] [] M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 19 / 27

Elemente in adressieren Elemente adressieren Unterschied bei der Klammerung: >> c{2, 3} % Zugriff auf Wert in der Zelle ans = 0.0000 + 2.0000i >> c(2, 3) % Liefert die Zelle (1x1 Cell-Array) ans = [0.0000 + 2.0000i] >> c2 = c(2, :) % Liefert zweite Zeile von c c2 = [] [] [0.0000 + 2.0000i] [] Wir sehen also: bei der Verwendung von geschwungenen Klammern greifen wir auf die Werte in den Zellen zu. Werden aber runde Klammern verwendet, erhalten wir wieder ein Cell-Array als Rückgabewert. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 20 / 27

Input Parser Beispiel Eine sehr elegante Möglichkeit, Funktionsargumente zu verarbeiten, bietet der Input Parser. Typische Vorgehensweise: Funktion mit variablen Argumenten definieren Anlegen des Input Parsers Parameter festlegen (Pflichtparameter und/oder optionale Parameter) Parameter abarbeiten Parameter vom Input Parser abfragen Beim Festlegen der Parameter können wir den Namen festlegen. bei optionalen Parametern einen Standardwert angeben. eine Prüfung zur Gültigkeitsprüfung festlegen. Aber Achtung: bei Funktionen, welche sehr oft aufgerufen werden (z.b. innerhalb einer Schleife), empfiehlt es sich nicht, den Input Parser zu verwenden. Dies könnte das Programm unter Umständen dramatisch verlangsamen! M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 21 / 27

Input Parser Beispiel Beispiel function signal_errors(numsegments, segmentlength, varargin) p = inputparser(); p.addrequired( numsegments, @isnumeric); p.addrequired( segmentlength, @isnumeric); p.addparamvalue( iterations, 100, @(x) x>0); p.parse(numsegments, segmentlength, varargin{:}); NUM_ITERATIONS = p.results.iterations;... Wichtig für Pflichtparameter: sind auch in der Funktionsdeklaration notwendig werden mittelsaddrequired definiert unterstützen naturgemäß keinen Standardwert müssen beiparse(...) am Anfang angegeben werden werden nicht überresults.<parametername> abgefragt M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 22 / 27

Input Parser Beispiel Beispiel Wichtig für optionale Parameter: werden mittelsvarargin unterstützt benötigen einen Standardwert werden überresults.<parametername> abgefragt werden beim Funktionsaufruf als Paar von Namen (String) und Wert angegeben In beiden Fällen gilt: die Gültigkeitsprüfung kann mittels eines Function Handles realisiert werden. >> signal_errors( 22, 10); Error using signal_errors (line 8) Argument numsegments failed validation isnumeric. >> signal_errors(22, 10); % iterations wird auf 100 gesetzt >> signal_errors(22, 10, iterations, -4); Error using signal_errors (line 8) Argument iterations failed validation @(x)x>0. >> signal_errors(22, 10, iterations, 15); % 15 Iterationen M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 23 / 27

Grafische Oberflächen Beispiel In MATLAB können auch grafische Oberflächen (GUIs) realisiert werden. Dies kann vor allem dann hilfreich sein, wenn ein Programm aus sehr vielen Skripten oder Funktionen besteht und eine Verwendung über das Command-Window zu kompliziert wäre. Dazu startet man den GUI-Editor mittels >> guide Nachdem man ausgewählt hat, ob man eine neue Oberfläche erstellen oder eine bestehende Oberfläche öffnen will, erscheint der GUI-Editor: M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 24 / 27

Beispiel Oberfläche (Entwurf) Beispiel Es gibt verschiedenste GUI-Elemente (z.b. Buttons, Textfelder,...). GUI-Elemente können z.b. durch ein Programm manipuliert werden oder selbst den Aufruf von Funktionen auslösen. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 25 / 27

Beispiel Oberfläche (nach Start) Beispiel Hinweis: in MATLAB reagiert eine GUI nicht, wenn gerade etwas berechnet wird. M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 26 / 27

Wie bereits früher erwähnt, kann MATLAB durch zahlreiche sogenannte Toolboxen im Funktionsumfang erweitert werden. Im Folgenden wird lediglich ein Auszug existierender Toolboxen aufgelistet, welche direkt vom Hersteller von MATLAB kommen (komplette Liste unter http://www.mathworks.de ersichtlich). Name Parallel Computing Toolbox Symbolic Math Toolbox Statistics Toolbox Optimization Toolbox Control System Toolbox Signal Processing Toolbox Image Processing Toolbox Financial Toolbox Database Toolbox Kurze Beschreibung Parallelverarbeitung (mehrere CPUs, GPU) Symbolische Berechnungen in MATLAB durchführen Statistische Algorithmen und Machine Learning Optimierungsaufgaben lösen Steuerungs- und Regelungssysteme entwerfen Analoge und digitale Signalverarbeitung Standardalgorithmen für Bildverarbeitung und -analyse Modellierung und Analyse von Finanzdaten Zugriff auf relationale Datenbanken M. Liedlgruber Anwendungssoftware III (MATLAB) SS 2014 27 / 27