MATLAB - Array
Tutte le variabili di tutti i tipi di dati in MATLAB sono array multidimensionali. Un vettore è un array unidimensionale e una matrice è un array bidimensionale.
Abbiamo già discusso di vettori e matrici. In questo capitolo, discuteremo di array multidimensionali. Tuttavia, prima di ciò, esaminiamo alcuni tipi speciali di array.
Array speciali in MATLAB
In questa sezione, discuteremo alcune funzioni che creano alcuni array speciali. Per tutte queste funzioni, un singolo argomento crea un array quadrato, i doppi argomenti creano un array rettangolare.
Il zeros() la funzione crea un array di tutti zeri -
Ad esempio:
zeros(5)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
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
Il ones() la funzione crea un array di tutti quelli -
Ad esempio:
ones(4,3)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
ans =
1 1 1
1 1 1
1 1 1
1 1 1
Il eye() la funzione crea una matrice di identità.
Ad esempio:
eye(4)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Il rand() la funzione crea un array di numeri casuali distribuiti uniformemente su (0,1) -
Ad esempio:
rand(3, 5)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
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
Un quadrato magico
UN magic square è un quadrato che produce la stessa somma, quando i suoi elementi vengono aggiunti per riga, per colonna o diagonalmente.
Il magic()la funzione crea un array di quadrati magici. Ci vuole un argomento singolare che dia la dimensione del quadrato. L'argomento deve essere uno scalare maggiore o uguale a 3.
magic(4)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
ans =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Array multidimensionali
Un array con più di due dimensioni è chiamato array multidimensionale in MATLAB. Gli array multidimensionali in MATLAB sono un'estensione della normale matrice bidimensionale.
Generalmente per generare un array multidimensionale, creiamo prima un array bidimensionale e lo estendiamo.
Ad esempio, creiamo un array bidimensionale a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
a =
7 9 5
6 1 9
4 3 2
L'array a è un array 3 per 3; possiamo aggiungere una terza dimensione a a , fornendo valori come -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
a =
ans(:,:,1) =
0 0 0
0 0 0
0 0 0
ans(:,:,2) =
1 2 3
4 5 6
7 8 9
Possiamo anche creare array multidimensionali usando le funzioni ones (), zeros () o rand ().
Per esempio,
b = rand(4,3,2)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
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
Possiamo anche usare il cat()funzione per costruire array multidimensionali. Concatena un elenco di array lungo una dimensione specificata -
La sintassi per la funzione cat () è -
B = cat(dim, A1, A2...)
Dove,
B è il nuovo array creato
A1 , A2 , ... sono gli array da concatenare
dim è la dimensione lungo la quale concatenare gli array
Esempio
Crea un file di script e digita il seguente codice al suo interno:
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])
Quando esegui il file, viene visualizzato:
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
Funzioni array
MATLAB fornisce le seguenti funzioni per ordinare, ruotare, permutare, rimodellare o spostare i contenuti dell'array.
Funzione | Scopo |
---|---|
lunghezza | Lunghezza del vettore o dimensione massima della matrice |
ndims | Numero di dimensioni dell'array |
numel | Numero di elementi dell'array |
taglia | Dimensioni array |
iscolumn | Determina se l'input è un vettore colonna |
è vuoto | Determina se l'array è vuoto |
ismatrix | Determina se l'input è una matrice |
isrow | Determina se l'input è un vettore riga |
isscalar | Determina se l'input è scalare |
isvector | Determina se l'input è vettoriale |
blkdiag | Costruisce una matrice diagonale a blocchi dagli argomenti di input |
circshift | Sposta l'array in modo circolare |
ctranspose | Trasposizione coniugata complessa |
diag | Matrici diagonali e diagonali di matrice |
flipdim | Capovolge la matrice lungo la dimensione specificata |
fliplr | Capovolge la matrice da sinistra a destra |
flipud | Capovolge la matrice dall'alto verso il basso |
ipermuto | Le inversioni permutano le dimensioni della matrice ND |
permutare | Riorganizza le dimensioni della matrice ND |
repmat | Repliche e array di piastrelle |
rimodellare | Rimodella l'array |
rot90 | Ruota la matrice di 90 gradi |
shiftdim | Cambia le dimensioni |
smistato | Determina se gli elementi dell'insieme sono in ordine ordinato |
ordinare | Ordina gli elementi dell'array in ordine crescente o decrescente |
sortrows | Ordina le righe in ordine crescente |
spremere | Rimuove le dimensioni singleton |
trasporre | Trasporre |
vettorializzare | Vettorizza l'espressione |
Esempi
I seguenti esempi illustrano alcune delle funzioni sopra menzionate.
Length, Dimension and Number of elements −
Crea un file di script e digita il seguente codice al suo interno:
x = [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
Quando si esegue il file, viene visualizzato il seguente risultato:
ans = 8
ans = 4
ans = 23
Circular Shifting of the Array Elements −
Crea un file di script e digita il seguente codice al suo interno:
a = [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.
Quando si esegue il file, viene visualizzato il seguente risultato:
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
Ordinamento degli array
Crea un file di script e digita il seguente codice al suo interno:
v = [ 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
Quando si esegue il file, viene visualizzato il seguente risultato:
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
Cell Array
Gli array di celle sono array di celle indicizzate in cui ogni cella può memorizzare un array di dimensioni e tipi di dati diversi.
Il cellviene utilizzata per creare un array di celle. La sintassi per la funzione cella è -
C = cell(dim)
C = cell(dim1,...,dimN)
D = cell(obj)
Dove,
C è l'array di celle;
dim è un numero intero scalare o un vettore di numeri interi che specifica le dimensioni della matrice di celle C;
dim1, ..., dimN sono numeri interi scalari che specificano le dimensioni di C;
obj è uno dei seguenti:
- Matrice o oggetto Java
- Matrice .NET di tipo System.String o System.Object
Esempio
Crea un file di script e digita il seguente codice al suo interno:
c = cell(2, 5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Quando si esegue il file, viene visualizzato il seguente risultato:
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
}
Accesso ai dati negli array di celle
Esistono due modi per fare riferimento agli elementi di un array di celle:
- Racchiudere gli indici nella prima parentesi (), per fare riferimento a gruppi di celle
- Racchiudere gli indici tra parentesi graffe {}, per fare riferimento ai dati all'interno delle singole celle
Quando racchiudi gli indici nella prima parentesi, si riferisce all'insieme di celle.
Gli indici degli array di celle tra parentesi morbide si riferiscono a gruppi di celle.
Ad esempio:
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
ans =
{
[1,1] = Red
[2,1] = 1
[1,2] = Blue
[2,2] = 2
}
È inoltre possibile accedere al contenuto delle celle indicizzando con parentesi graffe.
Ad esempio:
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB eseguirà l'istruzione sopra e restituirà il seguente risultato:
ans = Blue
ans = Green
ans = Yellow