MATLAB
Willemers Informatik-Ecke
Wie der Name schon andeutet, wurde MATLAB für mathematische Berechnungen geschaffen. Die besondere Leistung ergibt sich aus der Unterstützung der Vektoren, die Schleifen konventioneller Programmiersprachen unnötig machen. Ein weiterer Pluspunkt ist die Fähigkeit, Funktionen mit wenigen Mitteln grafisch darstellen zu können.

Die Lizenzen stellt die Hochschule oder der Arbeitgeber. Hersteller ist die Firma Mathworks.

Da die Lizenzen ausgesprochen teuer sind, lohnt sich ein Blick auf die Open-Source-Clones. Für die Gestaltung dieser Seite wurde immer wieder Octave herangezogen.

IDE

Nach dem Start von MATLAB bzw. Octave zeigt sich eine grafische Oberfläche, in deren Zentrum ein Command-Window ist, in dem Kommandos interaktiv eingegeben werden können.

Für komplexere Aufgabe oder im Anfang ist es sinnvoller, Programmdateien anzulegen. Diese enden mit Extension .m und werden in einem Editor geschrieben.

Einfache Variablen und Rechnen

Variablen werden in MATLAB nicht explizit deklariert, sondern entstehen bei ihrem Gebrauch. Dann wird auch der Typ der Variablen bestimmt.

Für die Ausgabe einer Variable aus einem Skript heraus wird der Befehl disp(var) verwendet.

Zuweisung und einfache Variablen

Variablen werden automatisch durch ihre erste Verwendung definiert. MATLAB ermittelt den Typ aus der Zuweisung. Eine Zuweisung besteht aus der Zielvariablen, gefolgt von dem Zuweisungszeichen =. Es folgt ein Ausdruck, der den Wert ergibt, der der Zielvariablen zugewiesen wird. Abgeschlossen wird die Zuweisung durch ein Semikolon.
m = 1000;

Grundrechenarten

+ Addititon
- Subtraktion
* Multiplikation
/ Division
^ Potenzieren
Strings werden in Hochkommata gesetzt.
name = 'Arnold';
Boolesche Variablen können die Werte true und false annehmen.
stimmt = true;
== gleich
~= ungleich
<= kleiner oder gleich
>= größer oder gleich
< kleiner
> größer

Vektoren

Ein Zeilenvektor kann als Literal durch rechteckige Klammern definiert werden. Die Werte werden, durch Leerzeichen getrennt, hintereinander geschrieben.
zeilenvector = [1 3 6 9];
Bestimmte Vektoren können auch generiert werden. In diesem Fall wird durch Doppelpunkte separiert der Startwert, die Schrittweite und der Endwert angegeben.
zehntelbisdrei = 0 : 0.1 : 3;

Stellt der Vektor eine Spalte dar, wird ein Semikolon zwischen die Werte geschrieben.

spaltenvector = [1; 3; 6; 9];

Matrix

Eine Matrix hat zwei Dimensionen. Hier werden die Zeilenwerte durch Leerzeichen und die Spalten durch Semikolon getrennt.
matrix = [1 4 7 4; 2 4 5 3; 2 2 1 4];
+ Addititon
- Subtraktion
* Multiplikation
.* Elementweise Multiplikation
./ Elementweise Division
.^ Elementweise Potenzieren

Ablaufstrukturen

if

if a>5
   % Hier ist a größer als 5
elseif a<=2
   % Hier ist a kleiner oder gleich 2
else
   % Hier ist a kleiner oder gleich 5 und größer als 2
end

while

Die folgende Schleife zählt von 10 bis 1:
a = 10;
while (a > 0)
    disp(a);
    a = a - 1;
end

for

Die folgende Schleife zählt von -1 bis 1 in 0,1-er Schritten. Das Ergebnis zeigt, dass MATLAB die Zahlen nicht binär kodiert, sonst würde bei 0 eine endlose Periode auftreten.
for a = -1 : 0.1 : 1
   disp(a);
end
Bei einer for-Schleife kann die Schrittweite auch weggelassen werden. Dann ist die Schrittweite 1.

Funktion

Eine Funktion wird in einer Datei abgelegt, die den gleichen Namen wie die Funktion besitzt. Die folgende Funktion wird also in der Datei doppel.m abgelegt.
function ausgabe = doppel(eingabe)
   ausgabe = eingabe * 2;
end

Grafische Darstellung

Mit der Anweisung plot kann ein Vektor direkt in einem Fenster dargestellt werden. Die Kunst liegt darin, die Funktion in einen Vektor zu bekommen.
x = 0: 0.1:2;
y = x.*x;
plot(x,y)
grid on;
Anmerkung: Bei octave ist es sinnvoll, noch die folgende Zeile darunter zu setzen, damit das Fenster nicht gleich wieder verschwindet.
input("Taste drücken");
Das Gleiche noch einmal mit einer Sinuskurve:
x = 0: 0.1: 2;
y = sin(pi*x);
figure(1);
plot(x,y);
grid on;
title("Titel") Schreibt einen Titel über die Grafik
xlabel("X-Achse") Beschriftet die X-Achse
ylabel("Y-Achse") Beschriftet die Y-Achse
grid on Hinterlegt ein Raster
hold onHalte das aktuelle Fenster für weitere Zeichnungen aktiv

Die Anweisung plot akzeptiert als dritten Parameter die Farbe oder den Linienstil.

'r' rot
'y' gelb
'm' magenta
'c' cyan
'g' grün
'b' blau
'r' weiß
'k' schwarz
'-' Linie (default
'- - ' gestrichelt
':' gepunktet
'- .' Strichpunkt
'o' Endemarker Kreis
'+' Plus
'*' Stern
'.' Punkt
'x' Kreuz

Sound

Sinuskurven sind deshalb so spannend, weil man sie auch hören kann. Jedenfalls wenn sie im richtigen Frequenzbereich liegen. Im folgenden Beispiel wird der Sound durch eine Sinuskurve generiert.

Die Frequenz sind 400 Hz, also der Kammerton a. Der Ton wird durch die Abtastfrequenz 11025 digitalisiert.

zeit = 2;       % Sekunden
frequenz = 440; % Kammerton a
fa = 11025;     % Abtastfrequenz
x = 0: 1/fa: zeit;
y = sin(2*pi*frequenz*x);
sound(y, fa);