200 likes | 612 Views
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
E N D
MATLAB André Bolles
Gliederung • Was ist MATLAB? • Wozu brauche ich MATLAB? • Programmierung in MATLAB • Integration von MATLAB in Java • Demo
Was ist MATLAB • MATLAB = MATrixLABoratory? • 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 SequencingAlgorithm • Astrium EADS: Two-Way Laser Optical Link betweenAircraftandSatellite • 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 = [truefalsefalse] (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'); elseifrem(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 end
Programmieren in MATLAB • Kontrollstrukturen • try/catch try X = tan(x); catch ME1 disp(['Exceptionthrown:' ' ' 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 • 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
Function in MATLAB M-File function [ out1, out2, out3 ] = tutorial( in1, in2, in3 ) % This function has 3 input arguments and 3 output arguments % Detailedexplanationgoeshere. % 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 MATLAB Compiler MATLAB Builderfor .NET MATLAB Builderfor Excel MATLAB Builderfor Java exe dll
Ausführung von MATLAB-Code • Ausführung von MATLAB-Code in MATLAB ComponentRuntime (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 Builderfor Java • für die Ausführung: • MATLAB RuntimeComponent • Die erstellte Java-Bibliothek • Java Runtime Environment
Integration von MATLAB in Java • Entwicklung von M-Files mit benötigten Funktionen • Erstellung eines neuen MATLAB Builderfor 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-Builderfor 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
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