Neben der Möglichkeit MATLAB als eine Art überdimensionalen Taschenrechner zu benutzen
3*(5 + 8) 3 + sin(pi/3)kann man Ergebnisse auch benannten Größen (Variablen) zuweisen. Das Zeichen für Zuweisung (assignment) ist das = Zeichen. Wird kein
=
verwendet, wird die Rechnung durchgeführt und das
Ergebnis auf der Variablen ans
(answer) gespeichert.
Gespeicherte Größen
können in der Folge für weitere Berechnungen herangezogen werden.
a = 3 * (5 + 8) a = (a - 1) / 4 b = sin(0.5) res_1 = (b + 1) / b - 1; % Was ist der Unterschied res_2 = (b + 1) / (b - 1); % zwischen den zwei Zeilen?Wichtig dabei ist, dass Größen die rechts vom
=
Zeichen stehen
durch vorige Berechnungen bekannt sind und gültige Operatoren (z.B.:
+
, -
, ...), bzw. gültige Programmnamen (z.B.: sin
)
enthalten.
Wird ein Name wieder auf der linken Seite einer Zuweisung verwendet (a
in der zweiten Zeile) wird zuerst die rechte Seite mit dem alten Wert von
a
berechnet und dann dieser Wert der Variablen zugewiesen. Die alte
Bedeutung geht dabei dann verloren.
Der Strichpunkt am Ende einer Programmanweisung regelt nur die Ausgabe am Schirm und hat nichts mit der Berechnung an sich zu tun.
Insgesamt muss natürlich auch die Sprachsyntax (Regelwerk, Grammatik) korrekt sein. Insbesonders müssen alle Klammern geschlossen sein und Operatoren und Funktionen richtig verwendet werden.
Ein riesiger Vorteil von MATLAB ist, dass viele Befehle direkt auf ganze Felder bzw. Matrizen angewandt werden können.
So berechnet der Befehl
s = sin( [0.0, 0.1, 0.2, 0.3] )den Sinus aller vier Werte und speichert ihn in der Variablen
s
. Zusammen mit der entsprechenden Syntax für die Konstruktion von
Feldern ermöglicht dies eine sehr elegante und auch effiziente
Programmierung:
x = [-1:0.1:1]; y_1 = sinh(x); y_2 = cosh(x); plot(x,y_1,x,y_2)
Einige einfache Fehler und entsprechende Fehlermitteilungen von MATLAB, die immer in der Farbe rot im Kommando-Fenster ausgegeben werden, finden sich hier:
FEHLER | FEHLERMELDUNG |
a = 3+ |
Error: Incomplete or misformed expression or statement. |
a = (3+4 |
Error: Incomplete or misformed expression or statement. |
a = sin() |
Error: Error using ==> sin Not enough input arguments. |
sin(1,2,3) |
Error using ==> sin Too many input arguments. |
sin(1] |
Error: Unbalanced or misused parentheses or brackets. |
a = six(1) |
Undefined command/function ''six''. |
s = 'Winfried |
Error: Missing variable or function. |
3a = sin(1) |
Error: Missing Matlab operator. |
3*a = sin(1) |
Error: The expression to the left of the equals sign is not a valid target for an assignment. |
Die letzte Fehlermitteilung bezieht sich auf die Verwendung eines falschen Variablennamens.
Treten Fehler in MATLAB-Skripts oder MATLAB-Funktionen auf, wird zusätzlich zur Fehlermitteilung auch die Position im File angegeben. Dies sollte die Fehlersuche in Programmen wesentlich erleichtern.
Gültige Variablennamen in MATLAB müssen mit einem
Buchstaben beginnen und dürfen nur Buchstaben, Zahlen und als einziges
Sonderzeichen den Untersstrich _
verwenden. Groß- und Kleinbuchstaben
werden zumindest unter LINUX unterschieden.
Die Verwendung von Umlauten ist unter WINDOWS möglich, sollte aber vermieden werden, da solche Programme unter LINUX dann nicht funktionieren. Äusserst ungeschickt ist es auch Namen von MATLAB-Funktionen und vordefinierten Konstanten 2.2 zu verwenden.
GÜLTIG | UNGÜLTIG | UNGESCHICKT |
a a3 a_3 |
3a 3_a a* |
Maß ö3 ö_3 |
Sin SIN MAX |
Sin( Sin() Max+ |
sin max abs |
k l m |
"k" k! k# |
i j pi |
Resultat_1 |
Resultat[1] |
Lösung |
Werden MATLAB-Befehle als Namen für Variablen verwendet, schafft man
ein Problem dadurch, weil diese neue Bedeutung in der Hirachie höher
liegt als die ursprüngliche Bedeutung, d.h., dass die neue Bedeutung
Vorrang hat. Schreibt man z.B. sin=5
, verliert sin
die
Bedeutung als Sinus-Funktion und liefert immer den Wert 5
.
Manchmal ist die Gefahr, dass dies unendeckt bleibt sehr groß:
sin(1)
liefert dann einfach 5
statt 0.8415
Manchmal treten Fehler auf:
sin(2)
Error: Index exceeds matrix dimensions.
sin(pi)
Error: Subscript indices must either be real
positive integers or logicals.
Behoben werden kann das Problem nur durch das Löschen der Variablen (clear):
clear sin
oder clear('sin')
Gefährlich ist auch folgender Fall: Durch den Befehl i=1
verliert die Variable i
ihre Bedeutung als imaginäre Konstante
und 3+2*i
liefert den falschen Wert 5
.
Diejenigen Fehler, die eine Beendigung des Programms zur Folge haben und die damit eine Error-Meldung liefern, sind grundsätzlich leichter zu finden und zu beheben als Fehler, die den Programmablauf nicht stoppen, sondern nur zur Folge haben, dass falsch weiter gerechnet wird.
Winfried Kernbichler 2005-04-26