2.1 Variablen und Zuweisung von Werten

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