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