Contents

Arithmetische Operationen und Variable

% Ausdrücke werden direkt ausgewertet. Dabei gibt es keinen speziellen
% ganzzahligen Datentyp, sondern nur reelle (bzw. komplexe, siehe unten):
265/176

% Dieses Ergebnis ist erst mal nirgends gespeichert, nur auf dem Bildschirm
% zu sehen. Wenn man später darauf zurückgreifen will, speichert man es am
% besten in einer Variablen.
x=265/176

% Dies geschieht durch einfache Wertzuweisung. Die zugehörige Variable wird
% mit der Wertzuweisung definiert und deklariert. Der Wert ist nun unter
% 'x' abrufbar:
x

% Voreinstellung in Matlab bei der Datenausgabe ist (in dieser Ausgabeform)
% vier Nachkommastellen. Intern ist die Genauigkeit höher. In der Ausgabe
% kann man dies durch 'format long' umstellen, bzw. durch 'format short'
% oder 'format' wieder zurückstellen:

format long;
x
format short;
x

% Reichen die eine Vorkomma und die vier Nachkommastellen nicht aus, geht
% Matlab automatisch zu einer Gleitpunktdarstellung über:

17/675481754
% Will man Bildschirmoutput unterdrücken, schließt man die entsprechende
% Zeile mit einem Strichpunkt ab:

y=35*12;
% Nun ist y berechnet, bekannt und kann in folgenden Ausdrücken verwendet
% werden. Es hat aber keinen Output bei der Berechnung von y gegeben.

% Inzwischen sind zwei Variable bekannt. Mit diesen kann man nun rechnen:

z=x*y

% Selbstverständlich können die Ausdrücke auch komplexer sein:

z=1.45 + (2/6.4 - 1.01)/3
% Damit haben wir auch z überschrieben. Die alte Information in z ist nicht
% mehr vorhanden!
% Man kann die alte Information aber auch bei der Berechnung der neuen
% verwenden:

z=2*z

% Bei den Ausdrücken gelten die üblichen arithmetischen Pioritäten:

z=15 + 2*3

% und folgender Ausdruck sind natürlich nicht identisch:

z=(15 + 2)*3

% Potenzen oder beispielsweise aufeinanderfolgende Divisionen werden von
% links nach recht ausgewertet:

2^3^4
% entspricht
(2^3)^4
% Will man jedoch 3 hoch 4 zuerst ausgewertet haben, muss man klammern:
2^(3^4)
% entspricht
2^81

% Ich empfehle dringend, im Sinne der Lesbarkeit eines Programmes, mit
% Klammern nicht zu sparen!

% Variablennamen: max. 31 Zeichen: Buchstaben, Zahlen, Unterstriche. Es
% wird zwischen Groß- und Kleinschreibung unterschieden:
Z=5;
Z
z

% Es gibt vordefinierte Variable:
pi

% Man kann diese Namen für etwas anderes verwenden, sollte das aber nicht
% tun:
pi=7;
pi

% Durch den clear-Befehl wird auf den ursprünglichen Zustand zurückgesetzt,
% d.h. pi ist wieder pi, Z gibts nicht mehr:
clear pi;
clear Z;
pi

% Der Versuch jetzt Z auszugeben würde zu einer Fehlermeldung und dem
% Abbruch dieses Programms führen. Deshalb hier auskommentiert:
%Z

% Eine weitere Vorbelegung besteht für i und j als komplexe Einheit. Dies
% ist etwas unglücklich, da der geübte Programmierer i und j gerne als
% Laufvariable benutzt.

i

% Außerdem hat Matlab die Eigenschaft, dass es automatisch komplex weiter
% rechnet, wenn (evtl. aus Versehen) z.B. die Wurzel aus etwas negativem
% gezogen wird. Im Normalfall hat man es nicht gleichzeitig mit reellen und
% komplexen Größen zu tun, so dass man an dieser stelle lieber eine
% Fehlermeldung hätte.

sqrt(-4)
ans =

    1.5057


x =

    1.5057


x =

    1.5057


x =

   1.505681818181818


x =

    1.5057


ans =

   2.5167e-08


z =

  632.3864


z =

    1.2175


z =

    2.4350


z =

    21


z =

    51


ans =

        4096


ans =

        4096


ans =

   2.4179e+24


ans =

   2.4179e+24


Z =

     5


z =

    51


ans =

    3.1416


pi =

     7


ans =

    3.1416


ans =

        0 + 1.0000i


ans =

        0 + 2.0000i

Dateneingabe

