MATLAB André Bolles Gliederung Was ist MATLAB? Wozu brauche ich MATLAB? Programmierung in MATLAB Integration von MATLAB in Java Demo 2 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 3 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 4 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 5 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 6 Programmierung in MATLAB MATLAB ist eine Sprache Alles in MATLAB ist eine Matrix (oder ein multidim. Array) - u v w x y = = = = = 0.5 (1x1 Matrix) [true false false] (1x3 Matrix) ['Hallo' 'Welt' '!'] (1x10 Matrix) [3; -2; 1] (3x1 Matrix) [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) 7 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 8 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 9 Programmieren in MATLAB Kontrollstrukturen - if/else if n < 0 disp('Input must be positive'); elseif rem(n,2) == 0 A = n/2; else A =(n+1)/2; end - Schleifen for m = 1:0.5:5 for n = 1:100 A(m, n) = 1/(m + n - 1); end end 10 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 wi 11 Programmieren in MATLAB MATLAB M-File - Dateiendung .m - Zwei Arten von Dateien • Skripte • Funktionen Skripte - 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 12 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; Ausgabeparameter z = 3; Eingabeparameter Funktionsname out1 = x * in1; (muss mit Dateiname übereinstimmen) out2 = y * in2; out3 = z * in3; end Aufruf: [x1 x2 x3] = tutorial(1, 2, 3); 13 Compilierung von MATLAB-Code MATLAB MATLAB Compiler MATLAB Builder for .NET MATLAB Builder for Excel MATLAB Builder for Java dll exe 14 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 MATLABCodes 15 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 16 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 17 Was bietet MATLAB-Builder for Java? Erzeugung von Java-Wrapper-Klassen, die die MATLABFunktionalität kapseln Automatisches Mapping von Java-Datentypen in MATLABDatentypen 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 18 Demo 19 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 20