Nächste Seite: Über dieses Dokument ...
Aufwärts: FAQ Diverse Fragen
Vorherige Seite: FAQ Diverse Fragen
Im Verlauf des Unterrichtes bei meinen Studenten, sowie
allgemein beim Arbeiten mit MATLAB bei meinen Kollegen und mir selbst,
sind gewisse Fehler beim Aufrufen von MATLAB
häufiger aufgetreten als andere.
Als allgemeine Hinweise werden einige davon hier aufgeführt.
Seltener aufgetretene Fehler, die aber aufgrund
von wenig aussagekräftigen Fehlermeldungen schwer zu korrigieren waren,
haben in dieser Liste ebenfalls ihren Platz gefunden.
- A
- Typische Anfängerfehler,
auch bei Fortgeschrittenen vorkommend
- -
- ??? Undefined function or variable 'skriptname'
Häufig ein Tippfehler beim Namen oder auch nur ein
Fehler in der Gross- Kleinschreibung. (MATLAB ist empfindlich
auf Gross- Kleinschreibung!)
- -
- ??? Undefined function or variable 'skriptname'
- trotz getestetem,richtigem Namen
MATLAB betrachtet ab Version R2006a nicht mehr alle Files mit Endung .m im
aktiven subdirectory als Bestandteil des Suchbereiches.
Abhilfe: Den MATLAB Such-Pfad mit set path anpassen,
so dass das gesamte Subdirectory,
in welchen das File steht, dazugenommen wird.
- P
- Verdacht auf vergessene Punkt-Operatoren
- -
- mtimes: Inner matrix dimensions must agree
Dies ist der klare Spitzenreiter unter den MATLAB Fehlermeldungen.
In den meisten Fällen wollte man Vektoren punktweise multiplizieren
und hat aus Versehen den normalen Operator statt
den Punkt-Operator verwendet.
Falls man doch Matizenoperationen ausführen wollte, muss man mit
dem Befehl whos die Dimensionen der beteiligten Matrizen prüfen.
Gelegentlich passieren einem Verwechslungen zwischen Breite und
Höhe von Rechtecksmatrizen, dann hilft eventuell das Transponieren.
- -
- mrdivide: Matrix dimensions must agree
Bei vielen Fehlermeldungen dieses Typs wurde ebenfalls ein
normaler Operator statt dem Punkt-Operator verwendet
- -
- mpower: Matrix must be square
Häufig war auch in diesem Fall eine elementweise Potenzierung
gemeint, aber nur der normale Operator statt dem Punkt-Operator
geschrieben worden. (Die Fälle bei denen man eine Matrix
im Sinne der Matrix-Multiplikation potenzieren will sind eher selten. Dann
muss die Matrix quadratisch sein, wie der Diagnostik-Hinweis sagt.)
- M
- Inkompatible Matrix-Dimensionen
- -
- plus, minus: Matrix dimensions must agree
Für Addition und Subtraktion müssen die Matrix-Dimensionen exakt
zusammenpassen. Auch hier sollte man
mit
dem Befehl whos die Dimensionen der beteiligten Matrizen prüfen.
Gelegentlich passieren einem Verwechslungen zwischen Breite und
Höhe von Rechtecksmatrizen, dann hilft eventuell das Transponieren.
- D
- Fehler, die keine auswertbare Diagnostik liefern
- -
- Falscher Skript-Name
Ein recht schwierig zu interpretierender Fehler passierte
durch das Vergeben eines Skript-Namens, der von MATLAB
anders interpretiert wurde. Der Name hiess ``40-7.m'' zum Lösen der
Übung 40.7.
Es kam kein Plot und kein Zwischenoutput, nur immer ans = 33.
Der MATLAB eigene Editor hat zwar den Namen geschluckt, die Ausführung
hat aber nur die Berechnungs-Aufgabe 40-7 gelöst
und gar kein File gesucht.
Fazit: Skript- und Function-Namen müssen mit einem
Buchstaben anfangen und dürfen
keine Bindestriche (= Minuszeichen) enthalten!
- -
- ??? The function, script, or class skriptname
cannot be indexed using {} or . indexing.
Diese Diagnostik erscheint beim ganz einfachen und bei Anfängern häufigen
Fehler, in einem Skript-Aufruf das ``.m'' am Ende des Filenamens auch
noch einzugeben.
Fazit: Skript-Aufruf immer ohne die Endung ``.m'' !
- -
- Unverständliche Fehlerdiagnostik bei
Berechnungen mit komplexen Zahlen
Nach langem Suchen fand ich heraus, dass ich vorher die Schleifenvariable ``i''
verwendet hatte und diese nicht mehr die Imaginäre Einheit enthielt.
Fazit: Variablen ``i'' und ``j'' nie selbst benützen, sondern
reserviert lassen für komplexe Zahlen!
Fazit: Immer wieder Aufräumen mit dem clear-Befehl!
- P
- Parameter-Übergabe bei Funktionen
- -
- Input argument ... is undefined
Meist ein Fehler bei der Anzahl, der Abfolge oder der Schreibweise
von Eingabe-Variablen in der Parameterliste bei einem Funktions-Aufruf.
Kontrollmöglichkeiten ergeben sich mit dem Aufruf
help funktionsname, weil dies die genaue Signatur (= Aufruf und
zugehörige Parameter angibt).
Das Ausnützen dieser help-Funktion
sei allen MATLAB-Anwendern für ihre selbst programmierten
Funktionen dringend empfohlen! Es braucht dazu nur einige Kommentarzeilen
vor der ersten ausführbaren Zeile in der Funktion mit der Kurzberschreibung
der Funktion und von deren Signatur.
- -
- Output argument ... not assigned during call
Im ausführenden Teil einer selbst programmierten Funktion
fehlt die Zuweisung des Wertes an die in der Startzeile
deklarierten Ausgabe-Variablen.
Nächste Seite: Über dieses Dokument ...
Aufwärts: FAQ Diverse Fragen
Vorherige Seite: FAQ Diverse Fragen
2018-09-15