Array multidimensionali
Un array multidimensionale in MATLAB® è un array con più di due dimensioni. In una matrice, le due dimensioni sono rappresentate da righe e colonne.

Ciascun elemento è definito da due pedici, l'indice di riga e l'indice di colonna. Gli array multidimensionali sono un'estensione delle matrici bidimensionali e utilizzano pedici aggiuntivi per l'indicizzazione. Ad esempio, un array tridimensionale utilizza tre pedici. Le prime due sono proprio come una matrice, mentre la terza dimensione rappresenta pagine o fogli di elementi.

Creazione di array multidimensionali
È possibile creare un array multidimensionale creando prima una matrice bidimensionale e poi estendendola. Ad esempio, definire prima una matrice 3x3 come prima pagina di un array tridimensionale.
A = [1 2 3; 4 5 6; 7 8 9]
A = 3×3
1 2 3
4 5 6
7 8 9
Ora aggiungere una seconda pagina. A tale scopo, assegnare un'altra matrice 3x3 al valore con indice 2 nella terza dimensione. La sintassi A(:,:,2) utilizza i due punti nella prima e nella seconda dimensione per includere tutte le righe e tutte le colonne dal lato destro dell'assegnazione.
A(:,:,2) = [10 11 12; 13 14 15; 16 17 18]
A =
A(:,:,1) =
1 2 3
4 5 6
7 8 9
A(:,:,2) =
10 11 12
13 14 15
16 17 18
La funzione cat può essere un utile strumento per costruire array multidimensionali. Ad esempio, creare un nuovo array tridimensionale B concatenando A con una terza pagina. Il primo argomento indica lungo quale dimensione concatenare.
B = cat(3,A,[3 2 1; 0 9 8; 5 3 7])
B =
B(:,:,1) =
1 2 3
4 5 6
7 8 9
B(:,:,2) =
10 11 12
13 14 15
16 17 18
B(:,:,3) =
3 2 1
0 9 8
5 3 7
Un altro modo per espandere rapidamente un array multidimensionale consiste nell'assegnare un singolo elemento a un'intera pagina. Ad esempio, aggiungere una quarta pagina a B che contenga tutti zeri.
B(:,:,4) = 0
B =
B(:,:,1) =
1 2 3
4 5 6
7 8 9
B(:,:,2) =
10 11 12
13 14 15
16 17 18
B(:,:,3) =
3 2 1
0 9 8
5 3 7
B(:,:,4) =
0 0 0
0 0 0
0 0 0
Accesso agli elementi
Per accedere agli elementi di un array multidimensionale, utilizzare i pedici interi come per i vettori e le matrici. Ad esempio, trovare l'elemento 1,2,2 di A situato nella prima riga, seconda colonna e seconda pagina di A.
A
A =
A(:,:,1) =
1 2 3
4 5 6
7 8 9
A(:,:,2) =
10 11 12
13 14 15
16 17 18
elA = A(1,2,2)
elA = 11
Utilizzare il vettore indice [1 3] nella seconda dimensione per accedere solo alla prima e all'ultima colonna di ciascuna pagina di A.
C = A(:,[1 3],:)
C =
C(:,:,1) =
1 3
4 6
7 9
C(:,:,2) =
10 12
13 15
16 18
Per trovare la seconda e la terza riga di ciascuna pagina, utilizzare l'operatore dei due punti per creare il vettore indice.
D = A(2:3,:,:)
D =
D(:,:,1) =
4 5 6
7 8 9
D(:,:,2) =
13 14 15
16 17 18
Manipolazione di array
Gli elementi degli array multidimensionali possono essere spostati in molti modi, in modo analogo ai vettori e alle matrici. reshape, permute e squeeze sono funzioni utili per riordinare gli elementi. Considerare un array tridimensionale con due pagine.

Rimodellare un array multidimensionale può essere utile per eseguire alcune operazioni o visualizzare i dati. Utilizzare la funzione reshape per riorganizzare gli elementi dell'array tridimensionale in una matrice 6x5.
A = [1 2 3 4 5; 9 0 6 3 7; 8 1 5 0 2]; A(:,:,2) = [9 7 8 5 2; 3 5 8 5 1; 6 9 4 3 3]; B = reshape(A,[6 5])
B = 6×5
1 3 5 7 5
9 6 7 5 5
8 5 2 9 3
2 4 9 8 2
0 3 3 8 1
1 0 6 4 3
reshape opera colonna per colonna e crea la nuova matrice prendendo elementi consecutivi lungo ogni colonna di A, iniziando dalla prima pagina e passando poi alla seconda.
Per riorganizzare l'ordine delle dimensioni di un array si utilizzano le permutazioni. Considerare un array tridimensionale M.
M(:,:,1) = [1 2 3; 4 5 6; 7 8 9]; M(:,:,2) = [0 5 4; 2 7 6; 9 3 1]
M =
M(:,:,1) =
1 2 3
4 5 6
7 8 9
M(:,:,2) =
0 5 4
2 7 6
9 3 1
Utilizzare la funzione permute per scambiare i pedici di riga e di colonna in ciascuna pagina, specificando l'ordine delle dimensioni nel secondo argomento. Le righe originali di M sono ora colonne e le colonne sono ora righe.
P1 = permute(M,[2 1 3])
P1 =
P1(:,:,1) =
1 4 7
2 5 8
3 6 9
P1(:,:,2) =
0 2 9
5 7 3
4 6 1
In modo analogo, scambiare i pedici di riga e pagina di M.
P2 = permute(M,[3 2 1])
P2 =
P2(:,:,1) =
1 2 3
0 5 4
P2(:,:,2) =
4 5 6
2 7 6
P2(:,:,3) =
7 8 9
9 3 1
Quando si lavora con array multidimensionali, può capitare di incontrarne uno che ha una dimensione non necessaria di lunghezza 1. La funzione squeeze esegue un altro tipo di manipolazione che elimina le dimensioni di lunghezza 1. Ad esempio, utilizzare la funzione repmat per creare un array 2x3x1x4 in cui tutti gli elementi sono 5 e la cui terza dimensione ha lunghezza 1.
A = repmat(5,[2 3 1 4])
A =
A(:,:,1,1) =
5 5 5
5 5 5
A(:,:,1,2) =
5 5 5
5 5 5
A(:,:,1,3) =
5 5 5
5 5 5
A(:,:,1,4) =
5 5 5
5 5 5
szA = size(A)
szA = 1×4
2 3 1 4
numdimsA = ndims(A)
numdimsA = 4
Utilizzare la funzione squeeze per rimuovere la terza dimensione, ottenendo un array tridimensionale.
B = squeeze(A)
B =
B(:,:,1) =
5 5 5
5 5 5
B(:,:,2) =
5 5 5
5 5 5
B(:,:,3) =
5 5 5
5 5 5
B(:,:,4) =
5 5 5
5 5 5
szB = size(B)
szB = 1×3
2 3 4
numdimsB = ndims(B)
numdimsB = 3