Fakten und Fiktionen - MATLAB

"The expanding MATLAB Universe" betitelte Cleve Moler (einer der MATLAB Entwickler) seinen Einleitungsvortrag bei der erst vor kurzem abgeschlossenen Tour der MATLAB Conferences (USA, Europa, Japan). Der Vortragstitel spiegelt auch die Philosophie der Entwickler und Marketingstrategen wieder, die MATLAB als das Engineering Tools sehen, das von keinem einschlägigen Arbeitsplatz (PC, Workstation, Netz) wegzudenken sein soll.

In der Tat ist die Entwicklung beachtlich: von einem einfachen Interpreter für Programme aus dem BLAS System (Basic Linear Algebra Subroutines) - vor 10 Jahren - entwickelte sich ein viele Anwendungen, Bedürfnisse und Voraussetzungen erfüllendes Softwaresystem mit etwa 45 Modulen (Toolboxen, Blocksets, Suites, Extensions etc.) - die Zahl mag je nach Zählweise variieren - für die gängigsten Plattformen (derzeit 14).

"In the very early times" war MATLAB im Bereich der angewandten Mathematik verbreitet, da es benutzerfreundlich Vektoren und Matrizen verarbeitet - und wurde deshalb auch bald in der Regelungstechnik als erster Anwendung sehr beliebt. Eine der Stärken von MATLAB ist seine Idee der m-Files: komplexe Befehlsfolgen können zu einem neuen Befehl zusammengefaßt werden, mit unterschiedlicher Form der Parameterübergabe. Der neue "Befehl" wird mit einem Editor erstellt und als Textfile mit der Extension .m abgespeichert (befehl.m) und steht ab nun wie jeder eingebaute Befehl zur Verfügung. MATLAB bot bald eine Reihe derartiger zusätzlicher Befehlssammlungen an, die sogenannten Toolboxen. Diese Toolboxen wurden und werden weiterentwickelt, und es werden Toolboxen für verschiedenste Anwendungsgebiete neu entwickelt und angeboten.

Simulation im kontinuierlichen Bereich besteht hauptsächlich im Lösen von Systemen nichtlinearer Differentialgleichungen x' = f (x, t); numerische Lösungsverfahren berechnen im Prinzip die Lösung x(t) als Lösungsvektor (x(tk)) an diskreten Zeitpunkten tk, durch geeignete fortschreitende Verarbeitung des Ableitungsvektors (f(x(tk), tk)) - womit MATLAB auch von Anfang an Lösungsalgorithmen als m-Files anbot (odexx.m). Für Anwendungen im Bereich der nichtlinearen Regelungstechnik war diese Darstellungsform (explizite Zustandsraumdarstellung, keine Ausgangsgleichungen) unzureichend und nicht anwendungsadäquat (Regelungstechniker bevorzugen Blockdiagramme und Übertragungsfunktionen). Bald wurde daher für diese Aufgaben die graphische Modellbildungsoberfläche SIMULINK entwickelt. SIMULINK ermöglicht den Modell- aufbau aus wohlbekannten regelungstechnischen Blöcken in graphischer Form. Ein derartig aufgebautes Modell wird als spezielles m-File abgespeichert (s-function), wobei sowohl die Struktur- als auch die Graphikinformationen - in reiner Textform und damit plattformunabhängig !- abgespeichert sind. Ein SIMULINK-Modell kann nun entweder von MATLAB aus gestartet werden, oder bequemer in der graphischen SIMULINK-Oberfläche, mit Datenausgabe in den MATLAB Workspace, in Graphikfenster etc.

SIMULINK war von Anfang an Windows bzw. X Window gebunden und kam später auf den Markt als vergleichbare Produkte wie z.B. XANALOG, MATRIXX, CONTROL_C, die in ersten Versionen teilweise andere graphische Oberflächen wie z.B. GEM verwendeten. Viele dieser Produkte verschliefen allerdings den Umstieg auf Windows, und SIMULINK konnte reüssieren (zur Erinnerung: es gab eine Zeit - und die ist noch nicht so lange her-, in der unklar war, ob sich als graphische Oberfläche GEM oder Windows durchsetzen wird). Kein Vorteil, wo kein Nachteil: m-Files und SIMULINK- Modelle können beliebig zwischen Rechnern ausgetauscht werden, sie sind wegen der Textform immer lesbar - aber sie werden immer nur interpretiert, und das dauert seine Zeit.

