In Matlab gibt es Restriktionen für die Bildung von Namen: Einem Buchstaben können weitere Buchstaben, Ziffern und der Unterstrich folgen. Andere Zeichen sind (sinnvollerweise) nicht erlaubt. Ein Name kann (in den neueren Matlab-Versionen) maximal 63 Zeichen enthalten (abzufragen mit der Function namelengthmax). Die Bezeichnungen der in Matlab verfügbaren Functions sind nicht geschützt. Der Benutzer kann also (versehentlich oder absichtlich) Variablen mit diesen Namen erzeugen, die dann Vorrang haben. Das nebenstehende Command Window gibt eine Kostprobe von diesen Möglichkeiten (in den ersten drei Zeilen), die man auf keinen Fall nutzen sollte. Dass sogar die Berechnung von cos1 funktioniert, obwohl sin und tan auf der rechten Seite wie die Functions (scheinbar) mit einem Argument aufgerufen werden, liegt an der Interpretation von Variablen in Matlab: Einfache Variablen sind auch Matrizen (mit nur einem Element), auf der rechten Seite wird also jeweils das erste Element der Matrizen sin bzw. cos angesprochen. Deshalb führt die Berechnung von cos2 zu einer Fehlerausschrift. Andererseits ist diese Verhaltensweise auch ein nicht zu unterschätzender Vorteil: Man braucht sich nicht bei jedem zu vergebenden Namen die Frage zu stellen, ob dieser vielleicht mit dem Namen einer der unglaublich vielen Matlab-Functions kollidiert. Aber: Vorsicht bei vorübergehend unbeaufsichtigten Keyboards während einer Matlab-Session: Ein Scherzbold kann blitzschnell einmal pi=9 eingeben. Das clear all am Anfang eines Matlab-Scripts schützt in aller Regel vor solchen Scherzen. |
Kollision eines Dateinamens mit dem Namen einer Variablen Eine wahrlich nicht seltene Strategie in Matlab ist, mit Rechnungen im Command Window zu beginnen, um sich dann doch zu entschließen, ein Script zu erzeugen. Das Command Window rechts zeigt den Anfang einer solchen Sitzung (Flächenberechnung für einen Kreis), und das folgende Bild die Wiederholung mit einem Script, wobei der Wert für r geändert wurde.
Das Script wird gestartet (z. B. mit Debug | Save and Run), wobei es (vermeintlich sinnvollerweise) unter dem Dateinamen Flaeche.m abgespeichert wird. Das Ergebnis (siehe Command Window rechts) entspricht nicht den Erwartungen: Die (vermeintliche) Ausgabe der Fläche in Zeile 3 des Scripts ist falsch. Die Umbenennung der Variablen in Zeile 3 und ein Neustart ...
... bringt das gleiche (vermeintlich falsche) Ergebnis (Command Window rechts). Weil die ausgegebene Variable aber immer noch Flaeche heißt (und nicht A wie im geänderten Script), wird klar, was hier passiert ist: Obwohl das Script über "Save and Run" gestartet worden ist, wurde es nicht abgearbeitet, weil immer noch die im (Command Window erzeugte) Variable Flaeche existiert, die Vorrang hat vor dem Script mit dem Namen Flaeche.m. Auch das clear all in der ersten Zeile des Scripts nützt natürlich nichts, wenn das Script gar nicht abgearbeitet wird. Mit einigen Eingaben direkt in das Command Window wird das deutlich:
Wenn in das Command Window nur Flaeche eingegeben wird, reagiert Matlab mit der Ausgabe des Wertes der Variablen Flaeche. Wenn nun zunächst clear all eingegeben wird (löscht alle Variablen) und danach noch einmal Flaeche eingegeben wird, existiert eine Variable dieses Namens nicht mehr und Matlab sucht nach einem Script Flaeche.m, findet es und arbeitet es ab. Es ist sicher sinnvoll, sich die folgende Modellvorstellung von der Arbeit von Matlab klar zu machen. |
So arbeitet Matlab:
|
Keine Sonderzeichen in Dateinamen! Das oben demonstrierte Beispiel (Flächenberechnung) hätte man durchaus noch etwas verwirrender anlegen können, wenn man die 2. Variante des Scripts (um die erste nicht zu überschreiben) als Nach der oben unter "So arbeitet Matlab" gegebenen Modellvorstellung ist klar, was passiert ist: Der Start eines Matlab-Scripts mit dem Namen Flaeche-2.m aus dem Editor heraus ist gleichwertig mit dem Eingeben von Flaeche-2 in das Command Window. Dies wird als arithmetischer Ausdruck interpretiert, eine Variable Flaeche ist bekannt, also kann gerechnet und ausgegeben werden (und das Script Dass Fehler dieser Art recht beliebt sind, hat der Autor dieser Zeilen mit seinen Studenten immer wieder erfahren, weil den Dateien über ihren Namen gern auch Datum-Informationen beigefügt werden. Und weil Windows fast jede Art von Dateibezeichnung gestattet, ist auch der Dateiname erlaubt, der in der Kopfleiste des folgenden Editor-Fensters zu sehen ist (vergeben am 27. Mai 2006). Dass die Antwort im Command Window nicht das Ergebnis der sin-Berechnung ist, kann man sofort erkennen:
|