% Im Prinzip kennt Matlab nur Matrizen. Einfache Zahlen sind demnach
% 1x1-Matrizen. Bei der Dateneingabe ist zu berücksichtigen, dass sie
% zeilenorientiert ist. D.h. einzelne Elemente einer Zeile werden durch ein
% Leerzeichen voneinander getrennt. Ein Strichpunkt beendet eine Zeile. Die
% ganze Matrix ist durch eckige Klammern eingeschlossen.

% Folgendes ergibt demnach einen 1x3 Zeilenvektor:
b=[1 2 3]

% während folgendes einen 3x1 Spaltenvektor ergibt:
c=[1; 2; 3]

% Ist man bzgl. der Größe einer Matrix nicht sicher, so kann man über size
% abfragen:
size(b)

% Ist man sicher, dass die Matrix eigentlich ein Vektor ist, so kann man
% auch length benutzen. Allerdings sieht man keinen Unterschied zwischen
% Zeilen- und Spaltenvektor:
length(b)
length(c)

% Eine echte Matrix ist dann wie folgt einzugeben:
A=[1 2 3; 4 5 6; 7 8 9]

% Mit diesen Daten kann nun wie bekannt gerechnet werden:
A*c
b*A

% Man ist selbst dafür verantwortlich, dass die Dimensionen passen.
% Ansonsten gibt es eine Fehlermeldung. Hier auskommentiert, da das
% Programm sonst abbricht.
%A*b
%b+c

% Transposition erfolgt durch Hochkomma:
b'
A*b'
b'+c

% Zahl mal Vektor oder Matrix wird wie üblich berechnet:
3*b
5*A

% Es gibt jedoch auch die Variante der komponentenweise Verknüpfung, z.B.
% wie beim bekannten Skalarprodukt. Spätestens bei der Graphik werden wir
% dies dringend brauchen. Diese Art der Verknüpfung erfolgt durch einen
% Punkt vor dem Operator (+,-,*,/). Allerdings müssen auch hier die
% Matrixdimensionen passen.

%b.*c      % passt nicht!
b'.*c

% Vergleichen Sie:
A*A
A.*A

% Ersteres ist das mathematische Matrix-Matrix-Produkt. Zweiteres ist die
% komponentenweise Verknüpfung, in diesem Fall also die Quadrierung der
% einzelnen Elemente.

% Es gibt einige vordefinierte Matrizen. So erzeugt zeros(n,m) eine nxm
% Nullmatrix, ones(n,m) eine nxm-Matrix mit lauter Einsen, eye(n) die nxn
% Einheitsmatrix, diag(v) liefert eine (quadratische) Diagonalmatrix, die in der
% Diagonalen die Elemente des Vektors v trägt und auch dessen Dimension zum
% Quadrat erbt.
zeros(4,3)
ones(2,5)
eye(4)
diag(b)
diag(c)

% Man kann auf einzelne Matrix-Elemente zugreifen:
A(2,3)

% Man kann auch auf einzelne Spalten oder Zeilen zugreifen. Erst die zweite
% Spalte:
A(:,2)

% Dann die dritte Zeile:
A(3,:)

% Ein besonderes Feature ist die dynamische Erweiterung. Im Moment ist
% unser A eine 3x3-Matrix. Ein Zugriff auf A(3,4) wird einen Fehler
% erzeugen:

%A(3,4)    % Fehler!

% Allerdings kann man A(3,4) einen Wert zuweisen. Man verändert damit
% dynamisch die Größe der Matrix, und zwar so, dass sie rechteckig bleibt.
% In diesem Fall wird eine vierte Spalte erzeugt, es bleibt aber bei drei
% Zeilen. Nicht angesprochene neue Matrixelemente werden auf Null gesetzt.
size(A)
A(3,4)=18;
size(A)
A

% Man kann auch einen ganzen Vektor als neue Zeile/Spalte hinzufügen:
A(:,5)=c

% Dabei kann man auch vorhandenes überschreiben:
A(:,4)=c

% Auch hier gilt: Die Dimensionen müssen passen:

%A(4,:)=b      % Fehler!

% In Matlab gibt es eine ganze Reihe von vordefinierten Funktionen. Z.B.
% die Matrixinversion inv(), das Lösen linearer Gleichungsysteme A*x=c
% durch A\c, die Determinante det() ...
clear A
A=rand(3,3) % erzeugt eine zufällige 3x3 Matrix
x=A\c
det(A)
rank(A)
inv(A)
%Kontrolle:
inv(A)*c-x % sollte der Nullvektor rauskommen, zumindest numerisch

% Oder z.B. Eigenwerte und Eigenvektoren. Z.B. listet der Befehl eig(A) die
% Eigenwerte von A als Vektor auf. Durch folgenden Befehl werden die
% Eigenwerte gleich in einem Spaltenvektor w gespeichert:
w=eig(A)



