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.
|