Matlab
Paradigma | Multiparadigma: funktional, imperativ, prozedural, objektorientiert, Array |
---|---|
Entworfen von | Cleve Moler |
Entwickler | MathWorks |
Erstes Erscheinen | Ende der 1970er Jahre |
Disziplin der Typisierung | dynamisch, schwach |
Dateinamen-Erweiterungen | .m, .p, .mex*, .mat, .fig, .mlx, .mlapp, .mltbx, .mlappinstall, .mlpkginstall |
Website | mathworks.de |
Beeinflusst durch | |
| |
Beeinflusst | |
| |
Entwickler(innen) | MathWorks |
---|---|
Erste Veröffentlichung | 1984; vor 39 Jahren |
Geschrieben in | C/C++, MATLAB |
Betriebssystem | Windows, macOS und Linux |
Plattform | IA-32, x86-64 |
Typ | Numerische Berechnungen |
Lizenz | Proprietäre kommerzielle Software |
Website | mathworks.de |
MATLAB (eine Abkürzung für "MATrix LABoratory") ist eine proprietäre Multi-Paradigma-Programmiersprache und numerische Rechenumgebung, die von MathWorks entwickelt wurde. MATLAB ermöglicht die Manipulation von Matrizen, die Darstellung von Funktionen und Daten, die Implementierung von Algorithmen, die Erstellung von Benutzeroberflächen und die Verknüpfung mit Programmen, die in anderen Sprachen geschrieben wurden. ⓘ
Obwohl MATLAB in erster Linie für numerische Berechnungen gedacht ist, verwendet eine optionale Toolbox die symbolische MuPAD-Engine, die den Zugriff auf symbolische Berechnungen ermöglicht. Ein zusätzliches Paket, Simulink, ermöglicht grafische Mehrbereichssimulationen und modellbasierten Entwurf für dynamische und eingebettete Systeme. ⓘ
Im Jahr 2020 hat MATLAB weltweit mehr als 4 Millionen Nutzer. Sie kommen aus den verschiedensten Bereichen der Technik, Wissenschaft und Wirtschaft. ⓘ
Geschichte
Ursprünge
MATLAB wurde von dem Mathematiker und Computerprogrammierer Cleve Moler erfunden. Die Idee für MATLAB basierte auf seiner Doktorarbeit aus den 1960er Jahren. Moler wurde Mathematikprofessor an der University of New Mexico und begann als Hobby mit der Entwicklung von MATLAB für seine Studenten. Die erste lineare Algebra-Programmierung von MATLAB entwickelte er 1967 zusammen mit seinem damaligen Doktorvater George Forsythe. Im Jahr 1971 folgte dann der Fortran-Code für lineare Gleichungen. ⓘ
In den Anfängen (vor Version 1.0) war MATLAB "keine Programmiersprache, sondern ein einfacher interaktiver Matrix-Rechner. Es gab keine Programme, keine Toolboxen, keine Grafiken. Und keine ODEs oder FFTs." ⓘ
Die erste frühe Version von MATLAB wurde in den späten 1970er Jahren fertiggestellt. Die Software wurde im Februar 1979 an der Naval Postgraduate School in Kalifornien zum ersten Mal der Öffentlichkeit zugänglich gemacht. Frühe Versionen von MATLAB waren einfache Matrix-Rechner mit 71 vorgefertigten Funktionen. Zu dieser Zeit wurde MATLAB kostenlos an Universitäten verteilt. Moler hinterließ Kopien an den Universitäten, die er besuchte, und die Software entwickelte eine große Anhängerschaft in den mathematischen Abteilungen der Universitäten. ⓘ
In den 1980er Jahren lernte Cleve Moler John N. Little kennen. Sie beschlossen, MATLAB in C umzuprogrammieren und für die IBM-Desktops zu vermarkten, die zu dieser Zeit die Großrechner ablösten. John Little und der Programmierer Steve Bangert programmierten MATLAB in C um, schufen die Programmiersprache MATLAB und entwickelten Funktionen für Toolboxen. ⓘ
Kommerzielle Entwicklung
MATLAB wurde 1984 auf der Automatic Control Conference in Las Vegas erstmals als kommerzielles Produkt veröffentlicht. MathWorks, Inc. wurde gegründet, um die Software zu entwickeln, und die MATLAB-Programmiersprache wurde veröffentlicht. Der erste Verkauf von MATLAB erfolgte im darauf folgenden Jahr, als Nick Trefethen vom Massachusetts Institute of Technology zehn Kopien kaufte. ⓘ
Bis Ende der 1980er Jahre wurden mehrere hundert Kopien von MATLAB an Universitäten für den Einsatz durch Studenten verkauft. Die Software wurde vor allem dank der Toolboxen populär, die von Experten aus verschiedenen Bereichen für die Durchführung spezieller mathematischer Aufgaben entwickelt wurden. Viele der Toolboxen wurden von Stanford-Studenten entwickelt, die MATLAB an der Universität einsetzten und die Software dann in die Privatwirtschaft mitnahmen. ⓘ
Im Laufe der Zeit wurde MATLAB für die frühen Betriebssysteme von Digital Equipment Corporation, VAX, Sun Microsystems und für Unix-PCs neu geschrieben. Version 3 wurde 1987 veröffentlicht. Der erste MATLAB-Compiler wurde von Stephen C. Johnson in den 1990er Jahren entwickelt. ⓘ
Im Jahr 2000 fügte MathWorks in MATLAB 6 eine Fortran-basierte Bibliothek für lineare Algebra hinzu und ersetzte damit die ursprünglichen LINPACK- und EISPACK-Subroutinen der Software, die in C geschrieben waren. Die MATLAB Parallel Computing Toolbox wurde 2004 auf der Supercomputing Conference veröffentlicht und 2010 um Unterstützung für Grafikprozessoren (GPUs) erweitert. ⓘ
Jüngere Geschichte
Einige besonders große Änderungen an der Software wurden mit der Version 8 im Jahr 2012 vorgenommen. Die Benutzeroberfläche wurde überarbeitet und der Funktionsumfang von Simulink wurde erweitert. Bis 2016 führte MATLAB mehrere technische Verbesserungen und Verbesserungen der Benutzeroberfläche ein, darunter das MATLAB Live Editor-Notebook und andere Funktionen. ⓘ
Syntax
Die MATLAB-Anwendung basiert auf der Programmiersprache MATLAB. Üblicherweise wird die MATLAB-Anwendung über das Befehlsfenster als interaktive mathematische Shell verwendet oder es werden Textdateien mit MATLAB-Code ausgeführt. ⓘ
Variablen
Variablen werden mit dem Zuweisungsoperator =
definiert. MATLAB ist eine schwach typisierte Programmiersprache, da Typen implizit konvertiert werden. Es ist eine inferred typed language, da Variablen zugewiesen werden können, ohne dass ihr Typ deklariert wird, es sei denn, sie werden als symbolische Objekte behandelt, und ihr Typ kann sich ändern. Werte können aus Konstanten, aus Berechnungen mit Werten anderer Variablen oder aus der Ausgabe einer Funktion stammen. Zum Beispiel:
>> x = 17
x =
17 <span title="Aus: Englische Wikipedia, Abschnitt "Variables"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Variables <span style="color:#dddddd">ⓘ</span>]</span>
>> x = 'Hut'
x =
Hut <span title="Aus: Englische Wikipedia, Abschnitt "Variables"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Variables <span style="color:#dddddd">ⓘ</span>]</span>
>> x = [3*4, pi/2]
x =
12.0000 1.5708 <span title="Aus: Englische Wikipedia, Abschnitt "Variables"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Variables <span style="color:#dddddd">ⓘ</span>]</span>
>> y = 3*sin(x)
y =
-1.6097 3.0000
Vektoren und Matrizen
Ein einfaches Array wird mit der Doppelpunkt-Syntax definiert: initial:
increment:
terminator. Zum Beispiel:
>> array = 1:2:9
array =
1 3 5 7 9
definiert eine Variable namens array
(oder weist einer vorhandenen Variable mit dem Namen array
einen neuen Wert zu), die ein Array ist, das aus den Werten 1, 3, 5, 7 und 9 besteht. Das heißt, das Array beginnt bei 1 (dem Anfangswert), erhöht sich bei jedem Schritt vom vorherigen Wert um 2 (dem Inkrementwert) und stoppt, sobald es 9 (den Terminatorwert) erreicht hat (oder kurz davor ist). ⓘ
Der Inkrementwert kann in dieser Syntax auch weggelassen werden (zusammen mit einem der Doppelpunkte), um einen Standardwert von 1 zu verwenden.
>> ari = 1:5
ari =
1 2 3 4 5
weist der Variablen mit dem Namen ari
ein Array mit den Werten 1, 2, 3, 4 und 5 zu, da der Standardwert 1 als Inkrement verwendet wird. ⓘ
Die Indizierung ist 1-basiert, was die übliche Konvention für Matrizen in der Mathematik ist, im Gegensatz zur Null-basierten Indizierung, die in anderen Programmiersprachen wie C, C++ und Java üblich ist. ⓘ
Matrizen können definiert werden, indem die Elemente einer Zeile mit Leerzeichen oder Komma getrennt werden und jede Zeile mit einem Semikolon abgeschlossen wird. Die Liste der Elemente sollte von eckigen Klammern []
umgeben sein. Klammern ()
werden für den Zugriff auf Elemente und Subarrays verwendet (sie werden auch zur Kennzeichnung einer Liste von Funktionsargumenten verwendet). ⓘ
>> A = [16, 3, 2, 13 ; 5, 10, 11, 8 ; 9, 6, 7, 12 ; 4, 15, 14, 1]
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1 <span title="Aus: Englische Wikipedia, Abschnitt "Vectors and matrices"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>
>> A(2,3)
ans =
11
Gruppen von Indizes können durch Ausdrücke wie 2:4
angegeben werden, was zu [2, 3, 4]
führt. Eine Untermatrix, die aus den Zeilen 2 bis 4 und den Spalten 3 bis 4 besteht, kann zum Beispiel wie folgt geschrieben werden:
>> A(2:4,3:4)
ans =
11 8
7 12
14 1
Eine quadratische Identitätsmatrix der Größe n kann mit der Funktion eye
erzeugt werden, und Matrizen beliebiger Größe mit Nullen oder Einsen können mit den Funktionen zeros
bzw. ones
erzeugt werden.
>> eye(3,3)
ans =
1 0 0
0 1 0
0 0 1 <span title="Aus: Englische Wikipedia, Abschnitt "Vectors and matrices"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>
>> Nullen(2,3)
ans =
0 0 0
0 0 0 <span title="Aus: Englische Wikipedia, Abschnitt "Vectors and matrices"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>
>> Einsen(2,3)
ans =
1 1 1
1 1 1
Das Transponieren eines Vektors oder einer Matrix erfolgt entweder durch die Funktion transpose
oder durch Hinzufügen von Punkt und Primzahl nach der Matrix (ohne Punkt führt prime eine konjugierte Transponierung für komplexe Arrays durch):
>> A = [1 ; 2], B = A.', C = transpose(A)
A =
1
2
B =
1 2
C =
1 2 <span title="Aus: Englische Wikipedia, Abschnitt "Vectors and matrices"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>
>> D = [0, 3 ; 1, 5], D.'
D =
0 3
1 5
ans =
0 1
3 5
Die meisten Funktionen akzeptieren Arrays als Eingabe und arbeiten elementweise mit jedem Element. Zum Beispiel multipliziert mod(2*J,n)
jedes Element in J mit 2 und reduziert dann jedes Element modulo n. MATLAB enthält standardmäßige for
- und while
-Schleifen, aber (wie in anderen ähnlichen Anwendungen wie R) wird die Verwendung der vektorisierten Notation empfohlen und ist oft schneller in der Ausführung. Der folgende Code, ein Auszug aus der Funktion magic.m, erzeugt ein magisches Quadrat M für ungerade Werte von n (die MATLAB-Funktion meshgrid
wird hier verwendet, um quadratische Matrizen I und J mit 1:n zu erzeugen):
[J,I] = meshgrid(1:n);
A = mod(I + J - (n + 3) / 2, n);
B = mod(I + 2 * J - 2, n);
M = n * A + B + 1; <span title="Aus: Englische Wikipedia, Abschnitt "Vectors and matrices"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Vectors_and_matrices <span style="color:#dddddd">ⓘ</span>]</span>
Strukturen
MATLAB unterstützt Struktur-Datentypen. Da es sich bei allen Variablen in MATLAB um Arrays handelt, ist die Bezeichnung "Struktur-Array" angemessener, da jedes Element des Arrays denselben Feldnamen hat. Darüber hinaus unterstützt MATLAB dynamische Feldnamen (Feldsuche nach Namen, Feldmanipulationen usw.). ⓘ
Funktionen
Beim Erstellen einer MATLAB-Funktion sollte der Name der Datei mit dem Namen der ersten Funktion in der Datei übereinstimmen. Gültige Funktionsnamen beginnen mit einem alphabetischen Zeichen und können Buchstaben, Zahlen oder Unterstriche enthalten. Bei Variablen und Funktionen wird zwischen Groß- und Kleinschreibung unterschieden.
gbImage = imread('ecg.png');
grayImage = rgb2gray(rgbImage); % für nicht indizierte Bilder
level = graythresh(grayImage); % Schwellenwert für die Umwandlung des Bildes in das Binärformat,
binaryImage = im2bw(grayImage, level);
% Extrahieren der einzelnen roten, grünen und blauen Farbkanäle.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Machen Sie die schwarzen Teile zu reinem Rot.
redChannel(~binaryImage) = 255;
greenChannel(~binaryImage) = 0;
blueChannel(~binaryImage) = 0;
% Jetzt rekombinieren, um das Ausgabebild zu bilden.
rgbImageOut = cat(3, redChannel, greenChannel, blueChannel);
imshow(rgbImageOut); <span title="Aus: Englische Wikipedia, Abschnitt "Functions"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Functions <span style="color:#dddddd">ⓘ</span>]</span>
Funktionsgriffe
MATLAB unterstützt Elemente des Lambda-Kalküls durch die Einführung von Funktionshandles oder Funktionsreferenzen, die entweder in .m-Dateien oder anonymen/verschachtelten Funktionen implementiert sind. ⓘ
Klassen und objektorientierte Programmierung
MATLAB unterstützt die objektorientierte Programmierung mit Klassen, Vererbung, virtuellem Dispatch, Packages, Pass-by-Value-Semantik und Pass-by-Reference-Semantik. Die Syntax und die Aufrufkonventionen unterscheiden sich jedoch deutlich von denen anderer Sprachen. MATLAB hat Wertklassen und Referenzklassen, je nachdem, ob die Klasse Handle als Superklasse hat (bei Referenzklassen) oder nicht (bei Wertklassen). ⓘ
Das Verhalten von Methodenaufrufen ist bei Wert- und Referenzklassen unterschiedlich. Zum Beispiel, ein Aufruf einer Methode:
object.method();
kann ein beliebiges Element von object nur dann ändern, wenn object eine Instanz einer Referenzklasse ist, andernfalls müssen Wertklassenmethoden eine neue Instanz zurückgeben, wenn sie das Objekt ändern müssen. ⓘ
Im Folgenden wird ein Beispiel für eine einfache Klasse gegeben:
classdef Hallo
Methoden
function greet(obj)
disp('Hallo!')
end
end
end <span title="Aus: Englische Wikipedia, Abschnitt "Classes and object-oriented programming"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Classes_and_object-oriented_programming <span style="color:#dddddd">ⓘ</span>]</span>
In eine Datei mit dem Namen hello.m
eingefügt, kann dies mit folgenden Befehlen ausgeführt werden:
>> x = Hallo();
>> x.greet();
Hallo! <span title="Aus: Englische Wikipedia, Abschnitt "Classes and object-oriented programming"" class="plainlinks">[https://en.wikipedia.org/wiki/MATLAB#Classes_and_object-oriented_programming <span style="color:#dddddd">ⓘ</span>]</span>
Grafiken und Programmierung von grafischen Benutzeroberflächen
Syntax-Fehler
MATLAB verfügt über fest integrierte Funktionen zur Erstellung von Grafiken. Beispielsweise kann die Funktion plot verwendet werden, um einen Graphen aus zwei Vektoren x und y zu erzeugen. Der Code:
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
ergibt die folgende Abbildung der Sinusfunktion:
MATLAB unterstützt auch dreidimensionale Grafiken:
MATLAB unterstützt die Entwicklung von Anwendungen mit grafischer Benutzeroberfläche (GUI). UIs können entweder programmatisch oder mit visuellen Designumgebungen wie GUIDE und App Designer erstellt werden. ⓘ
MATLAB und andere Sprachen
MATLAB kann Funktionen und Subroutinen aufrufen, die in den Programmiersprachen C oder Fortran geschrieben wurden. Es wird eine Wrapper-Funktion erstellt, die die Übergabe und Rückgabe von MATLAB-Datentypen ermöglicht. MEX-Dateien (MATLAB Executables) sind die dynamisch ladbaren Objektdateien, die durch Kompilieren solcher Funktionen entstehen. Seit 2014 wurde eine zunehmende bidirektionale Schnittstelle zu Python eingerichtet. ⓘ
In Perl, Java, ActiveX oder .NET geschriebene Bibliotheken können direkt von MATLAB aus aufgerufen werden, und viele MATLAB-Bibliotheken (zum Beispiel XML- oder SQL-Unterstützung) sind als Wrapper um Java- oder ActiveX-Bibliotheken herum implementiert. Der Aufruf von MATLAB aus Java ist komplizierter, kann aber mit einer MATLAB-Toolbox erfolgen, die separat von MathWorks vertrieben wird, oder über einen undokumentierten Mechanismus namens JMI (Java-to-MATLAB Interface) (nicht zu verwechseln mit dem nicht verwandten Java Metadata Interface, das ebenfalls JMI heißt). Die offizielle MATLAB-API für Java wurde 2016 hinzugefügt. ⓘ
Als Alternative zur MuPAD-basierten Symbolic Math Toolbox von MathWorks kann MATLAB mit Maple oder Mathematica verbunden werden. ⓘ
Es gibt auch Bibliotheken für den Import und Export von MathML. ⓘ
MATLAB ist zwar das beliebteste kommerzielle Softwarepaket für numerische Berechnungen, es gibt jedoch auch andere Alternativen wie die Open-Source-Berechnungssprache GNU Octave, die Statistikprogrammiersprache R, die Rechenumgebung Maple und die Berechnungssprache Julia. ⓘ
Rückzug aus China
Im Jahr 2020 berichteten chinesische Staatsmedien, dass MATLAB aufgrund von US-Sanktionen seine Dienste von zwei chinesischen Universitäten zurückgezogen hat. Als Reaktion darauf sollen verstärkt Open-Source-Alternativen genutzt und inländische Alternativen entwickelt werden. ⓘ
Release-Historie
MATLAB wird zweimal pro Jahr aktualisiert. Zusätzlich zu neuen Funktionen und anderen Verbesserungen enthält jede Version neue Fehlerkorrekturen und kleinere Änderungen. ⓘ
Version | Name der Version | Nummer | Gebündelte JVM | Jahr | Datum der Freigabe | Anmerkungen ⓘ |
---|---|---|---|---|---|---|
1.0 | 1984 | |||||
2 | 1986 | |||||
3 | 1987 | Die erste Matlab-Toolbox wird eingeführt; Unterstützung für gewöhnliche Differentialgleichungen wird hinzugefügt. | ||||
3.5 | 1990 | Lief unter DOS, benötigte aber mindestens einen 386er Prozessor; benötigte einen mathematischen Coprozessor. | ||||
4 | 1992 | Lief unter Windows 3.1x und Macintosh. | ||||
4.2c | 1994 | Lief unter Windows 3.1x; benötigte einen mathematischen Koprozessor. | ||||
5.0 | Band 8 | 1996 | Dezember 1996 | Vereinheitlichte Versionen für alle Plattformen. | ||
5.1 | Band 9 | 1997 | Mai 1997 | |||
5.1.1 | R9.1 | |||||
5.2 | R10 | 1998 | März 1998 | Letzte Version, die auf klassischen Macs funktioniert. | ||
5.2.1 | R10.1 | |||||
5.3 | R11 | 1999 | Januar 1999 | |||
5.3.1 | R11.1 | November 1999 | ||||
6.0 | R12 | 12 | 1.1.8 | 2000 | November 2000 | Erste Version mit gebündelter virtueller Java-Maschine (JVM). |
6.1 | R12.1 | 1.3.0 | 2001 | Juni 2001 | Letzte Version für Windows 95. | |
6.5 | R13 | 13 | 1.3.1 | 2002 | Juli 2002 | |
6.5.1 | R13SP1 | 2003 | ||||
6.5.2 | R13SP2 | Letzte Veröffentlichung für Windows 98, Windows ME, IBM/AIX, Alpha/TRU64 und SGI/IRIX. | ||||
7 | R14 | 14 | 1.4.2 | 2004 | Juni 2004 | Einführung von anonymen und verschachtelten Funktionen; Wiedereinführung für Mac (unter Mac OS X). |
7.0.1 | R14SP1 | Oktober 2004 | ||||
R14SP1+ | 2004 | November 2004 | Einführung der Parallel Computing Toolbox. | |||
7.0.4 | R14SP2 | 1.5.0 | 2005 | 7. März 2005 | Unterstützung für memory-mapped Dateien hinzugefügt. | |
7.1 | R14SP3 | 1.5.0 | 1. September 2005 | Erste 64-Bit-Version für Windows XP 64-Bit verfügbar. | ||
7.2 | R2006a | 15 | 1.5.0 | 2006 | 1. März 2006 | |
7.3 | R2006b | 16 | 1.5.0 | 1. September 2006 | Unterstützung für HDF5-basierte MAT-Dateien hinzugefügt. | |
7.4 | R2007a | 17 | 1.5.0_07 | 2007 | 1. März 2007 | Neue Funktion bsxfun hinzugefügt, um Element-für-Element-Binäroperationen mit aktivierter Singleton-Expansion durchzuführen.
|
7.5 | R2007b | 18 | 1.6.0 | 1. September 2007 | Letzte Version für Windows 2000 und PowerPC Mac; Lizenzserver-Unterstützung für Windows Vista; neues internes Format für P-Code. | |
7.6 | R2008a | 19 | 1.6.0 | 2008 | 1. März 2008 | Wesentliche Verbesserungen der objektorientierten Programmierfähigkeiten mit einer neuen Klassendefinitionssyntax; Möglichkeit, Namespaces mit Paketen zu verwalten. |
7.7 | R2008b | 20 | 1.6.0_04 | 9. Oktober 2008 | Letzte Version für Prozessoren ohne SSE2; Neue Map-Datenstruktur; Verbesserungen bei den Zufallszahlengeneratoren. | |
7.8 | R2009a | 21 | 1.6.0_04 | 2009 | 6. März 2009 | Erste Version für Microsoft 32-bit & 64-bit Windows 7; neue externe Schnittstelle zum .NET Framework. |
7.9 | R2009b | 22 | 1.6.0_12 | 4. September 2009 | Erste Version für Intel 64-Bit Mac und letzte Version für Solaris SPARC; neue Verwendung des Tilde-Operators (~ ), um Argumente in Funktionsaufrufen zu ignorieren.
| |
7.9.1 | R2009bSP1 | 1.6.0_12 | 2010 | 1. April 2010 | Fehlerbehebungen. | |
7.10 | R2010a | 23 | 1.6.0_12 | 5. März 2010 | Letzte Version für Intel 32-bit Mac. | |
7.11 | R2010b | 24 | 1.6.0_17 | 3. September 2010 | Unterstützung für Aufzählungen hinzugefügt; zusätzliche Funktionen für die Ausführung von MATLAB-Code auf NVIDIA CUDA-basierten Grafikprozessoren. | |
7.11.1 | R2010bSP1 | 1.6.0_17 | 2011 | 17. März 2011 | Fehlerkorrekturen und Aktualisierungen. | |
7.11.2 | R2010bSP2 | 1.6.0_17 | 5. April 2012 | Fehlerbehebungen. | ||
7.12 | R2011a | 25 | 1.6.0_17 | 8. April 2011 | Neue rng -Funktion zur Steuerung der Zufallszahlengenerierung.
| |
7.13 | R2011b | 26 | 1.6.0_17 | 1. September 2011 | Es wurde die Möglichkeit hinzugefügt, auf Teile von Variablen direkt in MAT-Dateien zuzugreifen und diese zu ändern, ohne sie in den Speicher zu laden; die maximale Anzahl lokaler Arbeiter mit der Parallel Computing Toolbox wurde von 8 auf 12 erhöht. | |
7.14 | R2012a | 27 | 1.6.0_17 | 2012 | 1. März 2012 | Letzte Version mit 32-bit Linux Unterstützung. |
8 | R2012b | 28 | 1.6.0_17 | 11. September 2012 | Erste Version mit Toolstrip-Oberfläche; Einführung von MATLAB Apps; überarbeitetes Dokumentationssystem. | |
8.1 | R2013a | 29 | 1.6.0_17 | 2013 | 7. März 2013 | Neues Unit-Testing-Framework. |
8.2 | R2013b | 30 | 1.7.0_11 | 6. September 2013 | Integrierte Java-Laufzeitumgebung (JRE) auf Version 7 aktualisiert; neuer Tabellendatentyp. | |
8.3 | R2014a | 31 | 1.7.0_11 | 2014 | 7. März 2014 | Vereinfachtes Compiler-Setup für die Erstellung von MEX-Dateien; Unterstützung von USB-Webcams im MATLAB-Kern; Anzahl der lokalen Worker nicht mehr auf 12 mit der Parallel Computing Toolbox begrenzt. |
8.4 | R2014b | 32 | 1.7.0_11 | 3. Oktober 2014 | Neue klassenbasierte Grafik-Engine (a.k.a. HG2); Tabbing-Funktion in der GUI; verbessertes User Toolbox Packaging und Hilfedateien; neue Objekte für Zeit-Datum-Manipulationen; Git-Subversion-Integration in IDE; Big Data-Fähigkeiten mit MapReduce (skalierbar zu Hadoop); neues py -Paket für die Nutzung von Python innerhalb von MATLAB; neue Engine-Schnittstelle zum Aufruf von MATLAB aus Python; verschiedene neue und verbesserte Funktionen: webread (RESTful Web Services mit JSON/XML-Unterstützung), tcpclient (socket-basierte Verbindungen), histcounts , histogram , animatedline und andere.
| |
8.5 | R2015a | 33 | 1.7.0_60 | 2015 | 5. März 2015 | |
8.5 | R2015aSP1 | 1.7.0_60 | 14. Oktober 2015 | Letzte Version mit Unterstützung für Windows XP und Windows Vista. | ||
8.6 | R2015b | 34 | 1.7.0_60 | 3. September 2015 | Neue MATLAB-Ausführungsengine (auch bekannt als LXE); Graph- und Di enklassen für die Arbeit mit Graphen und Netzwerken; MinGW-w64 als unterstützter Compiler unter Windows; letzte Version mit 32-Bit-Unterstützung.
| |
9.0 | R2016a | 35 | 1.7.0_60 | 2016 | 3. März 2016 | Veröffentlichung von Live Scripts: interaktive Dokumente, die Text, Code und Ausgabe kombinieren (im Stil von Literate Programming); Einführung des App Designers: eine neue Entwicklungsumgebung für die Erstellung von Apps (mit neuartigen UI-Figuren, Achsen und Komponenten); Anhalten der Ausführung laufender Programme über einen Pause-Button. |
9.1 | R2016b | 36 | 1.7.0_60 | 15. September 2016 | Möglichkeit zur Definition lokaler Funktionen in Skripten; automatische Erweiterung von Dimensionen (bisher über expliziten Aufruf von bsxfun ); große Arrays für Big Data; neuer String -Typ; neue Funktionen zur Kodierung/Dekodierung von JSON; offizielle MATLAB Engine API für Java.
| |
9.2 | R2017a | 37 | 1.7.0_60 | 2017 | 9. März 2017 | MATLAB Online veröffentlicht: Cloud-basierter MATLAB-Desktop, auf den über einen Webbrowser zugegriffen werden kann; Strings in doppelten Anführungszeichen; neue Memoize -Funktion für Memoization; erweiterte Validierung von Objekteigenschaften; Mocking-Framework für Unit-Tests; MEX zielt standardmäßig auf 64-Bit; neue Heatmap -Funktion zur Erstellung von Heatmap-Diagrammen.
|
9.3 | R2017b | 38 | 1.8.0_121 | 21. September 2017 | Einführung eines GPU Coders, der MATLAB-Code in CUDA-Code für Nvidia konvertiert. | |
9.4 | R2018a | 39 | 1.8.0_144 | 2018 | 15. März 2018 | Verbesserungen am Live-Editor; Einführung der C++ MEX-Schnittstelle; Möglichkeit zur Anpassung der Registerkartenvervollständigung; Webanwendungen. |
9.5 | R2018b | 40 | 1.8.0_152 | 12. September 2018 | Unterstützung für Cloud-Anbieter, wie Amazon Web Services, hinzugefügt; Neural Network Toolbox durch Deep Learning Toolbox ersetzt. | |
9.6 | R2019a | 41 | 1.8.0_181 | 2019 | 20. März 2019 | MATLAB Projects veröffentlicht; Zustandsmaschinenprogrammierung mit Stateflow hinzugefügt. |
9.7 | R2019b | 42 | 1.8.0_202 | 11. September 2019 | Einführung des 'arguments'-Blocks zur Eingabevalidierung; Aktivierung der Punktindizierung in Funktionsausgaben; Einführung von Live Editor Tasks. | |
9.8 | R2020a | 43 | 2020 | 19. März 2020 | Entfernung des Mupad-Notebooks; verbesserte Unterstützung für AMD-CPUs (AVX2); standardmäßige UTF-8-Kodierung für MATLAB-Codedateien; Möglichkeit zur Erstellung eigenständiger Anwendungen mit Simulink. | |
9.9 | R2020b | 44 | 17. September 2020 | Verbesserte Unterstützung für AMD-CPUs (AVX2); Online-Version von Simulink. | ||
9.10 | R2021a | 45 | 2021 | 11. März 2021 | ||
9.11 | R2021b | 46 | 22. September 2021 | |||
9.12.0 | R2022a | 47 | 2022 | 9. März 2022 |
Die Nummer (oder Versionsnummer) ist die vom Concurrent License Manager Programm FLEXlm gemeldete Version. Eine vollständige Liste der Änderungen sowohl an MATLAB als auch an den offiziellen Toolboxen finden Sie in den MATLAB Release Notes. ⓘ
Einsatz
Matlab dient im Gegensatz zu Computeralgebrasystemen nicht der symbolischen, sondern vorrangig der numerischen (zahlenmäßigen) Lösung von Problemen. Die Software wird in der Industrie und an Hochschulen vor allem für numerische Simulation sowie Datenerfassung, Datenanalyse und -auswertung eingesetzt. Ein weiterer Anwendungsschwerpunkt sind die Wirtschaftswissenschaften, für die Mathworks Erweiterungspakete (z. B. Ökonometrie und Finanzmarkttheorie) bereitstellt. ⓘ
Matlab ist auch die Basis für Simulink, ein anderes Produkt des Unternehmens The MathWorks, das zur zeitgesteuerten Simulation dient, und Stateflow, das für die ereignisorientierte Simulation benutzt wird, sowie für zahlreiche anwendungs- und domänenspezifische Erweiterungen. ⓘ
Struktur und Toolboxes
Programmiert wird unter Matlab in einer proprietären Programmiersprache, die auf der jeweiligen Maschine (Computer) interpretiert wird. Kleinere Programme können als sogenannte Skripte oder Funktionen zu geschlossenen Einheiten verpackt werden, was das Erstellen von anwendungsorientierten „Werkzeugkisten“ (Toolboxes) erlaubt. ⓘ
Viele solcher Pakete sind auch kommerziell erhältlich. Durch die vereinfachte, mathematisch orientierte Syntax der Matlab-Skriptsprache und die umfangreichen Funktionsbibliotheken für zum Beispiel Statistik, Signal- und Bildverarbeitung ist die Erstellung entsprechender Programme wesentlich einfacher möglich als z. B. unter C. Ein Beispiel ist die Symbolic Toolbox zur Nutzung symbolischer Ausdrücke im Gegensatz zu mit Zahlen belegten Variablen. Ferner gibt es Schnittstellen, um C-Code einzubinden, sowie einen Compiler, mit dem aus einem Skript unabhängig von Matlab lauffähiger C-Code erstellt werden kann. Damit können mathematisch aufwendige Module für C-Projekte in der Matlab-Umgebung entwickelt und getestet werden. ⓘ
Matlab bietet aus der objektorientierten Programmierung die Konzepte von Klassen, Vererbung, Pakete und Call-by-value-Aufrufen. ⓘ
Matlab besteht neben der Sprache Matlab aus einer grafischen Desktop-Umgebung, um verschiedene Ansichten wie Variablen, Plots und Code auf einen Blick sehen und viele Aufgaben durch Mausinteraktion und Tastaturkürzel bewältigen zu können. ⓘ