Matrixrekening: Matrices in MATLAB
Selectie van componenten en toewijzing van waarden
Selectie van componenten en deelmatrices Je kunt op verschillende manieren componenten van matrices selecteren. We geven een paar voorbeelden, waaruit blijkt dat indexering begint bij (1, 1) en er slimme manieren zijn om deelmatrices te creëren. Het allerlaatste commando uit onderstaande sessie illustreert dat je in MATLAB een matrix ook kan opvatten als een kolomvector verkregen door alle kolommen van links naar rechts onder elkaar te zetten; je kunt daarom ook met één index een element aanwijzen.
>> M = [2:5; 6:9; 10:13]
M =
2 3 4 5
6 7 8 9
10 11 12 13
>> M(2,3) % een enkel element
ans =
8
>> M(:, 3) % derde kolom
ans =
4
8
12
>> M(1,:) % eerste rij
ans =
2 3 4 5
>> M(1, 2:end) % eerste rij, alles behalve eerste kolom
ans =
3 4 5
>> M(1:2, 1:2) % deelmatrix
ans =
2 3
6 7
>> M(6) % selectie van component door matrix als kolomvector te lezen
ans =
11
Selectie via logische expressies Je kunt ook logische indexering (met nullen en enen) gebruiken om elementen van matrices te selecteren. Hiervoor heb je relationele operatoren nodig, zoals uit onderstaande tabel. Behalve logische indexering kan je ook de find
instructie gebruiken om geschikte indices bij een logische uitdrukking op te sporen
== | gelijk aan | ~= | niet gelijk aan |
< | kleiner dan | > | groter dan |
<= | kleiner dan of gelijk aan | >= | groter dan of gelijk aan |
>> M = [2:5; 6:9; 10:13]
M =
2 3 4 5
6 7 8 9
10 11 12 13
>> M>7 % matrixwaarde 1 als aan de voorwaarde voldaan is en anders 0
ans =
3×4 logical array
0 0 0 0
0 0 1 1
1 1 1 1
>> M(ans) % kolomsgewijze selectie van componenten
ans =
10
11
8
12
9
13
>> find(M<8) % selectie van indices via find commando
ans =
1
2
4
5
7
8
10
>> M(ans) % kolomsgewijze selectie van componenten
ans =
2
6
3
7
4
5
Toewijzing Componenten waar je naar refereert kun je ook een waarde toewijzen
>> M = [2:5; 6:9; 10:13]
M =
2 3 4 5
6 7 8 9
10 11 12 13 >> M(3,4) = 17 % enkel matrixelement gewijzigd
M =
2 3 4 5
6 7 8 9
10 11 12 17
>> M(:,4) = 1 % alle elementen in de vierde kolom gelijk aan 1 gesteld M =
2 3 4 1
6 7 8 1
10 11 12 1 >> M(1,:) = [] % eerste rij verwijderd M =
6 7 8 1
10 11 12 1 >> M(:) = 0 % alle elementen gelijk aan 0 gesteldM =
0 0 0 0
0 0 0 0
Door toewijzing kan je dus ook de structuur wijzigen op voorwaarde dat je wel een matrix overhoudt. In onderstaand voorbeeld geven we een matrix extra componenten door toewijzing. Dit is overigens niet een aanbevolen manier om te werken. Het vooraf reserveren van voldoende ruimte voor componenten in een matrix via de zeros constructie en dan pas de matrix vullen met waarden door toewijzing is een betere manier om gegevens te verzamelen in MATLAB experimenten.
>> clear all
>> M = [2,4; 3, 5] % 2x2 matrix
M =
2 4
3 5
>> M(:,3) = [6; 7] % 2x3 matrix door toevoeging
M =
2 4 6
3 5 7
Vormverandering Je kunt uitgaande van een vector of matrix ook de vorm veranderen. Onderstaande twee voorbeelden illustreren dit.
>> v = 1:6 % vector van lengte 6
v =
1 2 3 4 5 6
>> A = reshape(v, 3, 2) % 3x2 matrix
A =
1 4
2 5
3 6
>> B = reshape(A, 2, 3) % 2x3 matrix
B =
1 3 5
2 4 6