"How to get the whole stuff faster" beschäftigte MathWorks (die Entwicklungsfirma) von Anfang an. Erste Abhilfe wurde für SIMULINK-Modelle geschaffen (wo die interpretative Arbeitsweise die Rechenzeit besonders schmerzlich beeinträchtigt): der SIMULINK Accelerator übersetzt das Modell in eine Art Direct Executing Code (mex-File), und der C-Code Generator kann aus dem Modell und den Lösungsalgorithmen ein C-Source-Programm erstellen. Mit dem C-Code Generator - nun moderner Real-Time Workshop genannt - werden aber auch andere An- wendungen möglich, wie die Entwicklung von Reglern für/auf Signalprozessoren vom Design bis zur Implementation etc.

Bis 1993 entwickelte sich MATLAB/SIMULINK eher unstrukturiert weiter: neue Toolboxen (auch von anderen Firmen als sogenannte "Partner Series"), Erweiterungen für SIMULINK etc. Die Begriffe Toolbox, Suite, Extension, Workshop etc. führten zu einem wahren Begriffsbabylon (noch mehr die Lizenzpolitik, die nicht nur mich, sondern auch die Distributoren zur Verzweiflung brachte).

Es traten auch einige Clones auf, da im Prinzip ja "nur" ein Interpreter geschrieben werden mußte, der die frei verfügbaren Routinen zur Matrix- und Vektormanipulation aufruft. Eine Unzahl von m-Files und Toolboxen kann mit diesen "Clones" verwendet werden. Allerdings war MATLAB nie besonders geschützt (auf PCs im Prinzip gar nicht), weshalb es sich interessanterweise noch stärker verbreitete - und MathWorks deswegen aus seinem Herzen auch keine Mördergrube machte - im Gegenteil: MATLAB und Clones wurden zum Standardtool für verschiedenste Aufgaben - neben den klassischen z. B. auch für das Anfertigen vernünftiger Zeichnungen, für Datenaustausch bzw. Umwandlung von Daten etc.

MATLAB bot auch früh die Möglichkeit zur Einbindung von C- oder FORTRAN-Programmen an: ein derartiges Programm kann, geeignet übersetzt und gelinkt, als MATLAB- Befehl verwendet werden (mex-File). Einige Operationen (Befehle) in MATLAB und in einigen Toolboxen sind vor allem aus Geschwindigkeitsgründen (aber aus anderen Gründen, siehe später) ebenfalls als mex-File und nicht als m-File implementiert.

Ab 1993 wurde die Produktstrategie und offensichtlich auch eine neue Marketingstrategie eingesetzt, die der Entwicklung Rechnung trugen und die Marktposition weiter untermauerten: das MATLAB Universe.

Die Grundidee des MATLAB Universe ist MATLAB als ein Softwaresystem

Diese Idee scheint überzogen, und die Konkurrenz spricht von Größenwahn, lamentiert, ist beleidigt, "kann es besser", versucht sich in Clones, "hat jenes Feature schon viel länger im Programm" etc. - allerdings hat die Konkurrenz schlicht und einfach verschlafen, war zu ignorant, oder hatte einfach eine schlechte Marketingstrategie. Zudem bringt Erfolg bekanntlich Neider, aber man muß MATLAB durchaus hart erarbeiteten und klug vermarkteten Erfolg zubilligen.

Im strukturellen Bereich erfolgte eine verbesserte Trennung zwischen MATLAB und SIMULINK. SIMULINK ist ein eigenständiger Modul im MATLAB Universe, in der Implementation wird es wie eine Toolbox behandelt. Ergänzungen zu SIMULINK, die u.a. auch neue graphische Modellbibliotheken anbieten, werden nicht Toolbox (TB), sondern Blockset (BS) genannt - womit die Nonlinear Control Design Toolbox (NCD TB) nun NCD Blockset heißt.