% Generelle Hilfe erhält man durch help. Hilfe zu einem Befehl z.B. durch
% help inv. Durch help wurd eine ganze Liste von Unterpunkten angezeigt.
% Z.B. help elmat zeigt einige der Matrix-Funktionen.

% Eine andere Möglichkeit ist das Aufschlagen der Dokumentation. Manchmal
% kann man am Ende einer help-Anzeige direkt anklicken. Ansonsten rufe man
% im Matlab-Fenster help --> Matlab help oder Product help auf.
b =

     1     2     3


c =

     1
     2
     3


ans =

     1     3


ans =

     3


ans =

     3


A =

     1     2     3
     4     5     6
     7     8     9


ans =

    14
    32
    50


ans =

    30    36    42


ans =

     1
     2
     3


ans =

    14
    32
    50


ans =

     2
     4
     6


ans =

     3     6     9


ans =

     5    10    15
    20    25    30
    35    40    45


ans =

     1
     4
     9


ans =

    30    36    42
    66    81    96
   102   126   150


ans =

     1     4     9
    16    25    36
    49    64    81


ans =

     0     0     0
     0     0     0
     0     0     0
     0     0     0


ans =

     1     1     1     1     1
     1     1     1     1     1


ans =

     1     0     0     0
     0     1     0     0
     0     0     1     0
     0     0     0     1


ans =

     1     0     0
     0     2     0
     0     0     3


ans =

     1     0     0
     0     2     0
     0     0     3


ans =

     6


ans =

     2
     5
     8


ans =

     7     8     9


ans =

     3     3


ans =

     3     4


A =

     1     2     3     0
     4     5     6     0
     7     8     9    18


A =

     1     2     3     0     1
     4     5     6     0     2
     7     8     9    18     3


A =

     1     2     3     1     1
     4     5     6     2     2
     7     8     9     3     3


A =

    0.7922    0.0357    0.6787
    0.9595    0.8491    0.7577
    0.6557    0.9340    0.7431


x =

   -3.1496
    1.3840
    5.0767


ans =

    0.1618


ans =

     3


ans =

   -0.4740    3.7530   -3.3939
   -1.3356    0.8875    0.3148
    2.0968   -4.4272    3.9447


ans =

   1.0e-14 *

   -0.1332
    0.0222
   -0.0888


w =

   2.0832          
   0.1507 + 0.2345i
   0.1507 - 0.2345i

Umgang mit dem Matlab-Fenster

% Matlab wird entweder über ein icon oder in der Konsole mit dem Befehl
% 'matlab&' aufgerufen. Im zweiten Fall befindet man sich bzgl. Matlab in
% dem Directory, in dem Matlab gestartet wurde. Im ersten Fall hängt es von
% den Grundeinstellungen ab.

% Es öffnet sich ein Fenster, in dem üblicherweise auf der rechten Hälfte
% der Befehlseingabemodus zu sehen ist. Hier können Sie direkt
% Matlab-Kommandos eingeben. In der linken Hälfte unten ist normalerweise
% die 'command history' zusehen, d.h. die zuletzt eingegebenen Befehle.
% Oben kann man sich das gegenwärtige Directory anzeigen lassen, oder
% alternativ den 'workspace', d.h. alle aktuellen Variable. Doppelklickt man auf
% eine davon so öffnet sich der 'variable editor', d.h. ein Fenster, in dem
% man zum einen die aktuellen Variablenwerte betrachten kann, und zum
% anderen auch recht komfortabel editieren kann.

% Matlab-Befehle kann man auch aus einer Datei abrufen. Die Dateiendung muss .m
% sein. Z.B. kann man die Befehle dieser Datei durch Aufruf von Lecture1
% abrufen. Man muss sich dazu aber im richtigen directory befinden. Dieses
% ist ggf. mit den Betriebssystem-Befehlen 'cd ..' bzw. cd <neues
% directory> zu ändern.
% Befindet man sich links oben im Directory-Fenster, so kann man durch
% Doppelklick ein vorhandenes m-File mit dem Matlab-eigenen Editor öffnen.
% Man kann ein m-File grundsätzlich mit jedem Editor bearbeiten, der
% Matlab-Editor ist für diesen Zweck aber empfehlenswert.

% Ein neues m-File kann man in der Matlab-Menüleiste durch File --> New -->
% m-file erzeugen. Es öffnet sich automatisch der Editor.


% Achtung: Obige Beschreibungen können unter Umständen bei verschiedenen
% Matlab-Versionen etwas variieren, sollten aber immer zumindest ähnlich
% sein!