Matrixrekening: Matrices in MATLAB
Basiseigenschappen en creatie van matrices
Matrices zijn in MATLAB 2-dimensionale arrays. Je kunt denken aan een opbouw van rijvectoren van gelijke lengte die onder elkaar gezet worden.
>> A = [1 2 3; 4 5 6] % expliciete invoer van matrixelementen
A =
1 2 3
4 5 6
>> A = [1:3; 4:6] % iteraties gebruikt voor de rijen in de matrix
A =
1 2 3
4 5 6
>> dimensie = size(A)
dimensie =
2 3
\(\phantom{x}\)
Andere veelgebruikte methoden om arrays te maken illustreren we ook aan de hand van voorbeelden.
Constructie van een matrix via herhalingslussen
>> A = zeros(4,5); % nulmatrix om opslagruimte efficient te reserveren
>> for i = 1:3
for j = 1:3
A(i,j) = i^j % definitie van een matrixelement
end
end
>> A
A =
1 1 1 1
2 4 8 16
3 9 27 81
Constructie van een matrix via een indexeringsfunctie
>> i = (1:3)'; j = 1:4; fun = @(a,b) a.^b;
>> A = bsxfun(fun, i, j)
A =
1 1 1 1
2 4 8 16
3 9 27 81
Constructie van een speciale matrix Er bestaan ook speciale functies om matrices en vectoren met enen en nullen te creëren, namelijk zeros
, eye
en ones
, en om diagonaalmatrices te maken, namelijkdiag
:
>> Z = zeros(2,4) % nulmatrix
Z =
0 0 0 0
0 0 0 0
>> I = eye(3) % identiteitsmatrix
I =
1 0 0
0 1 0
0 0 1
>> J = ones(3,3) % matrix met 1-en
J =
1 1 1
1 1 1
1 1 1
>> diag([1 2 3]) % diagnonaalmatrix
ans =
1 0 0
0 2 0
0 0 3
Constructie van een matrix door stapeling Arrays kunnen ook horizontaal en verticaal gestapeld worden:
>> [A I] % horizontale stapeling van matrices
ans =
1 1 1 1 1 0 0
2 4 8 16 0 10
3 9 27 81 0 0 1
> [Z; A; Z] % verticale stapeling van matrices
ans =
0 0 0 0
0 0 0 0
1 1 1 1
2 4 8 16
3 9 27 81
0 0 0 0
0 0 0 0
Constructie van een willekeurige matrix Je kunt ook willekeurig gegenereerde matrices creëren.
>> A = rand(3,2) % random 3x2 matrix met getallen tussen 0 en 1
A =
0.7922 0.0357
0.9595 0.8491
0.6557 0.9340
>> A = randi([5,8], 2, 3) % random 2x3 matrix met gehele getallen in segment [5, 8]
A =
6 8 5
7 8 8
Constructie van een regelmatige rooster We bespreken nog twee speciale MATLAB functies om vectoren en arrays te maken, namelijk linspace
en meshgrid
. Deze functies zullen we veel gebruiken voor het tekenen van grafieken en oppervlakken. Als je een array van \(N\) equidistante waarden uit het interval \((a,b)\) wilt maken, doe dit dan met de functieaanroep linspace(a,b,N)
:
>> x = linspace(0,2,5)
x =
0 0.5000 1.0000 1.5000 2.0000
>> y = linspace(0,1,3)
y =
0 0.5000 1.0000
Deze arrays zijn te gebruiken om een 2-dimensionaal rooster te definiëren en de \(x\)- en \(y\)-coördinaten van alle roosterpunten op te slaan.
>> [X, Y] = meshgrid(x, y);
>> X
X =
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
>> Y
Y =
0 0 0 0 0
0.5000 0.5000 0.5000 0.5000 0.5000
1.0000 1.0000 1.0000 1.0000 1.0000