MATLAB / Java

Werbung
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
Herunterladen