MATLAB André Bolles
Gliederung Was ist MATLAB? Wozu brauche ich MATLAB? Programmierung in MATLAB Integration von MATLAB in Java Demo
Was ist MATLAB MATLAB = MATrix LABoratory? Software zur numerischen Berechnung mathematischer Probleme Gegenstück: Mathematica, Maple für symbolische Algebra Alternativen: eigentlich keine wg. des Umfangs RLab, GNU Octave, R-Project Hersteller: The MathWorks Inc. aktuelle Version 2009a Sehr umfangreich Viele Toolboxen für verschiedenste Anwendungsbereiche Signalverarbeitung, Bildverarbeitung, Aeronautics, Financial, … Proprietäre Programmiersprache Sehr, sehr gute Dokumentation in der MATLAB-Hilfe
Was ist MATLAB? Lizenzen an der Uni-Oldenburg Entwicklerlizenz MATLAB Simulink Stateflow Data Acquisition Toolbox Statistics Toolbox …. Schulungslizenz Nicht ganz so umfangreich Zugriff auf Lizenzen über Lizenzserver flexlm.uni-oldenburg.de
Wozu brauche ich MATLAB? Berechnung und Simulation komplexer mathematischer Sachverhalte „Was MATLAB nicht kann, das geht auch nicht.“ Beispielanwendungen: Albatroz Engineering: Automasiertes Echtzeit-System zur Inspektion von Überlandleitungen Applied Biosystems: DNA Sequencing Algorithm Astrium EADS: Two-Way Laser Optical Link between Aircraft and Satellite Automotive Systems Laboratory: Test of Crash Sensors Medical University of South Carolina: Gene/Protein Analysis … Quelle: www.mathworks.com/products/matlab/userstories
Programmierung in MATLAB MATLAB ist mehr als ein (sehr guter) Taschenrechner Vollständige Programme lassen sich in MATLAB erstellen Eigenständige Applikationen Integration in Webanwendungen Integration in eigene Applikationen
Programmierung in MATLAB MATLAB ist eine Sprache Alles in MATLAB ist eine Matrix (oder ein multidim. Array) u = 0.5 (1x1 Matrix) v = [true false false] (1x3 Matrix) w = ['Hallo' 'Welt' '!'] (1x10 Matrix) x = [3; -2; 1] (3x1 Matrix) y = [0.1 0.05; 0.05 0.1] (2x2 Matrix) Matrix-Operationen +;-;*;/;\ (Division hat spezielle Bedeutung) y * 20 (jedes Element mit 20 multiplizieren) y * y (Matrix-Multiplikation) y * x (nicht möglich wg. falscher Dimension)
Programmierung in MATLAB Elegantes Lösen von linearen Gleichungssystemen Beispiel: 3x + 4y – 2z = 7 4x – 2y + 2z = 8 1x + 2y + 3z = 9 Eingabe in MATLAB A = [3 4 -2; 4 -2 2; 1 2 3] B = [7; 8; 9] X = A\B ist Lösung des Gleichungssystems AX = B
Programmieren in MATLAB Datentypen: numerisch: int, double character: String, Character logisch: false, true (abgebildet als 0 und 1) cell: Struktur, welche verschiedene Arrays aufnimmt können untersch. Dimension haben und versch. Datentypen enthalten structure: ähnlich zu structures in C classes: Java-Klassen oder eigene Klassen
Programmieren in MATLAB Kontrollstrukturen if/else Schleifen if n < 0 disp('Input must be positive'); elseif rem(n,2) == 0 A = n/2; else A =(n+1)/2; end for m = 1:0.5:5 for n = 1:100 A(m, n) = 1/(m + n - 1); end
Programmieren in MATLAB Kontrollstrukturen try/catch try X = tan(x); catch ME1 disp(['Exception thrown:' ' ' ME1.identifier]); end kein spezieller ExceptionTyp (nur MException) ME1 gibt Variable an, in der die Exception gespeichert wird
Programmieren in MATLAB MATLAB M-File Dateiendung .m Zwei Arten von Dateien Skripte Funktionen Folge von Anweisungen, die ausgeführt werden müssen keine Ein- und Ausgabeparameter Funktionen (im Folgenden näher vorgestellt) Definition eigener Funktionen Ein- und Ausgabeparameter möglich
Function in MATLAB M-File function [ out1, out2, out3 ] = tutorial( in1, in2, in3 ) % This function has 3 input arguments and 3 output arguments % Detailed explanation goes here. % We don't need to specify something else here. x = 1; y = 2; z = 3; out1 = x * in1; out2 = y * in2; out3 = z * in3; end Aufruf: [x1 x2 x3] = tutorial(1, 2, 3); Ausgabeparameter Eingabeparameter Funktionsname (muss mit Dateiname übereinstimmen)
Compilierung von MATLAB-Code MATLAB Compiler MATLAB Builder for .NET MATLAB Builder for Excel MATLAB Builder for Java dll exe
Ausführung von MATLAB-Code Ausführung von MATLAB-Code in MATLAB Component Runtime (MCR) ähnlich zur Java Runtime Environment separat zur eigentlichen MATLAB-Umgebung Ausführung anwendungsspezifischen Codes außerhalb der MCR JRE .NET-Runtime Nativ Folglich: keine MATLAB-Installation zur Ausführung von MATLAB-Code notwendig keine zusätzlichen Lizenzkosten bei Nutzung entwickelten MATLAB-Codes
Integration von MATLAB in Java Benötigte Produkte für die Entwicklung: MATLAB MATLAB Compiler MATLAB Builder for Java für die Ausführung: MATLAB Runtime Component Die erstellte Java-Bibliothek Java Runtime Environment
Integration von MATLAB in Java Entwicklung von M-Files mit benötigten Funktionen Erstellung eines neuen MATLAB Builder for Java Projektes Deployment der M-Files inklusive der MCR falls auf Zielrechner keine MATLAB-Installation vorhanden Import der erzeugten Java-Bibliothek Aufruf der Funktionalität aus Java-Awendungen heraus
Was bietet MATLAB-Builder for Java? Erzeugung von Java-Wrapper-Klassen, die die MATLAB-Funktionalität kapseln Automatisches Mapping von Java-Datentypen in MATLAB-Datentypen und umgekehrt Exception-Handling MATLAB-Exception werden in Java gekapselt Fehlermeldungen können in Java ausgegeben werden Was geht nicht? MATLAB-Klassen werden nicht direkt in Java-Klassen umgewandelt und sind somit nur aus MATLAB-Code heraus aufrufbar Bestimmte Toolbox-Funktionen können nicht genutzt werden
Demo
Fazit Zugriff auf (fast) vollständige MATLAB-Funktionalität aus externen Anwendungen heraus Bei Aufteilung des Entwicklerteams keine übergreifenden Kenntnisse von MATLAB und Java notwendig Zeitersparnis bei der Entwicklung mathematischer Anwendungen