MATLAB: Multidimensionale en Speciale Arrays Beheersen
In MATLAB zijn alle variabelen van alle gegevenstypen multidimensionale arrays. Een vector is een eendimensionaal array en een matrix is een tweedimensionaal array.
We hebben al vectors en matrices besproken. In dit hoofdstuk bespreken we multidimensionale arrays, maar eerst bekijken we enkele speciale typen arrays.
Speciale Arrays in MATLAB
In deze sectie bespreken we functies die speciale arrays aanmaken. Voor al deze functies creëert een enkel argument een vierkant array, terwijl twee argumenten een rechthoekig array produceren.
De zeros() functie
De zeros() functie creëert een array gevuld met nullen:
zeros(5)
MATLAB geeft het volgende resultaat terug:
ans =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
De ones() functie
De ones() functie creëert een array gevuld met enen:
ones(4,3)
MATLAB geeft het volgende resultaat terug:
ans =
1 1 1
1 1 1
1 1 1
1 1 1
De eye() functie
De eye() functie creëert een identiteitsmatrix:
eye(4)
MATLAB geeft het volgende resultaat terug:
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
De rand() functie
De rand() functie creëert een array met uniform verdeelde willekeurige getallen op het interval (0,1):
rand(3, 5)
MATLAB geeft een resultaat terug zoals:
ans =
0.8147 0.9134 0.2785 0.9649 0.9572
0.9058 0.6324 0.5469 0.1576 0.4854
0.1270 0.0975 0.9575 0.9706 0.8003
Een Magisch Vierkant
Een magisch vierkant is een vierkante matrix waarbij de som van de elementen in elke rij, kolom en diagonaal gelijk is.
De magic() functie creëert een magisch vierkant. Het neemt een enkel argument dat de grootte van het vierkant aangeeft. Het argument moet een scalar zijn van minstens 3.
magic(4)
MATLAB geeft het volgende resultaat terug:
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Multidimensionale Arrays
Een array met meer dan twee dimensies wordt in MATLAB een multidimensionaal array genoemd. Dit is een uitbreiding van de standaard tweedimensionale matrix.
Om een multidimensionaal array te maken, creëert men meestal eerst een tweedimensionaal array en breidt deze uit.
Voorbeeld: Een derde dimensie toevoegen
Laten we eerst een tweedimensionaal array a maken:
a = [7 9 5; 6 1 9; 4 3 2]
Dit geeft een 3x3 matrix. We voegen een derde dimensie toe door waarden toe te wijzen aan de derde pagina:
a(:, :, 2) = [1 2 3; 4 5 6; 7 8 9]
MATLAB toont nu beide pagina's:
a(:,:,1) =
7 9 5
6 1 9
4 3 2
a(:,:,2) =
1 2 3
4 5 6
7 8 9
Multidimensionale arrays kunnen ook gemaakt worden met ones(), zeros() of rand() door extra dimensies op te geven:
b = rand(4,3,2)
De cat() functie
De cat() functie concateneert arrays langs een gespecificeerde dimensie:
B = cat(dim, A1, A2, ...)
Bis het nieuwe geconcateneerde arrayA1, A2, ...zijn de arrays die geconcateneerd wordendimis de dimensie langs welke geconcateneerd wordt
Voorbeeld van cat()
a = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [2 3 1; 4 7 8; 3 9 0])
Resultaat:
c(:,:,1) =
9 8 7
6 5 4
3 2 1
c(:,:,2) =
1 2 3
4 5 6
7 8 9
c(:,:,3) =
2 3 1
4 7 8
3 9 0
Array Functies
MATLAB biedt diverse functies voor het manipuleren van arrays: sorteren, roteren, permuteren, reshapen, shiften, etc.
| Functie | Doel |
|---|---|
| length | Lengte van vector of grootste array dimensie |
| ndims | Aantal array dimensies |
| numel | Aantal array elementen |
| size | Array dimensies |
| iscolumn | Controleert of invoer kolomvector is |
| isempty | Controleert of array leeg is |
| ismatrix | Controleert of invoer matrix is |
| isrow | Controleert of invoer rijvector is |
| isscalar | Controleert of invoer scalar is |
| isvector | Controleert of invoer vector is |
| blkdiag | Construeert blok-diagonale matrix |
| circshift | Circulair verschuiven van array |
| ctranspose | Complex geconjugeerde transpositie |
| diag | Diagonale matrices en diagonalen |
| flipdim | Array omkeren langs dimensie |
| fliplr | Matrix links-rechts omkeren |
| flipud | Matrix boven-onder omkeren |
| ipermute | Inverse permutatie van N-D array |
| permute | Dimensies van N-D array herrangschikken |
| repmat | Array repliceren en tegelen |
| reshape | Array reshapen |
| rot90 | Matrix 90 graden roteren |
| shiftdim | Dimensies verschuiven |
| issorted | Controleert of elementen gesorteerd zijn |
| sort | Array elementen sorteren |
| sortrows | Rijen sorteren |
| squeeze | Singleton dimensies verwijderen |
| transpose | Transpositie |
| vectorize | Expressie vectoriseren |
Voorbeelden
Lengte, Dimensies en Aantal Elementen
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % lengte van vector x y = rand(3, 4, 5, 2); ndims(y) % aantal dimensies in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % aantal elementen in s
Resultaat:
ans = 8 ans = 4 ans = 23
Circulair Verschuiven van Array Elementen
a = [1 2 3; 4 5 6; 7 8 9]; b = circshift(a,1); % eerste dimensie 1 naar beneden verschuiven c = circshift(a,[1 -1]); % eerste dimensie 1 naar beneden, tweede 1 naar links
Resultaat:
a =
1 2 3
4 5 6
7 8 9
b =
7 8 9
1 2 3
4 5 6
c =
8 9 7
2 3 1
5 6 4
Arrays Sorteren
v = [23 45 12 9 5 0 19 17]; sort(v) % vector sorteren m = [2 6 4; 5 3 9; 2 0 1]; sort(m, 1) % sorteren langs rijen (kolomgewijs) sort(m, 2) % sorteren langs kolommen (rijgewijs)
Resultaat:
v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2
Cel Arrays
Cel arrays zijn arrays van geïndexeerde cellen waarbij elke cel een array van verschillende dimensies en datatypes kan bevatten.
De cell functie creëert een cel array:
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Voorbeeld
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Resultaat:
c =
2×5 cell array
{'Red' } {'Blue' } {'Green' } {'Yellow'} {'White'}
{[ 1]} {[ 2]} {[ 3]} {[ 4]} {[ 5]}
Data Benaderen in Cel Arrays
Er zijn twee manieren om elementen in een cel array te benaderen:
- Haakjes
()voor sets van cellen - Accolades
{}voor de data binnen individuele cellen
Voorbeeld met haakjes (set van cellen)
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
Resultaat:
ans =
2×2 cell array
{'Red' } {'Blue'}
{[ 1]} {[ 2]}
Voorbeeld met accolades (inhoud van cellen)
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
Resultaat:
ans = 'Blue' ans = 'Green' ans = 'Yellow'
MATLAB
- C# Arrays: Declaratie, Initialisatie en Operaties
- C# Jagged Arrays: Declaratie, Initialisatie en Toegang
- C++ Arrays Ontmaskerd: Declaratie, Initialisatie en Pointer‑Technieken
- C++ Dynamische Array‑Allocatie: Praktische Handleiding met Code‑Voorbeelden
- MATLAB: Uitgebreid Overzicht van een Leidende Numerieke Rekenomgeving
- Variabelen in MATLAB Begrijpen: Basis en Voorbeelden
- Essentiële MATLAB Commando's voor Efficiënte Berekening
- MATLAB Matrix Basis: Data Aanmaken, Benaderen en Manipuleren
- MATLAB Getallen: Typen, Opslag en Conversie
- MATLAB Strings: Maken, Manipuleren en Functies
- Java array-kopieertechnieken: een uitgebreide gids