MATLAB Repetitorium - Einführung: Unterschied zwischen den Versionen
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:MATLAB]] | |||
{| class="wikitable" | |||
|- | |||
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]] | |||
|- | |||
| '''Termin:''' || 26.04.2024 | |||
|} | |||
= Einstieg = | = Einstieg = | ||
== Aufgabe 1.1 == | == Aufgabe 1.1 == | ||
Zeile 30: | Zeile 37: | ||
== Aufgabe 1.2 == | == Aufgabe 1.2 == | ||
Wählen Sie unterschiedliche Winkel w zwischen 0 und π. Berechnen Sie für jeden | Wählen Sie unterschiedliche Winkel w zwischen 0 und π. Berechnen Sie für jeden | ||
Winkel die Summe der Quadrate von sin(w) und cos(w). | Winkel die Summe der Quadrate von <code>sin(w)</code> und <code>cos(w)</code>. | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 84: | Zeile 91: | ||
|} | |} | ||
== Aufgabe 1.4== | == Aufgabe 1.4== | ||
Was erhalten Sie, wenn Sie den Spaltenvektor v = [2;3] mit der Matrix A = [1 0;0 −1] multiplizieren? Was ist das Ergebnis von A * A? | Was erhalten Sie, wenn Sie den Spaltenvektor <code>v = [2;3]</code> mit der Matrix <code>A = [1 0;0 −1]</code> multiplizieren? Was ist das Ergebnis von <code>A * A</code>? | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 100: | Zeile 107: | ||
|} | |} | ||
==Aufgabe 1.5== | ==Aufgabe 1.5== | ||
Erzeugen Sie einen Zeilenvektor, der als Komponenten nicht Zahlen, sondern Buchstaben enthält. Überprüfen Sie den Typ des Vektors mit der Funktion whos. | Erzeugen Sie einen Zeilenvektor, der als Komponenten nicht Zahlen, sondern Buchstaben enthält. Überprüfen Sie den Typ des Vektors mit der Funktion <code>whos</code>. | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Tipp </strong> | |||
|- | |||
| [https://de.mathworks.com/help/matlab/characters-and-strings.html Artikel zum thema String und Char] | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 112: | Zeile 125: | ||
</source> | </source> | ||
|} | |} | ||
==Aufgabe 1.6== | ==Aufgabe 1.6== | ||
Versuchen Sie, durch bewusst falsche Anweisungen Fehlermeldungen zu erzeugen, | # Versuchen Sie, durch bewusst falsche Anweisungen Fehlermeldungen zu erzeugen, um ein Gefühl dafür zu bekommen, wie MATLAB auf Fehler reagiert. | ||
um ein Gefühl dafür zu bekommen, wie MATLAB auf Fehler reagiert. | # Verwenden Sie die Cursor-Tasten, um aus der Command History vorher bereits benutzte Befehle zu wiederholen und zu verändern. | ||
Verwenden Sie die Cursor-Tasten, um aus der Command History vorher bereits | # Schauen Sie sich auch einmal den Workspace-Editor an, mit dem Sie zum Beispiel die Inhalte von Variablen mittels Copy & Paste nach MS-Excel übernehmen können. | ||
benutzte Befehle zu wiederholen und zu verändern. | |||
Schauen Sie sich auch einmal den Workspace-Editor an, mit dem Sie zum Beispiel | |||
die Inhalte von Variablen mittels Copy & Paste nach MS-Excel übernehmen können. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 137: | Zeile 148: | ||
---- | ---- | ||
= Symbolisches Rechnen = | = Symbolisches Rechnen = | ||
'''Hinweis:''' Statt | '''Hinweis:''' Statt <code>* / ^</code> verwenden Sie <code>.* ./ .^</code> (Punktoperator vor Operation anwenden): | ||
== Aufgabe 2.1 == | == Aufgabe 2.1 == | ||
Definieren Sie folgende Funktionen mit Matlab (Befehle: syms) | Definieren Sie folgende Funktionen mit Matlab (Befehle: <code>syms</code>) | ||
<!-- <math></math><br> --> | <!-- <math></math><br> --> | ||
Zeile 159: | Zeile 170: | ||
== Aufgabe 2.2 == | == Aufgabe 2.2 == | ||
Multiplizieren Sie folgende Ausdrücke aus (Befehle: expand()) | Multiplizieren Sie folgende Ausdrücke aus (Befehle: <code>expand()</code>) | ||
<math>(3x-2y)^3</math><br> | <math>(3x-2y)^3</math><br> | ||
Zeile 175: | Zeile 186: | ||
|} | |} | ||
== Aufgabe 2.3 == | == Aufgabe 2.3 == | ||
Vereinfachen Sie folgende Ausdrücke (Befehle: exp(), log(), simplify()) | Vereinfachen Sie folgende Ausdrücke (Befehle: <code>exp(), log(), simplify()</code>) | ||
<math>sin(x)^2+cos(x)^2</math><br> | <math>sin(x)^2+cos(x)^2</math><br> | ||
Zeile 194: | Zeile 205: | ||
== Aufgabe 2.4 == | == Aufgabe 2.4 == | ||
Verwenden Sie simplify zur Ausführung der Polynomdivision P3/P1. | Verwenden Sie <code>simplify</code> zur Ausführung der Polynomdivision P3/P1. | ||
<math>P_3(x)=x^3-6x^2-x+6=0,\ P_1(x)=x-1</math><br> | <math>P_3(x)=x^3-6x^2-x+6=0,\ P_1(x)=x-1</math><br> | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
Zeile 210: | Zeile 222: | ||
== Aufgabe 2.5 == | == Aufgabe 2.5 == | ||
<math></math><br> | Lösen Sie folgende Gleichungen (Befehl: <code>sqrt(), log10(), solve()</code>). | ||
<math></math><br> | |||
<math></math><br> | '''Hinweis:''' Benutzen Sie „==“ statt „=“ | ||
<math>11-\sqrt{x+3}=6</math><br> | |||
<math>3^x=4^{x-2}\cdot 2^x</math><br> | |||
<math>lg(6x+10)-lg(x-3)=1</math><br> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 225: | Zeile 241: | ||
</source> | </source> | ||
|} | |} | ||
== Aufgabe 2.6 == | == Aufgabe 2.6 == | ||
<math></math><br> | Berechnen Sie folgende Grenzwerte (Befehle: <code>limit(), inf</code>). | ||
<math></math><br> | |||
<math>^{lim}_{x\rightarrow 0}\frac{2x^2+5x}{3x}</math><br> | |||
<math>^{lim}_{x\rightarrow \infty}\frac{1}{x}</math><br> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 239: | Zeile 258: | ||
</source> | </source> | ||
|} | |} | ||
== Aufgabe 2.7 == | == Aufgabe 2.7 == | ||
<math></math><br> | Berechnen Sie die erste und zweite Ableitung folgender Funktionen (Befehle: <code>diff()</code>). | ||
<math>x^5\cdot \ln(x)</math><br> | |||
<math>4\cdot \sin(x)\cdot \tan(x)</math><br> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | {| role="presentation" class="wikitable mw-collapsible mw-collapsed" | ||
| <strong>Musterlösung </strong> | | <strong>Musterlösung </strong> | ||
Zeile 261: | Zeile 284: | ||
</source> | </source> | ||
|} | |} | ||
== Aufgabe 2.8 == | |||
Berechnen Sie das unbestimmte Integral folgender Funktionen (Befehle: <code>int()</code>). | |||
<math>\int\frac{3x^8}{x^3+1}dx</math><br> | |||
<math>\int\frac{e^{2x}}{1+e^x}dx</math><br> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium"> | |||
% Aufgabe 2.8: | |||
syms x | |||
int((3.*x.^8)./(x.^3 +1),x); | |||
int(exp(2.*x)./(1+exp(x)),x); | |||
clear x | |||
</source> | |||
|} | |||
== Aufgabe 2.9 == | |||
Berechnen Sie das bestimmte Integral folgender Funktion (Befehle: <code>int()</code>). | |||
<math>\int^1_0\frac{x}{(1+x^2)^2}dx</math><br> | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium"> | |||
% Aufgabe 2.9: | |||
syms x y | |||
int(x./((1 + x.^2).^2),x,0,1) | |||
clear x y | |||
</source> | |||
|} | |||
== Aufgabe 2.10 == | |||
Für die Schnellen: Erkundigen Sie sich über folgende Berechnungen zur Funktionsanalyse bzw. Kurvendiskussion in Matlab (Befehle: <code>diff(), subs(), solve(), vpa()</code>): | |||
# Berechnen von lokalen Extremstellen | |||
# Berechnen von Wendestellen | |||
# Berechnen des y-Achsenabschnittes | |||
Wenden Sie die Berechnungen auf die Aufgaben aus Teil 2.1 an. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium"> | |||
% Aufgabe 2.10: | |||
syms x y1 y2 y3 | |||
y1 = 2.*x.^3 + 12.*x.^2 + 19.*x + 9; | |||
y2 = (-1./58)*(x.^2 - 100.*x -416); | |||
y3 = ((x-1).*(x+5))./((x+1).^2 .* (x-3)); | |||
%% y1 | |||
y1diff1 = diff(y1); | |||
y1diff2 = diff(y1diff1); | |||
ycrossY1 = subs(y1,0); | |||
ycrossX1 = 0; | |||
max = solve(y1diff1 == 0,x); | |||
extremaX1 = vpa(max); | |||
extremaY1 = subs(y1,extremaX1); | |||
inflection = solve(y1diff2 == 0,x); | |||
inflectionX1 = vpa(inflection); | |||
inflectionY1 = subs(y1,inflectionX1); | |||
subplot(131); | |||
fplot(y1); | |||
hold on; | |||
plot(ycrossX1,ycrossY1,'b*'); | |||
hold on; | |||
plot(extremaX1,extremaY1,'r*'); | |||
hold on; | |||
plot(inflectionX1,inflectionY1,'g*'); | |||
%% y2 | |||
y2diff1 = diff(y2); | |||
y2diff2 = diff(y2diff1); | |||
ycrossY2 = subs(y2,0); | |||
ycrossX2 = 0; | |||
max = solve(y2diff1 == 0,x); | |||
extremaX2 = vpa(max); | |||
extremaY2 = subs(y2,extremaX2); | |||
inflection = solve(y2diff2 == 0,x); | |||
inflectionX2 = vpa(inflection); | |||
inflectionY2 = subs(y2,inflectionX2); | |||
subplot(132); | |||
fplot(y2); | |||
hold on; | |||
plot(ycrossX2,ycrossY2,'b*'); | |||
hold on; | |||
plot(extremaX2,extremaY2,'r*'); | |||
hold on; | |||
plot(inflectionX2,inflectionY2,'g*'); | |||
%% y3 | |||
y3diff1 = diff(y3); | |||
y3diff2 = diff(y3diff1); | |||
ycrossY3 = subs(y1,0); | |||
ycrossX3 = 0; | |||
max = solve(y3diff1 == 0,x); | |||
extremaX3 = vpa(max); | |||
extremaY3 = subs(y3,extremaX3); | |||
inflection = solve(y3diff2 == 0,x); | |||
inflectionX3 = vpa(inflection); | |||
inflectionY3 = subs(y3,inflectionX3); | |||
subplot(133); | |||
fplot(y3); | |||
hold on; | |||
plot(ycrossX3,ycrossY3,'b*'); | |||
hold on; | |||
plot(extremaX3,extremaY3,'r*'); | |||
hold on; | |||
plot(inflectionX3,inflectionY3,'g*'); | |||
</source> | |||
|} | |||
---- | |||
→ Termine [[MATLAB_Repetitorium_-_Einführung|1]] <br> | |||
→ [[MATLAB-Befehle| MATLAB<sup>®</sup> Befehlsübersicht]]<br> | |||
→ zurück zum Hauptartikel: [[MATLAB_Repetitorium|MATLAB Repetitorium]] |
Aktuelle Version vom 26. April 2024, 09:13 Uhr
Autor: | Prof. Dr.-Ing. Schneider |
Termin: | 26.04.2024 |
Einstieg
Aufgabe 1.1
Quadrieren Sie die Zahlen 3, pi, −1 und i mithilfe des Operators „^“ und ziehen Sie aus den Ergebnissen jeweils die Wurzel.
Musterlösung |
% Aufgabe 1.1:
% zi : Variable für die Zahl
% qi : das Quadrat der Zahl
% wi : die Wurzel aus dem Quadrat
z1 = 3
q1 = z1^2
w1 = sqrt( q1 )
z2 = pi
q2 = z2^2
w2 = sqrt( q2 )
z3 = -1
q3 = z3^2
w3 = sqrt( q3 )
z4 = i
q4 = z4^2
w4 = sqrt( q4 )
|
Aufgabe 1.2
Wählen Sie unterschiedliche Winkel w zwischen 0 und π. Berechnen Sie für jeden
Winkel die Summe der Quadrate von sin(w)
und cos(w)
.
Musterlösung |
% Aufgabe 1.2:
% wi : verschiedene Winkel zwischen 0 und pi
% ei : Summe von sin- und cos-Quadrat zu wi
w1 = 0
e1 = sin(w1)^2 + cos(w1)^2
w2 = pi
e2 = sin(w2)^2 + cos(w2)^2
w3 = pi/2
e3 = sin(w3)^2 + cos(w3)^2
w4 = pi/4
e4 = sin(w4)^2 + cos(w4)^2
w5 = pi/6
e5 = sin(w5)^2 + cos(w5)^2
|
Aufgabe 1.3
Erzeugen Sie das 1x5-Array sval, das die fünf Sinus-Werte für die Bogenmaß-Winkel 0, π/6, π/4, π/2 und π enthält. Führen Sie die gleichen Rechnungen für die Grad-Winkel 0, 30°, 45°, 90° und 180° durch. Hierzu müssen Sie die Winkel ins Bogenmaß umrechnen, da die MATLAB-Funktionen sin und cos ihre Argumente im Bogenmaß erwarten – zur Erinnerung: π entspricht 180°.
Versuchen Sie es auch einmal mit den Funktionen sind
und cosd
.
Musterlösung |
% Aufgabe 1.3:
% rval : Array mit verschiedenen Winkeln
rval = [ 0, pi/6, pi/4, pi/2, pi ]
sval = [ sin(0), sin(pi/6), sin(pi/4), sin(pi/2), sin(pi) ]
frsin = sin( rval )
frcos = cos( rval )
c = pi/180
wval = [ 0, 30, 45, 90, 180 ]
cval = [ sin(0*c), sin(30*c), sin(45*c), sin(90*c), sin(180*c) ]
fwsin = sin( wval * c )
dval = [ sind(0), sind(30), sind(45), sind(90), sind(180) ]
fsind = sind( wval )
fcosd = cosd( wval )
|
Aufgabe 1.4
Was erhalten Sie, wenn Sie den Spaltenvektor v = [2;3]
mit der Matrix A = [1 0;0 −1]
multiplizieren? Was ist das Ergebnis von A * A
?
Musterlösung |
% Aufgabe 1.4:
v = [2;3]
A = [1 0; 0 -1]
A_v = A * v
A_A = A * A
|
Aufgabe 1.5
Erzeugen Sie einen Zeilenvektor, der als Komponenten nicht Zahlen, sondern Buchstaben enthält. Überprüfen Sie den Typ des Vektors mit der Funktion whos
.
Tipp |
Artikel zum thema String und Char |
Musterlösung |
% Aufgabe 1.5:
s = [ 'H', 'e', 'l', 'l', 'o' ]
whos s
|
Aufgabe 1.6
- Versuchen Sie, durch bewusst falsche Anweisungen Fehlermeldungen zu erzeugen, um ein Gefühl dafür zu bekommen, wie MATLAB auf Fehler reagiert.
- Verwenden Sie die Cursor-Tasten, um aus der Command History vorher bereits benutzte Befehle zu wiederholen und zu verändern.
- Schauen Sie sich auch einmal den Workspace-Editor an, mit dem Sie zum Beispiel die Inhalte von Variablen mittels Copy & Paste nach MS-Excel übernehmen können.
Musterlösung |
% Aufgabe 1.6:
% Beispiele für fehlerhafte Anweisungen
e0 = 3,4 * 3
e1 = 'Hello,
world'
e2 = [5 2] * [3 3]
|
Symbolisches Rechnen
Hinweis: Statt * / ^
verwenden Sie .* ./ .^
(Punktoperator vor Operation anwenden):
Aufgabe 2.1
Definieren Sie folgende Funktionen mit Matlab (Befehle: syms
)
Musterlösung |
% Aufgabe 2.1:
syms x y
y = 2.*x.^3 + 12.*x.^2 + 19.*x + 9;
y = (-1./58)*(x.^2 - 100.*x -416);
y = ((x-1).*(x+5))./((x+1).^2 .* (x-3));
clear x y
|
Aufgabe 2.2
Multiplizieren Sie folgende Ausdrücke aus (Befehle: expand()
)
Musterlösung |
% Aufgabe 2.2:
syms x y
expand((3.*x - 2.*y)^3);
expand((4.*x - y)^4);
clear x y
|
Aufgabe 2.3
Vereinfachen Sie folgende Ausdrücke (Befehle: exp(), log(), simplify()
)
Musterlösung |
% Aufgabe 2.3:
syms x y
simplify(sin(x).^2 + cos(x).^2);
simplify(exp(log(x)));
simplify((x.^2 - y.^2)./(x-y));
clear x y
|
Aufgabe 2.4
Verwenden Sie simplify
zur Ausführung der Polynomdivision P3/P1.
Musterlösung |
% Aufgabe 2.4:
syms x P1 P3
P1 = x - 1;
P3 = x.^3 - 6.*x.^2 - x + 6;
simplify(P3/P1);
clear x P1 P3
|
Aufgabe 2.5
Lösen Sie folgende Gleichungen (Befehl: sqrt(), log10(), solve()
).
Hinweis: Benutzen Sie „==“ statt „=“
Musterlösung |
% Aufgabe 2.5:
syms x
solve(11-sqrt(x+3) == 6, x);
solve(3.^x == 4.^(x-2) .* 2.^x, x);
solve(log10(6.*x + 10) - log10(x - 3) == 1, x);
clear x
|
Aufgabe 2.6
Berechnen Sie folgende Grenzwerte (Befehle: limit(), inf
).
Musterlösung |
% Aufgabe 2.6:
syms x
limit((2.*x^2 + 5.*x)./(3.*x),x,1);
limit(1./x,x,inf);
clear x
|
Aufgabe 2.7
Berechnen Sie die erste und zweite Ableitung folgender Funktionen (Befehle: diff()
).
Musterlösung |
% Aufgabe 2.7:
syms y x
y = x.^5 + log(x);
ydiff = diff(y);
ydiffdiff = diff(ydiff);
subplot(121)
fplot(y);
subplot(122);
fplot(ydiff);
y = 4.*sin(x).*tan(x);
ydiff = diff(y);
ydiffdiff = diff(ydiff);
clear x y
|
Aufgabe 2.8
Berechnen Sie das unbestimmte Integral folgender Funktionen (Befehle: int()
).
Musterlösung |
% Aufgabe 2.8:
syms x
int((3.*x.^8)./(x.^3 +1),x);
int(exp(2.*x)./(1+exp(x)),x);
clear x
|
Aufgabe 2.9
Berechnen Sie das bestimmte Integral folgender Funktion (Befehle: int()
).
Musterlösung |
% Aufgabe 2.9:
syms x y
int(x./((1 + x.^2).^2),x,0,1)
clear x y
|
Aufgabe 2.10
Für die Schnellen: Erkundigen Sie sich über folgende Berechnungen zur Funktionsanalyse bzw. Kurvendiskussion in Matlab (Befehle: diff(), subs(), solve(), vpa()
):
- Berechnen von lokalen Extremstellen
- Berechnen von Wendestellen
- Berechnen des y-Achsenabschnittes
Wenden Sie die Berechnungen auf die Aufgaben aus Teil 2.1 an.
Musterlösung |
% Aufgabe 2.10:
syms x y1 y2 y3
y1 = 2.*x.^3 + 12.*x.^2 + 19.*x + 9;
y2 = (-1./58)*(x.^2 - 100.*x -416);
y3 = ((x-1).*(x+5))./((x+1).^2 .* (x-3));
%% y1
y1diff1 = diff(y1);
y1diff2 = diff(y1diff1);
ycrossY1 = subs(y1,0);
ycrossX1 = 0;
max = solve(y1diff1 == 0,x);
extremaX1 = vpa(max);
extremaY1 = subs(y1,extremaX1);
inflection = solve(y1diff2 == 0,x);
inflectionX1 = vpa(inflection);
inflectionY1 = subs(y1,inflectionX1);
subplot(131);
fplot(y1);
hold on;
plot(ycrossX1,ycrossY1,'b*');
hold on;
plot(extremaX1,extremaY1,'r*');
hold on;
plot(inflectionX1,inflectionY1,'g*');
%% y2
y2diff1 = diff(y2);
y2diff2 = diff(y2diff1);
ycrossY2 = subs(y2,0);
ycrossX2 = 0;
max = solve(y2diff1 == 0,x);
extremaX2 = vpa(max);
extremaY2 = subs(y2,extremaX2);
inflection = solve(y2diff2 == 0,x);
inflectionX2 = vpa(inflection);
inflectionY2 = subs(y2,inflectionX2);
subplot(132);
fplot(y2);
hold on;
plot(ycrossX2,ycrossY2,'b*');
hold on;
plot(extremaX2,extremaY2,'r*');
hold on;
plot(inflectionX2,inflectionY2,'g*');
%% y3
y3diff1 = diff(y3);
y3diff2 = diff(y3diff1);
ycrossY3 = subs(y1,0);
ycrossX3 = 0;
max = solve(y3diff1 == 0,x);
extremaX3 = vpa(max);
extremaY3 = subs(y3,extremaX3);
inflection = solve(y3diff2 == 0,x);
inflectionX3 = vpa(inflection);
inflectionY3 = subs(y3,inflectionX3);
subplot(133);
fplot(y3);
hold on;
plot(ycrossX3,ycrossY3,'b*');
hold on;
plot(extremaX3,extremaY3,'r*');
hold on;
plot(inflectionX3,inflectionY3,'g*');
|
→ Termine 1
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: MATLAB Repetitorium