Die Sicht von MathWorks besteht aus einer Entwicklung des MATLAB Universe in die Tiefe und in die Breite, Abb. 1 stellt diese Struktur dar. In der Breite erstreckt sich das Universe von der MATLAB Basis mit MATLAB und SIMULINK über die Lehre (Teaching) zu den Anwendungen; zu den bisherigen Anwendungsgruppen General Mathematics and Computation, Controls and Simulation und Signal/ Image Processing kommt nun noch Finance, an weitere Gebiete ist gedacht. In die Tiefe erweitert sich das Universe mit einerseits höherer Komplexität für erfahrene Benutzer und andererseits verstärkter Benutzerfreundlichkeit mit graphischen User Interfaces (GUIs) für Newcomer.

Die MATLAB Basis verbessert sich mit neuen Versionen von MATLAB und SIMULINK (MATLAB 5, SIMULINK 2), mit der Weiterentwicklung des Graphical User Interface (GUI) und dem MATLAB Compiler mit der Math Library. Der Compiler soll MATLAB "endlich" beschleunigen.

MATLAB war immer ausbildungsfreundlich - ein kurzes Zwischenspiel "extrem-kapitalistischer" Lizenzpolitik abgesehen. Student Editions (Text Books mit begleitenden Beispielen und eingeschränktem MATLAB auf Diskette) für MATLAB und SIMULINK haben vernünftige Preise, Classroom Kits (keinerlei Einschränkungen in Umfang, Größe, Funktion !!) erlauben das Arbeiten in Praktika, Übungen etc. Damit kann MATLAB schon in der Ausbildung den Studenten nahegebracht werden.

Im Bereich General Mathematics and Computation folgen Verbesserungen der Numerik, Erweiterungen in Richtung Partielle Differentialgleichungen und Interfaces zu numerischen Libraries (NAG); die kostenlose und über den FTP Server von MathWorks zu beziehende ODE Suite ersetzt die langsamen als m-Files implementierten Routinen zur Lösung von Differentialgleichungen durch bessere als schnelle mex-Files implementierte Algorithmen. In Controls and Simulation unterstützen neue Toolboxen die regelungstechnische Analyse und Synthese (z.B. LMI TB), Blocksets erweitern die Funktionalität von SIMULINK (Fixed-Point Blockset), sowie Interfaces zu Real-Time Hardware. In Signal/Image Processing wird die Graphik verbessert, Features für SIMULINK hinzugefügt (DSP Blockset) etc. (der Trend geht auch in Richtung Animation). In Finance ist wohl am ehesten die Expansionsbestrebungen des MATLAB Universe zu bemerken - was Gegner als Führungsanspruch und den Anspruch, alle zu beglücken zu wollen, kritisieren, - die Vorstellung dieser Erweiterung stieß in Europa eher auf taube Ohren, Kopfschütteln etc.

MathWorks hat damit eine fast erfolgreiche Strukturbereinigung durchgeführt. Allerdings nur fast, denn das Problem einer vernünftigen Dokumentationsstruktur ist noch nicht gelöst. Die schriftliche Dokumentation zeichnet sich aneinandergereiht durch eine Dicke von fast zwei Metern aus, die Help-Funktion in MATLAB ist eher bescheiden - sehr zurückhaltend formuliert. Bei Toolboxen und SIMULINK ist man helpless.

In Diskussionen bei der MATLAB Conference war die durchaus vernünftige Überlegung durchzuhören, jegliches Help und alle Manuals gemeinsam in HTML zu formulieren; untermauert wird die Ernsthaftigkeit dieser Überlegung durch die Tatsache, daß auf der CD ROM Vol. V (Liefermedium für Workstation-Versionen) Kurzbeschreibungen der MATLAB Features und kurze Datenblätter über die Toolboxen in HTML-Format vorhanden sind. "The MathWorks provides you with online MATLAB reference documentation using the NCSA Mosaic document viewer", verspricht der Installation Guide für UNIX, und verbreitert sich in der Folge, wie ein Client für verschiedene Typen von Workstations vom MathWorks FTP Server geholt werden kann. Derzeit rechtfertigt der Aufwand den Gewinn in keiner Weise, und es wird noch lange dauern, bis jegliche derzeit gedruckte Dokumentation in HTML-Format direkt vom MathWorks Server erhältlich ist.

