MATLAB - Arrays
Alle variabelen van alle gegevenstypen in MATLAB zijn multidimensionale arrays. Een vector is een eendimensionale array en een matrix is een tweedimensionale array.
We hebben vectoren en matrices al besproken. In dit hoofdstuk zullen we multidimensionale arrays bespreken. Laten we echter eerst enkele speciale typen arrays bespreken.
Speciale arrays in MATLAB
In deze sectie zullen we enkele functies bespreken die een aantal speciale arrays creëren. Voor al deze functies creëert een enkel argument een vierkante array, dubbele argumenten een rechthoekige array.
De nullen() functie maakt een array van allemaal nullen −
Bijvoorbeeld −
Live demozeros(5)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
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 en() functie maakt een array van allemaal enen −
Bijvoorbeeld −
Live demoones(4,3)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 1 1 1 1 1 1 1 1 1 1 1 1
Het oog() functie creëert een identiteitsmatrix.
Bijvoorbeeld −
Live demoeye(4)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
De rand() functie creëert een array van uniform verdeelde willekeurige getallen op (0,1) −
Bijvoorbeeld −
Live demorand(3, 5)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
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 vierkant dat dezelfde som produceert, wanneer de elementen rijsgewijs, kolomgewijs of diagonaal worden toegevoegd.
De magie() functie creëert een magisch vierkant array. Er is een enkelvoudig argument voor nodig dat de grootte van het vierkant geeft. Het argument moet een scalair groter dan of gelijk aan 3 zijn.
Live demomagic(4)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
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 multidimensionale array genoemd. Multidimensionale arrays in MATLAB zijn een uitbreiding van de normale tweedimensionale matrix.
Om een multidimensionale array te genereren, maken we over het algemeen eerst een tweedimensionale array en breiden deze uit.
Laten we bijvoorbeeld een tweedimensionale array a maken.
Live demoa = [7 9 5; 6 1 9; 4 3 2]
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
a = 7 9 5 6 1 9 4 3 2
De array a is een 3-bij-3-array; we kunnen een derde dimensie toevoegen aan a , door waarden zoals −
. op te geven Live demoa(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9
We kunnen ook multidimensionale arrays maken met de functies enen(), nullen() of rand().
Bijvoorbeeld,
Live demob = rand(4,3,2)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
We kunnen ook de cat() . gebruiken functie om multidimensionale arrays te bouwen. Het voegt een lijst met arrays samen langs een gespecificeerde dimensie −
Syntaxis voor de functie cat() is −
B = cat(dim, A1, A2...)
Waar,
-
B is de nieuwe array gemaakt
-
A1 , A2 , ... zijn de aaneengeschakelde arrays
-
dim is de dimensie waarlangs de arrays moeten worden samengevoegd
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live demoa = [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])
Wanneer u het bestand uitvoert, wordt −
. weergegevenc(:,:,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 de volgende functies om array-inhoud te sorteren, roteren, permuteren, hervormen of verschuiven.
Functie | Doel |
---|---|
lengte | Lengte van vector of grootste matrixdimensie |
ndims | Aantal matrixafmetingen |
cijfer | Aantal array-elementen |
grootte | Array-afmetingen |
iscolumn | Bepaalt of invoer een kolomvector is |
isleeg | Bepaalt of array leeg is |
ismatrix | Bepaalt of invoer matrix is |
isrow | Bepaalt of invoer rijvector is |
isscalar | Bepaalt of invoer scalair is |
isvector | Bepaalt of invoer vector is |
blkdiag | Construeert blokdiagonaalmatrix van invoerargumenten |
circshift | Verschuift array circulair |
ctranspose | Complex geconjugeerd transponeren |
diag | Diagonale matrices en diagonalen van matrix |
flipdim | Draait array om langs gespecificeerde afmeting |
fliplr | Draait matrix van links naar rechts |
flipud | Draait matrix omhoog naar beneden |
ipermute | Keert permute-dimensies van N-D-array om |
permuteren | Hordent de afmetingen van de N-D-array |
repmat | Repliceert en tegelarray |
hervorm | Vormt array opnieuw |
rot90 | Draait matrix 90 graden |
shiftdim | Dimensies verschuiven |
gesorteerd | Bepaalt of set-elementen in gesorteerde volgorde staan |
sorteer | Sort array-elementen in oplopende of aflopende volgorde |
sortrows | Rijen in oplopende volgorde sorteren |
knijpen | Verwijdert singleton-dimensies |
transponeren | Transponeren |
vectoriseren | Vectoriseert expressie |
Voorbeelden
De volgende voorbeelden illustreren enkele van de hierboven genoemde functies.
Lengte, afmeting en aantal elementen −
Maak een scriptbestand en typ de volgende code erin −
Live demox = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
ans = 8 ans = 4 ans = 23
Circulaire verschuiving van de array-elementen −
Maak een scriptbestand en typ de volgende code erin −
Live demoa = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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
Maak een scriptbestand en typ de volgende code erin −
Live demov = [ 23 45 12 9 5 0 19 17] % horizontal vector sort(v) % sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
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
Celmatrix
Celarrays zijn arrays van geïndexeerde cellen waarin elke cel een array met verschillende dimensies en gegevenstypen kan opslaan.
De cel functie wordt gebruikt voor het maken van een celarray. Syntaxis voor de celfunctie is −
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Waar,
-
C is de celarray;
-
dim is een scalair geheel getal of vector van gehele getallen die de afmetingen van celarray C specificeert;
-
dim1, ... , dimN zijn scalaire gehele getallen die de afmetingen van C specificeren;
-
obj is een van de volgende −
- Java-array of -object
- .NET-array van het type System.String of System.Object
Voorbeeld
Maak een scriptbestand en typ de volgende code erin −
Live democ = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Wanneer u het bestand uitvoert, wordt het volgende resultaat weergegeven −
c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 }
Toegang tot gegevens in celarrays
Er zijn twee manieren om naar de elementen van een celarray te verwijzen −
- De indices tussen het eerste haakje (), om te verwijzen naar reeksen cellen
- De indices tussen accolades {} om te verwijzen naar de gegevens in afzonderlijke cellen
Wanneer u de indexen tussen de eerste haakjes plaatst, verwijst dit naar de reeks cellen.
Celarray-indices tussen gladde haakjes verwijzen naar sets cellen.
Bijvoorbeeld −
Live democ = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 }
U kunt ook toegang krijgen tot de inhoud van cellen door te indexeren met accolades.
Bijvoorbeeld −
Live democ = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}
MATLAB zal de bovenstaande instructie uitvoeren en het volgende resultaat retourneren −
ans = Blue ans = Green ans = Yellow
MATLAB