RUHR-UNIVERSITÄT BOCHUM
Einführung in Matlab
13. April 2023
Ruhr-Universität Bochum
Christian Döding
RUHR-UNIVERSITÄT BOCHUM
Was ist MATLAB?
Kommerzielle Software von MathWorks und gleichnamige
Programmiersprache
Steht für MATrix LABoratory
Software: Numerische Berechnung von Problemen und Darstellung
von Ergebnissen
Programmiersprache: prozedurale Skriptsprache, kann auch
objektorientierte Programmierung
Kann wie höherer Taschenrechner genutzt werden
Stellt viele numerische Algorithmen bereit
Christian Döding | Einführung in Matlab | 13. April 2023 2
RUHR-UNIVERSITÄT BOCHUM
Was ist MATLAB?
Kommerzielle Software von MathWorks und gleichnamige
Programmiersprache
Steht für MATrix LABoratory
Software: Numerische Berechnung von Problemen und Darstellung
von Ergebnissen
Programmiersprache: prozedurale Skriptsprache, kann auch
objektorientierte Programmierung
Kann wie höherer Taschenrechner genutzt werden
Stellt viele numerische Algorithmen bereit
Installation:
Erstellung eines Accounts
Download und Installation der Software
Infos: [Link]
services/software/matlab_simulink.html
Christian Döding | Einführung in Matlab | 13. April 2023 2
RUHR-UNIVERSITÄT BOCHUM
Oberfläche
1. Current Folder:
Aktuelles Verzeichnis.
Erstellen, Ausführen,
Öffnen, Löschen, ... von
Dateien und Ordnern
2. Command Window:
Textbasiertes Ein- und
Ausgabefenster.
Eingabe direkter Befehle
und Anweisungen
3. Workspace: Anzeige und Verwaltung der aktuell befindlichen
Variablen im Arbeitsspeicher.
4. Hilfe-Button: Ruft die Matlab Dokumentation auf.
5. New-Script Button: Wichtiger Button zum Erstellen neuer
Programme.
Christian Döding | Einführung in Matlab | 13. April 2023 3
RUHR-UNIVERSITÄT BOCHUM
Einfache Anweisungen und
Grundrechenarten
Im Command Window können direkte Anweisungen gegeben und mit
Enter bestätigt (ausgeführt) werden. Bspw. Rechenoperationen:
Addition +, Substraktion -, Multiplikation *, Division / und
Potenzbildung ˆ
% Beispiel Addition :
>> 1 + 3
ans =
4
% Beispiel Multiplikation :
>> 2.5*3
ans =
7.5000
ans (kurz für "answer") bezeichnet hier den Ausgabewert des letzten
Befehls.
Christian Döding | Einführung in Matlab | 13. April 2023 4
RUHR-UNIVERSITÄT BOCHUM
Einfache Anweisungen und
Grundrechenarten
Die Ausgabe (z.B. des Wertes von ans) kann durch ein ;
unterdrückt werden
% Beispiel Addition ohne Ausgabe :
>> 1 + 3;
Das Ergebnis wird aber in ans gespeichert und kann manuell
ausgeben werden. Hierfür die Variable ans aufrufen.
% Beispiel Addition ohne Ausgabe :
>> 1 + 3;
>> ans
ans =
4
Christian Döding | Einführung in Matlab | 13. April 2023 5
RUHR-UNIVERSITÄT BOCHUM
Variablen
Matlab kann Variablen deklarieren und ihnen einen Wert zuweisen durch
Variablenname=Wert:
% Variable deklarieren 1:
>> a = 1;
>> a
a =
1
; unterdrückt wieder die Ausgabe
Variablen können überschrieben werden
Es gibt Regeln für Variablennamen:
können aus Groß- und Kleinbuchstaben bestehen
maximal 63 Zeichen
müssen mit Buchstaben anfangen
Satzzeichen sind nicht erlaubt
...
Christian Döding | Einführung in Matlab | 13. April 2023 6
RUHR-UNIVERSITÄT BOCHUM
Variablen
Mit deklarierten Variablen können (Rechen-)Operationen durchgeführt
werden:
% Variable deklarieren 2:
>> a = 1;
>> b = 2;
>> c = a + b ;
>> c
c =
3
Variablen werden im Workspace angezeigt und gespeichert
Der Befehl who listet die aktuellen Variablen auf
Der Befehl clear löscht den Workspace
Der Befehl clear var1 löscht nur die Variable var1
Christian Döding | Einführung in Matlab | 13. April 2023 7
RUHR-UNIVERSITÄT BOCHUM
Vektoren
Matlab kann auch Variablen als Vektoren deklarieren
% Zeilenvektor (1 ,2 ,3) :
>> v = [1 , 2 , 3]
v =
1 2 3
% Spaltenvektor (1 ,2 ,3) :
>> v = [1; 2; 3]
v =
1
2
3
Vektoren werden in Matlab Arrays genannt (Datentyp).
, oder Leezeichen trennt die Einträge bei Zeilenvektoren
; trennt die Einträge bei Spaltenvektoren
Christian Döding | Einführung in Matlab | 13. April 2023 8
RUHR-UNIVERSITÄT BOCHUM
Rechnen mit Vektoren
Addieren
% Vektoraddition :
>> v = [1 , 2 , 3];
>> u = [4 , 5 , 6];
>> v + u
ans =
5 6 9
Multiplizieren (Matrixmultiplikation)
% Vektormultiplikation :
>> v = [1 , 2 , 3];
>> u = [4; 5; 6];
>> v * u
ans =
32
Christian Döding | Einführung in Matlab | 13. April 2023 9
RUHR-UNIVERSITÄT BOCHUM
Vektormanipulation
Es kann auf einzelne (oder mehrere) Einträge zugegriffen werden
% Auslesen des zweiten Vektoreintrags
>> v = [1 , 2 , 3];
>> v (2)
ans =
2
und diese geändert werden
% Aendern des zweiten Vektoreintrags
>> v = [1 , 2 , 3];
>> v (2) = 0
v =
1 0 3
Matlab fängt bei 1 an zu zählen im Gegensatz zu vielen anderen
Programmiersprachen.
Christian Döding | Einführung in Matlab | 13. April 2023 10
RUHR-UNIVERSITÄT BOCHUM
Vektormanipulation
v(i) i-ter Eintrag von v
v(i:j) Vektor mit Einträgen (vi , . . . , vj )
v(i:end) Vektor mit Einträgen vom Index i bis zum Ende
v’ Transposition
dot(u,v) Skalarprodukt von zwei Spaltenvektoren
m:n erzeugt einen Vektor (m, m + 1, . . . , n − 1, n)
m:j:n erzeugt einen Vektor (m, m + j, m + 2j, . . . , n)
min(v), max(v) minimaler/maximaler Eintrag von v
norm(v,p) p-Norm von v
length(v) Länge von v
sort(v) sortiere v
a*v Multiplikation von v mit Zahl a (kompenentenweise)
v.ˆ 2 Komponentenweise Quadrieren (Potenzieren analog)
u.*v komponentenweise Multiplizieren
Christian Döding | Einführung in Matlab | 13. April 2023 11
RUHR-UNIVERSITÄT BOCHUM
Matrizen
Matlab kann auch Variablen als Matrizen deklarieren...
% Beispiel Matrix Deklaration :
>> A = [1 , 2 , 3; 4 , 5 , 6; 7 , 8 , 9]
A =
1 2 3
4 5 6
7 8 9
Christian Döding | Einführung in Matlab | 13. April 2023 12
RUHR-UNIVERSITÄT BOCHUM
Matrizen
...und mit ihnen rechnen
% Beispiel Matrixmultiplikation :
>> A = [1 , 2 , 3; 4 , 5 , 6; 7 , 8 , 9];
>> B = [2 , 0 , 0; 0 , 2 , 0; 0 , 0 , 2];
>> A * B
ans =
2 4 6
8 10 12
14 16 18
, oder Leerzeichen trennt die Spalten
; trennt die Zeilen
Matrizen heißen in Matlab auch (n × m)-Arrays
Christian Döding | Einführung in Matlab | 13. April 2023 13
RUHR-UNIVERSITÄT BOCHUM
Matrizenoperationen
A(i,j) i, j-ter Eintrag von A
A(:,j) j-te Spalte der Matrix A
A(i,:) i-te Zeile der Matrix A
A(i:j,j:end) Untermatrix
A’ Transposition
zeros(m,n) erzeugt eine m × n Matrix mit Null Einträgen
ones(m,n) erzeugt eine m × n Matrix mit Einträgen=1
eye(n) Einheitsmatrix n × n
diag(v) erzeugt eine Matrix mit Vektor v als diagonale
size(A) Dimensionen/Größe der Matrix
inv(A) Inverse von A (sparsam benutzen, wir lernen Besseres!)
det(A) Determinante von A
rank(A) Rang von A
eig(A) Eigenwerte von A (wir lernen wie Matlab das macht)
exp(A) komponentenweise(!) Exponentialfunktion
Christian Döding | Einführung in Matlab | 13. April 2023 14
RUHR-UNIVERSITÄT BOCHUM
Matrizenoperationen
A*v Matrix-Vektor-Multiplikation
A*B Matrixmultiplikation
A+B (komponentenweise) Addition
A.*B komponentenweise Multiplikation
Aˆ 2 Quadrieren A2 = AA (Potenzieren analog)
A.ˆ 2 komponentenweise Quadrieren (Potenzieren analog)
norm(A,p) induzierte Matrixnorm bzgl. p-Norm
rand(m,n) m × n Zufallsmatrix (0, 1)-gleichverteilt
randn(m,n) m × n Zufallsmatrix N (0, 1)-normalverteilt
magic(n) n × n magische Matrix
Achtung: Alle Matrix- und Vektoroperationen sind natürlich nur möglich,
wenn die Dimensionen passen.
Christian Döding | Einführung in Matlab | 13. April 2023 15
RUHR-UNIVERSITÄT BOCHUM
Mathematische Funktionen
Matlab stellt die bekannten mathematischen Funktionen und Zahlen wie
π bereit:
% mathematische Funktionen :
>> a = cos ( pi )
a =
-1
exp Exponentialfunktion sqrt Wurzel
log Logarithmus abs Betrag
cos Kosinus cosh Kosinus-Hyp.
sin Sinus sinh Sinus-Hyp.
tan Tangens tanh Tangens-Hyp.
pi Kreiszahl π i,j,1i,1j imaginäre Einheit
Christian Döding | Einführung in Matlab | 13. April 2023 16
RUHR-UNIVERSITÄT BOCHUM
Funktionen (inline)
Man kann Funktionen wie beispielsweise f (x) = x2 auch selber
definieren (deklarieren).
Eine Möglichkeit dafür ist die inline Deklaration:
fname = @(var1,...,varn) fausdruck;
% Funktionen x ^2 deklarieren :
>> f = @( x ) x ^2;
>> y = f (2)
y =
4
% Funktionen x ^2+ y ^2 deklarieren :
>> g = @( x , y ) x ^2 + y ^2;
>> z = g (2 ,2)
z =
8
Christian Döding | Einführung in Matlab | 13. April 2023 17
RUHR-UNIVERSITÄT BOCHUM
Skripte und Programme
Damit Aufrufe nicht direkt in die Konsole getippt werden müssen,
automatisiert man (wiederkehrende) Abläufe mit Hilfe von
Programmen, genannt Skripte.
Skripte sind m-Files (Dateien mit Endung .m)
Zum Erstellen eines Skripts:
tippe edit skriptname im Command Window
verwende den "New-Skript" Button (siehe Seite "Was ist
MATLAB?")
lege direkt eine .m-Datei im Verzeichnis an
Zum Bearbeiten (editieren) von Skripten wird der Editor verwendet.
Zum Ausführen eines Skripts:
tippe skriptname im Command Window (ohne .m)
verwende den "Run" Button im Editor
Beim Ausführen eines Skripts führt Matlab Zeile für Zeile des Skripts
aus.
Christian Döding | Einführung in Matlab | 13. April 2023 18
RUHR-UNIVERSITÄT BOCHUM
Das erste Programm
Ein beliebtes Beispiel für ein einfaches Programm ist das "Hello
World"-Programm.
Das Programm soll im Command Window die Zeile "Hello World!"
ausgeben.
Erstelle ein Skript mit dem Namen helloworld.m und Inhalt
disp ( ' Hello World ! ')
die disp Funktion schreibt einfach die Zeile in das Command
Window.
Führe das Skript mit dem Befehl helloworld im Command Window
aus.
Christian Döding | Einführung in Matlab | 13. April 2023 19
RUHR-UNIVERSITÄT BOCHUM
Funktionen und Routinen
komplexere Funktionen können in sog. Routinen implementiert
werden.
diese werden in eigene Skrpit-Files/m-Files geschrieben.
können aus anderen Skripten aufgerufen werden
Achtung: hierfür muss die Funktion im selben Pfad wie das
aufrufende Skript sein.
Generelle Syntax:
function [ out1 ,.. , outN ] = fname ( in1 ,.. , inN )
Anweisungen
out1 = ...
...
outN = ...
end
Christian Döding | Einführung in Matlab | 13. April 2023 20
RUHR-UNIVERSITÄT BOCHUM
Funktionen und Routinen
Beispiel:
Erstelle Datei square.m:
function y = square ( x )
y = x ^2;
end
Rufe Funktion z.B. im Command Window auf:
>>> a = square (2)
a =
4
>>> b = square (3)
b =
9
Christian Döding | Einführung in Matlab | 13. April 2023 21
RUHR-UNIVERSITÄT BOCHUM
Kommentare
Kommentare sind Texte im Code (Skripte und Funktionen) die von
Matlab ignoriert werden
in Matlab werden diese mit dem % eingeleitet
alles nach dem % wird von Matlab ignoriert
a = 1; % Das ist ein Kommentar
% a = 2;
disp ( a )
1
Code (Skripte und Funktionen) ist grundsätzlich ausreichend zu
kommentieren
dies erleichtert anderen (Korrekteuren) den Code zu verstehen
Christian Döding | Einführung in Matlab | 13. April 2023 22
RUHR-UNIVERSITÄT BOCHUM
Boolean-Werte
In Programmen ist es oft erforderlich logische Wahrheitsabfragen
durchzufüren.
Bspw. ob eine Variable einen positiven oder negativen Wert hat.
für das Ergebnis werden sogenannte Boolsche Werte verwendet:
1 = "wahr"
0 = "falsch"
In Matlab heißt dieser Datentyp logical
Variablen vom Typ logical benötigen nur 1 Bit Arbeitsspeicher.
Christian Döding | Einführung in Matlab | 13. April 2023 23
RUHR-UNIVERSITÄT BOCHUM
Logische Operatoren
Für Wahrheitsabfragen werden logische Verknüpfungen/Operatoren
verwendet und geben als Ergebnis einen Boolschen Wert zurück:
== gleich
∼= ungleich
<, > kleiner, größer.
<=, >= kleinergleich, größergleich.
∼ nicht (negation)
&& und
|| oder
% Ist 1 groesser als 0?
>> 1 > 0
ans =
1 ( logical )
Christian Döding | Einführung in Matlab | 13. April 2023 24
RUHR-UNIVERSITÄT BOCHUM
if-Abfragen
Wann oder ob ein Programm etwas tun soll bzw. in welchen Fällen es
sich wie verhalten soll, kann über sog. if-Abfragen gesteuert werden:
if Bedingung1
Anweisung1
elseif Bedingung2
Anweisung2
...
else
Anweisung sonst
end
Bedingung1 wahr ⇒ Anweisung1 wird ausgeführt.
Bedingung2 wahr ⇒ Anweisung2 wird ausgeführt, usw.
keine Bedingung wahr ⇒ else-Anweisung wird ausgeführt (opt.).
pro if-Abfrage wird höchstens eine Anweisung ausgefürt.
Christian Döding | Einführung in Matlab | 13. April 2023 25
RUHR-UNIVERSITÄT BOCHUM
if-Abfragen
function out = check_positiv ( x )
if x > 0
disp ( ' Die Zahl ist positiv ')
elseif x == 0
disp ( ' Die Zahl ist gleich Null ')
else
disp ( ' Die Zahl ist negativ ')
end
end
>> check_positiv (1)
Die Zahl ist positiv
>> check_positiv ( -1)
Die Zahl ist negativ
Christian Döding | Einführung in Matlab | 13. April 2023 26
RUHR-UNIVERSITÄT BOCHUM
for-Schleifen
Schleifen sind Kontrollstrukturen, die eine Kette von Anweisungen so
lange wiederholen, bis ein Abbruchkriterium erfüllt ist.
dies ermöglicht es wiederkehrende Anweisungen zu automatisieren.
In Matlab gibt es sogenannte for-Schleifen:
for i = Array
Anweisung
end
für jedes Element i in dem Array wird die Anweisung ausgeführt
i ist der Schleifen-Index/Variable und nimmt die Werte aus dem
Array an
Christian Döding | Einführung in Matlab | 13. April 2023 27
RUHR-UNIVERSITÄT BOCHUM
for-Schleifen
Zum Beispiel:
>> for i = [1 3 5 7]
disp ( i )
end
1
Christian Döding | Einführung in Matlab | 13. April 2023 28
RUHR-UNIVERSITÄT BOCHUM
for-Schleifen
oder
>> for i = 1:5
disp ( i )
end
1
Christian Döding | Einführung in Matlab | 13. April 2023 29
RUHR-UNIVERSITÄT BOCHUM
while-Schleifen
Neben for-Schleifen gibt es while-Schleifen:
while Bedingung
Anweisung
end
solange die Bedingung wahr ist, wird die Anweisung immer wieder
wiederholt.
Achtung: es muss garantiert werden, dass die Bedingung irgendwann
nicht mehr erfüllt ist, sonst kann es zu Endlos-Schleifen kommen.
Nützlich: Tastenkombination Strg+c stoppt das Programm
(Abbruch von Endlos-Schleifen).
Durch das Schlüsselwort break kann die while-Schleife abgebrochen
werden.
Christian Döding | Einführung in Matlab | 13. April 2023 30
RUHR-UNIVERSITÄT BOCHUM
while-Schleifen
Zum Beispiel:
>> i = 1;
>> while i <= 5
disp ( i )
i = i + 1;
end
1
5
Christian Döding | Einführung in Matlab | 13. April 2023 31
RUHR-UNIVERSITÄT BOCHUM
Ausgabe fprintf
Bei vielen Programmen wünscht man sich eine Ausgabe des
Ergebnisses im Command Window.
bereits disp für Ausgaben im Command Window verwendet.
Alternative: fprintf(.)
mehr Möglichkeiten zur Formatierung. Bsp:
>> a = 123.456;
>> fprintf ( '4 Nachkommastellen : a = %.4 f \ n ' ,a )
4 Nachkommastellen : a = 123.4560
>> fprintf ( ' wiss . Zahl : a = %.6 e \ n ' ,a )
wiss . Zahl : a = 1.234560 e +02
⇒ mehr in der fprintf Doku von MathWorks.
Christian Döding | Einführung in Matlab | 13. April 2023 32
RUHR-UNIVERSITÄT BOCHUM
Plots
Matlab kann auch graphische Ausgaben (Plots) erzeugen
hierfür wird die Routine plot verwendet
Beispiel:
% Plotte die Funktion cos ( x ) auf dem Interval
[0 ,10]
>> x = 0:0.1:10
>> y = cos ( x ) ;
>> plot (x , y )
x und y sind hierbei Arrays der selben Länge
plot(x,y) öffnet ein neues Fenster und plottet dann die Werte in x
gegen die Werte in y
die Punkte werden per Default mit einer Linie verbunden
Christian Döding | Einführung in Matlab | 13. April 2023 33
RUHR-UNIVERSITÄT BOCHUM
Plots
Die Art und Farbe des Plots kann dabei nahezu beliebig geändert werden:
% Plotte die Funktion cos ( x ) auf dem Interval
[0 ,10] mit roter getrichelter Line
>> x = 0:0.1:5;
>> y = cos ( x ) ;
>> plot (x ,y , 'r - - ')
oder
% Plotte die Funktion cos ( x ) auf dem Interval
[0 ,10] nur mit blauen Sternpunkten
>> x = 0:0.1:5;
>> y = cos ( x ) ;
>> plot (x ,y , 'b * ')
Christian Döding | Einführung in Matlab | 13. April 2023 34
RUHR-UNIVERSITÄT BOCHUM
Plots
Es können auch mehrere Plots in einem Fenster erzeugt werden
hierfür verwendet man das Schlüsselwort hold on:
% Plotte die Funktionen cos ( x ) und sin ( x )
>> x = 0:0.1:5;
>> y = cos ( x ) ;
>> z = sin ( x ) ;
>> plot (x ,y , 'b ')
>> hold on
>> plot (x ,z , 'r ')
Christian Döding | Einführung in Matlab | 13. April 2023 35
RUHR-UNIVERSITÄT BOCHUM
Plots
Es können auch Titel, Achsenbeschriftungen, Achsenbereiche,
Legenden, Liniendicken und vieles mehr verändert werden.
Ein Beispielskript (Weiteres auf der plot Doku von MathWorks):
x = 0:0.1:5;
y = cos ( x ) ;
z = sin ( x ) ;
plot (x ,y , 'b ')
hold on
plot (x ,z , 'r ' , ' Linewidth ' , 2.0)
xlabel ( 'x ')
ylabel ( ' sin ( x ) , cos ( x ) ')
title ( ' Die Funktionen Sinus und Kosinus ')
legend ( ' cos ( x ) ' , ' sin ( x ) ')
ylim ([ -1.5 1.5])
Christian Döding | Einführung in Matlab | 13. April 2023 36
RUHR-UNIVERSITÄT BOCHUM
Nützliches
Noch ein paar hilfreiche Schlüsselwörter und Routinen:
help name Matlab Hilfe zur Routine name anzeigen
whos, clear Anzeigen und Löschen aller Variablen
clc, clf Lösche Commando bzw. Grafikfenster
save, load speichert oder lädt den Workspace
tic ... toc messen der CPU-Zeit
disp(x) Anzeigen (Command Window) der Variablen x
figure(k) Wahl des k-ten Grafikfensterns
subplot mehrere Plots in einem Fenster
strcat Zusammenfügen von Strings (Wörtern)
Christian Döding | Einführung in Matlab | 13. April 2023 37
RUHR-UNIVERSITÄT BOCHUM
Wenn man mal nicht weiter weiß...
Matlab Dokumentation von MathWorks:
[Link]
Einführung in Matlab von MathWorks unter
[Link]
[Link]
Weitere Literatur:
Christian Döding | Einführung in Matlab | 13. April 2023 38
Der Rest ist learning by doing!
Vielen Dank für eure Aufmerksamkeit.
Christian Döding | Einführung in Matlab | 13. April 2023 39