Vektoren
zeile = [1 2 3 4 5] % Zeilenvektor (Leerzeichen oder Komma)
spalte = [1; 2; 3] % Spaltenvektor (Semikolon)
von_bis = 1:5
schritt = 0:0.25:1
runter = 10:-3:0
linspace(0, 1, 5) % 5 gleichmäßig verteilte Punkte
logspace(0, 3, 4)
zeros(1, 3)
ones(2, 2)
numel(zeile)
length(spalte)
size(zeile)
zeile(1) % Indizes beginnen bei 1!
zeile(end)
zeile(2:4)
zeile([1 3 5])
zeile(zeile > 2) % logische Indizierung
zeile' % transponierenAusgabe
zeile =
1 2 3 4 5
spalte =
1
2
3
von_bis =
1 2 3 4 5
schritt =
0 0.2500 0.5000 0.7500 1.0000
runter =
10 7 4 1
ans =
0 0.2500 0.5000 0.7500 1.0000
ans =
1 10 100 1000
ans =
0 0 0
ans =
1 1
1 1
ans = 5
ans = 3
ans =
1 5
ans = 1
ans = 5
ans =
2 3 4
ans =
1 3 5
ans =
3 4 5
ans =
1
2
3
4
5Matrizen
A = [1 2 3; 4 5 6; 7 8 10]
size(A)
A(2, 3) % Zeile 2, Spalte 3
A(2, :) % ganze Zeile
A(:, 1) % ganze Spalte
A(1:2, 2:3) % Teilmatrix
A(end, end)
A(:)' % alle Elemente als Spalte (spaltenweise)
A(A > 5)'
A(2, :) = [] % Zeile löschen
B = zeros(2, 3);
B(:, 2) = [7; 8]
C = [A; 100 200 300] % Zeile anhängen
D = [A, [1; 2]] % Spalte anhängen
eye(3)
magic(3)
diag([1 2 3])
rand(2) >= 0
numel(rand(3, 4))
reshape(1:6, 2, 3)
repmat([1 2], 2, 2)Ausgabe
A =
1 2 3
4 5 6
7 8 10
ans =
3 3
ans = 6
ans =
4 5 6
ans =
1
4
7
ans =
2 3
5 6
ans = 10
ans =
1 4 7 2 5 8 3 6 10
ans =
7 8 6 10
A =
1 2 3
7 8 10
B =
0 7 0
0 8 0
C =
1 2 3
7 8 10
100 200 300
D =
1 2 3 1
7 8 10 2
ans =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
ans =
8 1 6
3 5 7
4 9 2
ans =
Diagonal Matrix
1 0 0
0 2 0
0 0 3
ans =
1 1
1 1
ans = 12
ans =
1 3 5
2 4 6
ans =
1 2 1 2
1 2 1 2Matrizen werden spaltenweise gespeichert: reshape(1:6, 2, 3) füllt erst Spalte 1, dann Spalte 2 usw. Mit A(5) greifst du über einen linearen Index zu.
Elementweise vs. Matrixoperationen
Der Punkt . vor dem Operator macht ihn elementweise:
a = [1 2 3];
b = [4 5 6];
a + b
a .* b
a ./ b
a .^ 2
a * b' % Skalarprodukt (Zeile * Spalte)
a' * b % äußeres Produkt (3x3)
dot(a, b)
cross([1 0 0], [0 1 0])
norm([3 4])
A = [2 1; 1 3];
A * A % Matrixprodukt
A .* A % elementweise
A ^ 2
A .^ 2
A'
inv(A)
det(A)
rank(A)
trace(A)
A \ [3; 5] % lineares Gleichungssystem A*x = b lösen
eig(A)Ausgabe
ans =
5 7 9
ans =
4 10 18
ans =
0.2500 0.4000 0.5000
ans =
1 4 9
ans = 32
ans =
4 5 6
8 10 12
12 15 18
ans = 32
ans =
0 0 1
ans = 5
ans =
5 5
5 10
ans =
4 1
1 9
ans =
5 5
5 10
ans =
4 1
1 9
ans =
2 1
1 3
ans =
0.6000 -0.2000
-0.2000 0.4000
ans = 5.0000
ans = 2
ans = 5
ans =
0.8000
1.4000
ans =
1.3820
3.6180Funktionen auf Vektoren und Matrizen
x = [4 8 15 16 23 42];
sum(x)
prod([1 2 3 4])
mean(x)
median(x)
std(x)
var(x)
max(x)
[m, i] = max(x)
min(x)
sort(x, 'descend')
cumsum(x)
diff(x)
any(x > 40)
all(x > 0)
find(x > 10)
fliplr(x)
unique([3 1 2 3 1])
numel(find(x > 10))
A = magic(4);
sum(A) % Spaltensummen
sum(A, 2)' % Zeilensummen
sum(A(:))
mean(A(:))
max(A, [], 2)'
diag(A)'
triu(A)
any(A(:) == 16)Ausgabe
ans = 108
ans = 24
ans = 18
ans = 15.500
ans = 13.491
ans = 182
ans = 42
m = 42
i = 6
ans = 4
ans =
42 23 16 15 8 4
ans =
4 12 27 43 66 108
ans =
4 7 1 7 19
ans = 1
ans = 1
ans =
3 4 5 6
ans =
42 23 16 15 8 4
ans =
1 2 3
ans = 4
ans =
34 34 34 34
ans =
34 34 34 34
ans = 136
ans = 8.5000
ans =
16 11 12 15
ans =
16 11 6 1
ans =
16 2 3 13
0 11 10 8
0 0 6 12
0 0 0 1
ans = 1Merke
- Vektoren:
[1 2 3](Zeile),[1; 2; 3](Spalte),1:5,linspace - Indizes beginnen bei 1;
A(zeile, spalte),:= alle,end= letztes *ist Matrixprodukt,.*elementweise- Lineare Gleichungssysteme löst
A \ b sum,mean,max,sort,find,cumsumwirken spaltenweise auf Matrizen
Aufgabe
Löse das Gleichungssystem 2x + y = 5, x + 3y = 10 mit dem Backslash-Operator.