Bei der Diskussion über die Dokumentation (bei der MATLAB Conference in München) war auch ein gewisses Zögern vor einem raschem Umstieg auf HTML-Dokumentation zu hören, da u.a. viele Industriekunden (und nicht nur diese) mehrheitlich nach wie vor WWW, HTML, FTP, und Ähnliches einerseits aus Sicherheitsgründen ablehnen und andererseits entweder als Spielwiese für University Eggheads oder Source for Nice Erotic Pictures ansehen. In Zeiten wie diesen ist nichts unmöglich: da mit der Image Processing Toolbox diese Nice Pictures bearbeitet werden können, könnte der MathWorks WWW-Server der Zensur zum Opfer fallen (zumindest in Bayern).

Plattformen richten sich nach dem Bedarf, wobei ältere Plattformen relativ früh ausgeschieden werden ("some are in, some are out"); die in Abb. 1 durchgestrichenen Plattformen werden 1996 nicht weiter unterstützt, die unterstrichenen Plattformen kamen 1995 dazu).

Erfolg bringt auch erhöhtes Selbstvertrauen, und so ist es zu erklären, daß MATLAB nur eine einzige Version für Windows 3.1x, Windows 95, und Windows NT anbietet, mit "mitimplementiertem" Win32s. Viele andere Produkte denken ähnlich, aber mit unterschiedlichem Win32s (u.a. auch ACSL), was sogar Windows NT ins Schleudern bringt. Implementationen für Workstations werden als CPU Locked License (unlimited) und Floating Network License (limited und unlimited) angeboten, letztere mit dem FLEXlm, einem der gängigen Floating Network License Manager (Drittprodukt). Theoretisch reicht ein FLEXlm Dämon (schon diese Bezeichnung spricht Bände) für MATLAB und für andere, diesen Manager verwendenden Produkte - aber grün ist alle Theorie, und grau der License Manager tatsächliches Verhalten.

Die wesentlichen Weiterentwicklungen sind sicher das Graphical User Interface GUI (verfügbar, wird laufend verbessert), der MATLAB Compiler (teilweise verfügbar) und MATLAB 5 / SIMULINK 2 (MATLAB 5 ist schon länger angekündigt, Ähnlichkeiten mit Windows 95 drängen sich auf). Die Pläne (Versprechungen?) sind:

Die Grundidee von MATLAB als "Werkzeug für Alles" ist vielleicht überzogen. Dennoch bietet sich MATLAB auch in vielen neuen Bereichen an. Interessant sind z. B. die Möglichkeiten des Compilers: C-Programme in MATLAB entwickeln, MATLAB als Prototyping Tool verwenden, Programmierung über GUIs etc. Nicht zu vergessen sind auch jene Möglichkeiten, für die MATLAB nicht primär geschaffen wurde, die sich aber (nach einer Benutzerumfrage) als wesentlich herausstellen: die Verwendung als wissenschaftlicher Taschenrechner mit wesentlich erweiterten Features auf einem Windows-Environment, und die Verwendung als Plotprogramm im technisch-naturwissenschaftlichen, statistischen, biologischem usw. Bereich (zwei- und dreidimensional). MATLAB trägt auch diesen Anwendungen Rechnung und wird daher z. B. in den GUIs für MATLAB 5 das TEX-Format für Beschriftungen unterstützen. Auch sind (bezüglich des MATLAB-Compilers) Stimmen (u.a. an der TU Wien) nicht zu überhören, die monieren, "daß MATLAB auch die archaische FORTRAN-Ära, den Assembler C ignorierend, endlich terminieren kann".

Die Wahrheit ist wohl, daß MATLAB zwar sehr viel kann, aber für manche Aufgaben nur die zweitbeste oder drittbeste Lösung ist, und daß es derzeit überschätzt wird. Aber andererseits ist MATLAB allgemein verfügbar, es ist ein Tool für viele Aufgaben, und ein Benutzer kann rechnen, MATLAB in vielen Firmen und fast allen Universitäten und Forschungseinrichtungen anzutreffen. Wozu also mehrere Tools, wenn eines fast alles kann (wenn auch nicht immer am besten) ?

Nicht übersehen sollten die Benutzer allerdings Schwachstellen, die teilweise bewußt in Kauf genommen werden:


MATLAB und ACSL