Um eine Programmiersprache wie MATLAB korrekt benutzen zu können, muss man die Bedeutung von speziellen Zeichen kennen.
Runde Klammern erfüllen in MATLAB im Wesentlichen eine Abgrenzungsfunktion zwischen arithmetischen Ausdrücken (Gliederung), zwischen Feldname und Indices (Indizierung), bzw. zwischen Funktionsnamen und Argumenten. Einige Beispiele sind in folgender Tabelle zusammengefasst.
KLAMMER | BEDEUTUNG | BEISPIEL |
() |
Gliederung arithmetischer Ausdrücke | 3*(a+b) |
Indizierung von Feldern | a(3) |
|
Ein Element (Zeile, Spalte) | a(1,3) |
|
Mehrere Elemente | a([1,3,5]) |
|
Abgrenzung von Argumenten | sin(a) |
|
Übergabeparameter an Funktionen | plot(x,y1,x,y2) |
|
plus(3,4) |
Mit Hilfe von eckigen Klammern werden in MATLAB Vektoren und Matrizen erzeugt bzw. zusammengefügt. Ausserdem werden sie bei der Rückgabe von Funktionswerten verwendet, wenn es mehrere Ergebnisse gibt. Einige Beispiele sind in folgender Tabelle zusammengefasst.
KLAMMER | BEDEUTUNG | BEISPIEL |
[] |
Erzeugen von Vektoren | a=[1,2,3,4,5] |
(auch ohne Beistrich) | a=[1 2 3 4 5] |
|
Bereich (von - bis) | a=[1:5] |
|
Schrittweite | b=[1:2:5] |
|
Leeres Feld | c=[] |
|
Erzeugung von Matrizen | [1,2,3;4,5,6] |
|
Nebeneinander | [a,a] |
|
Übereinander | [a;a] |
|
Zeichenketten | ['ich',' ','bin'] |
|
Mehrere Ausgabewerte | [a,b,c]=func(x,y,z) |
Geschwungene Klammern werden in MATLAB für die Erzeugung und Indizierung von Zellen verwendet. Zellen sind Felder, die an jeder Stelle beliebige Elemete (Felder, Zeichenketten, Strukturen) und nicht nur Skalare enthalten können.
KLAMMER | BEDEUTUNG | BEISPIEL |
{} |
Erzeugen von Zellen | z={[1:3],'string'} |
Leere Zelle | l={} |
|
Zugriff auf Zellelemente | a=z{1} |
|
Zuweisung | z{3}=[1,2;3,4] |
Punkte haben eine vielfältige Bedeutung in MATLAB, wobei die wichtigste wohl der Dezimalpunkt ist:
ZEICHEN | BEDEUTUNG | BEISPIEL |
. |
Dezimalpunkt | p=3.14 |
auch in Fließkommazahlen | 1.5e-5 |
|
. |
Zugriff auf Strukturelemente | s.f |
s.('f') |
||
.. |
Übergeordnetes Verzeichnis | cd .. |
... |
Fortsetzungszeile | m=[1,2; ... |
3,4] |
||
.* ./ .\ .^ |
Operator für alle Elemente | [1,2,3].*[4,5,6] |
z.B.: Quadrieren | [1,2,3].^2 |
|
.' |
Transponieren 2.5.5 | M.' |
Komma und Strichpunkt fungieren im Wesentlichen als Trennzeichen:
ZEICHEN | BEDEUTUNG | BEISPIEL |
, |
Trennzeichen - Spalte | [1,2,3] |
; |
Trennzeichen - Zeile | [1,2,3;4,5,6] |
Spaltenvektor | [1;2;3] |
|
, |
Trennzeichen - Index | a(3,4) |
höhere Dimension | a(m,n,o,p,q) |
|
, |
Trennzeichen - Funktion | plus(3,4) |
auch bei Output | [a,b]=func(x,y) |
|
, |
Trennzeichen - Kommando | a=[1,2], b=5 |
mit Ausgabe | a=3,b=a,c=a |
|
; |
Trennzeichen - Kommando | a=[1,2]; b=5; |
ohne Ausgabe | a=3;b=a;c=a; |
Hier gibt es eine interessante Fehlermöglichkeit, nämlich die Verwechslung von
.
(Punkt) mit ,
(Komma) als Dezimalzeichen. Das MATLAB-Kommando
a = 3,4liefert keine Fehlermitteilung, sondern setzt
a=3
, zeigt es wegen des
Kommas am Schirm an, setzt die Variable ans=4
und zeigt sie ebenfalls
am Schirm an.
Anmerkung: Die Variable ans
wird immer für das letzte
Resultat verwendet, wenn keine explizite Zuweisung erfolgt.
MATLAB kann in diesem Fall keine Fehlermitteilung anzeigen, da es sich um eine korrekte Eingabe handelt, die ''nur'' etwas anderes berechnet, als sich der Benutzer vielleicht erwartet.
Fehler, die sich auch öfters ergeben, sind hier mit Fehlermitteilungen angeführt:
FEHLER | FEHLERMELDUNG |
a = [1,2;3,4 |
Error: '']'' expected, ''End of Input'' found. |
a = [1,2;3] |
Error using ==> vertcat All rows in the bracketed expression must have the same number of columns. |
a(2,2)
fehlt, und ein Feld in allen Positionen besetzt sein muss. Will man
markieren, dass an dieser Stelle der Matrix eigentlich kein ''richtiger''
Wert steht, kann man sich der Zahl nan
(Not a Number)
bedienen. Richtig müsste es also heissen:
a = [1, 2; 3, 4]; b = [1, 2; 3, nan];
Die Doppelpunktnotation ist eine der mächtigsten Bestandteile von MATLAB. Sie kann einerseits zur Konstruktion von Vektoren (Tab.3.2), aber auch zum Zugriff auf Teile von Matrizen (Index, 3.6) verwendet werden. Alle Details dazu findet man im Abschnitt 3.4.2. Hier werden nur elementare Beispiele angeführt:
m = [1:5] % [1,2,3,4,5] m = [1:2:5] % [1,3,5] m = [5:-1:1] % [5,4,3,2,1] x = [0:0.1:2] % [0,0.1,0.2, ...., 1.9,2.0]
Das Hochkomma wird zur Definition von Zeichenketten (Strings) verwendet:
str1 = 'Winfried'; str2 = 'Kernbichler'; str3 = 'Resultat: '; str4 = num2str( sin(1) ); disp([str3,str4])Details zu diesen Beispielen findet man im Abschnitt 9. Die hier verwendeten Befehle num2str und disp dienen zur Umwandlung von Zahlen in Zeichenketten und zur Darstellung von Ergebnissen im MATLAB-Kommandofenster.
Eine weitere Verwendung findet das Hochkomma als Operator für das
Transponieren und das komplex konjugierte Transponieren von Matrizen. Wenn
M
eine Matrix ist, kann man den Operator wie folgt anwenden:
M1 = M.' % transpose M2 = M' % conjugate complex transposeDiese Anwendung ist ident mit den Befehlen ctranspose, bzw. mit transpose. Details zum Bearbeiten von Matrizen findet man im Abschnitt 5.
Mit Hilfe des Prozentzeichens %
können Kommentare in MATLAB-Programme eingefügt werden. Macht man das am
Anfang des Files, z.B. wie
% Program: func % Aufruf: [a,b] = fucn(x,y) % Beschreibung ...... % Input: x: Beschreibung % y: .... % Output: a: .... % b: .... % Autor: Winfried Kernbichler % Datum: 01-03-2004kann man diese Kommentare als Programmdokumentation verwenden, die mit dem Befehl help einfach betrachtet werden kann.
In weiterer Folge kann man dann Programmzeilen kommentieren,
% Abstandsberechnung d = sqrt(x.^2 + y.^2); [ds,ind] = sort(d); % Sortierung nach Größewobei dies in eigenen Zeilen oder am Ende von Zeilen gemacht werden kann.
Mit Hilfe des Rufzeichens können Systembefehle an das Betriebssystem übergeben werden, die dann ausserhalb von MATLAB abgearbeitet werden:
!cp file1 file2 % Kopieren !mv file1 file2 % VerschiebenDas Rufzeichen ist eine Kurzform des MATLAB-Befehls system, der auch die Rückgabe der Ergebnisse auf Variable ermöglicht.
Einige wichtige Systembefehle sind aber auch direkt in MATLAB vorhanden:
BEFEHL | BEDEUTUNG |
dir | Verzeichnis Listing. |
pwd | Anzeige des aktuellen Verzeichnisses. |
cd | Wechsel des Verzeichnisses. |
mkdir | Anlegen von Verzeichnissen. |
rmdir | Löschen von Verzeichnissen. |
delete | Löschen von Files. |
copyfile | Kopieren von Files. |
movefile | Verschieben von Files. |
fileattrib | Setzen von Fileattributen (Rechte). |
Eine Reihe von Zeichen sind für Operatoren reserviert, die hier nur kurz angeführt werden sollen. Details findet man in den jeweiligen Verweisen:
TYP | VERWEIS | ZEICHEN |
Arithmetisch - Matrizen | 5 | + - *
/ \ ^ |
Arithmetisch - Elemente | 4 | + - .*
./ .\ .^ |
Transponieren | 5 | ' .' |
Vergleich | 4.2 | == ~= <
<= > >= |
Logisch | 4.3 | ~ & | |
Winfried Kernbichler 2005-04-26