Upload
gunnar
View
59
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
MATLAB
André Bolles
Was ist MATLAB?
Wozu brauche ich MATLAB?
Programmierung in MATLAB
Integration von MATLAB in Java
Demo
Gliederung
2
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
3
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
Was ist MATLAB?
4
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 - …
Wozu brauche ich MATLAB?
5
Quelle: www.mathworks.com/products/matlab/userstories
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
6
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
7
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
Programmierung in MATLAB
8
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
9
Kontrollstrukturen- if/else
- Schleifen
Programmieren in MATLAB
10
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); endend
Kontrollstrukturen- try/catch
Programmieren in MATLAB
11
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
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
Programmieren in MATLAB
12
Function in MATLAB M-File
13
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
Funktionsname (muss mit Dateiname übereinstimmen)
Eingabeparameter
Compilierung von MATLAB-Code
14
MATLAB
MATLAB Compiler
MATLAB Builder for .NET
MATLAB Builder for Excel
MATLAB Builder for Java
dll exe
Ausführung von MATLAB-Code
15
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
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
16
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
Integration von MATLAB in Java
17
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
Was bietet MATLAB-Builder for Java?
18
Demo
19
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
Fazit
20