Subsections


2.5 Spezielle Zeichen - Special Characters

Um eine Programmiersprache wie MATLAB korrekt benutzen zu können, muss man die Bedeutung von speziellen Zeichen kennen.


2.5.1 Klammern


2.5.1.1 Runde Klammern - Parenthesis

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)


2.5.1.2 Eckige Klammern - Brackets

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)


2.5.1.3 Geschwungene Klammern - Curly Braces

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]


2.5.2 Punkt - Dot

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.5 \cdot 10^{-5}$ 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.'


2.5.3 Komma und Strichpunkt - Comma and Semicolon

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,4
liefert 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.
Die letzte Fehlermitteilung beruht darauf, dass das Feldelement 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];


2.5.4 Doppelpunkt - Colon

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]


2.5.5 Hochkomma - Quotation Mark

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 transpose
Diese Anwendung ist ident mit den Befehlen ctranspose, bzw. mit transpose. Details zum Bearbeiten von Matrizen findet man im Abschnitt 5.


2.5.6 Prozent und Rufzeichen - Percent and Exclamation Point

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-2004
kann 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öße
wobei 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      % Verschieben
Das 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).


2.5.7 Operatoren

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