Die vordefinierten Operatoren auf skalaren double-Ausdrücken sind in Tabelle 4.1 zusammengefaßt. Diese Operatoren sind eigentlich Matrixoperatoren, deren genaue Behandlung in 5 folgt. Der Grund dafür liegt darin, dass skalare Größen auch als Matrizen mit nur einem Element aufgefasst weren können. Damit bleibt hier die übliche Notation mit * und / erhalten.
Operatoren haben Prioritäten, die die Abarbeitung bestimmen. Operationen mit höherer Priorität werden zuerst ausgeführt.
Die Reihenfolge der Auswertung eines Ausdrucks kann durch Klammerung beeinflußt werden. In Klammern eingeschlossene (Teil-) Ausdrücke haben die höchste Priorität, d.h., sie werden auf jeden Fall zuerst ausgewertet. Bei verschachtelten Klammern werden die Ausdrücke im jeweils innersten Klammerpaar zuerst berechnet. Zur Klammerung verwendet MATLAB die sogenannten runden Klammern ().
Kommen in einem Ausdruck mehrere aufeinanderfolgende Verknüpfungen durch Operatoren mit gleicher Priorität vor, so werden sie von links nach rechts abgearbeitet, sofern nicht Klammern vorhanden sind, die etwas anderes vorschreiben; dies ist vor allem dann zu beachten, wenn nicht-assoziative Operatoren gleicher Priorität hintereinander folgen.
Operatoren können nur auf bereits definierte Variablen angewandt werden. Sie liegen immer in Form von Operatoren (+) oder in Form von Befehlen (plus) vor.
OPERATOR | OPERATION | BEFEHL | BEDEUTUNG | MATH | PRIORITÄT |
|
a^b |
mpower(a,b) | Exponentiation | 4 | |
+ |
+a |
uplus(a) | Unitäres Plus | 3 | |
- |
-a |
uminus(a) | Negation | 3 | |
* |
a*b |
mtimes(a,b) | Multiplikation | 2 | |
/ |
a/b |
mrdivide(a,b) | Division | 2 | |
\ |
a\b |
mldivide(a,b) | Linksdivision | 2 | |
+ |
a+b |
plus(a,b) | Addition | 1 | |
- |
a-b |
minus(a,b) | Subtraktion | 1 |
Eine herausragende Eigenschaft von MATLAB ist die einfache Möglichkeit der Verarbeitung ganzer Felder durch eine einzige Anweisung. Ähnlich wie in modernen Programmiersprachen Operatoren überladen werden können, lassen sich die meisten Operatoren und vordefinierten Funktionen in MATLAB ohne Notationsunterschied auf (ein- oder mehrdimensionale) Felder anwenden. Tabelle 4.2 enthält die vordefinierten Operatoren für Arrays am Beispiel von Zeilenvektoren. Die Anwendung auf mehrdimensionale Felder erfolgt analog.
Die hier vorgestellten Operatoren, die mit einem Punkt beginnen, werden komponentenweise auf Felder übertragen. Andere Operatoren haben unter Umständen bei Feldern eine andere Bedeutung.
Bei Anwendung auf Skalare haben sie natürlich die gleiche Bedeutung wie die Operatoren in 4.1. In diesem Fall ist also das Resultat von z.B. * und .* das selbe, da Skalare Matrizen mit einem Element sind. Bei + und - erübrigt sich eine Unterscheidung der Bedeutung überhaupt, was zur Folge hat, dass es keine .+ und .- Operatoren gibt.
Durch den Einsatz von Vektoroperatoren kann auf die Verwendung von Schleifen (wie sie etwa in C oder FORTRAN notwendig wären) sehr oft verzichtet werden, was die Lesbarkeit von MATLAB-Programmen fördert.
OPERATOR | OPERATION | BEFEHL | BEDEUTUNG | PRIO. |
|
a.^b |
power(a,b) | 4 | |
.* |
a.*b |
times(a,b) | 2 | |
./ |
a./b |
rdivide(a,b) | 2 | |
.\ |
a.\b |
ldivide(a,b) | 2 | |
|
a+b |
plus(a,b) | 1 | |
- |
a-b |
minus(a,b) | 1 |
In MATLAB werden die gleichen Operatoren verwendet, um Vektoren oder allgemein Arrays mit Skalarausdrücken zu verknüpfen. In Tabelle 4.3 findet man die vordefinierten Operatoren zur komponentenweisen Verknüpfung von Feldern und Skalaren.
OPERATOR | OPERATION | BEFEHL | BEDEUTUNG | PRIO. |
|
a.^c |
power(a,c) | 4 | |
.^ |
c.^a |
power(c,a) | 4 | |
.* |
a.*c |
times(a,c) | 2 | |
./ |
a./c |
rdivide(a,c) | 2 | |
./ |
c./a |
rdivide(c,a) | 2 | |
.\ |
a.\c |
ldivide(a,c) | 2 | |
.\ |
c.\a |
ldivide(c,a) | 2 | |
|
a+c |
plus(a,c) | 1 | |
- |
a-c |
minus(a,c) | 1 | |
|
a*c |
mtimes(a,c) | 2 | |
/ |
a/c |
mrdivide(a,c) | 2 | |
\ |
c\a |
mldivide(c,a) | 2 |
In 4.3 kommen in einigen wenigen Fällen die Array-Operatoren mit Punkten und die Matrix-Operatoren gleichwertig vor, da sie zum selben Ergebnis führen. Eine genaue Behandlung der Matrix-Operatoren im Sinne der linearen Algebra erfolgt in 5.
Winfried Kernbichler 2005-04-26