Documentation

Multidimensional Arrays

A multidimensional array in MATLAB® is an array with more than two dimensions. In a matrix, the two dimensions are represented by rows and columns.

Each element is defined by two subscripts, the row index and the column index. Multidimensional arrays are an extension of 2-D matrices and use additional subscripts for indexing. A 3-D array, for example, uses three subscripts. The first two are just like a matrix, but the third dimension representspagesorsheetsof elements.

Creating Multidimensional Arrays

您可以创建一个多维数组肌氨酸g a 2-D matrix first, and then extending it. For example, first define a 3-by-3 matrix as the first page in a 3-D array.

A = [1 2 3; 4 5 6; 7 8 9]
A =3×31 2 3 4 5 6 7 8 9

Now add a second page. To do this, assign another 3-by-3 matrix to the index value 2 in the third dimension. The syntaxA(:,:,2)uses a colon in the first and second dimensions to include all rows and all columns from the right-hand side of the assignment.

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

Thecatfunction can be a useful tool for building multidimensional arrays. For example, create a new 3-D arrayBby concatenatingAwith a third page. The first argument indicates which dimension to concatenate along.

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

Another way to quickly expand a multidimensional array is by assigning a single element to an entire page. For example, add a fourth page toBthat contains all zeros.

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

Accessing Elements

访问多维数组中的元素,我们e integer subscripts just as you would for vectors and matrices. For example, find the 1,2,2 element ofA, which is in the first row, second column, and second page ofA.

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

Use the index vector[1 3]in the second dimension to access only the first and last columns of each page ofA.

C = A(:,[1 3],:)
C = C(:,:,1) = 1 3 4 6 7 9 C(:,:,2) = 10 12 13 15 16 18

To find the second and third rows of each page, use the colon operator to create your index vector.

D = A(2:3,:,:)
D = D(:,:,1) = 4 5 6 7 8 9 D(:,:,2) = 13 14 15 16 17 18

Manipulating Arrays

Elements of multidimensional arrays can be moved around in many ways, similar to vectors and matrices.reshape,permute, andsqueezeare useful functions for rearranging elements. Consider a 3-D array with two pages.

Reshaping a multidimensional array can be useful for performing certain operations or visualizing the data. Use thereshapefunction to rearrange the elements of the 3-D array into a 6-by-5 matrix.

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×51 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

reshapeoperates columnwise, creating the new matrix by taking consecutive elements down each column ofA, starting with the first page then moving to the second page.

Permutations are used to rearrange the order of the dimensions of an array. Consider a 3-D arrayM.

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

Use thepermutefunction to interchange row and column subscripts on each page by specifying the order of dimensions in the second argument. The original rows ofMare now columns, and the columns are now rows.

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

Similarly, interchange row and page subscripts ofM.

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

When working with multidimensional arrays, you might encounter one that has an unnecessary dimension of length 1. Thesqueezefunction performs another type of manipulation that eliminates dimensions of length 1. For example, use therepmatfunction to create a 2-by-3-by-1-by-4 array whose elements are each 5, and whose third dimension has length 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×42 3 1 4
numdimsA = ndims(A)
numdimsA = 4

Use thesqueezefunction to remove the third dimension, resulting in a 3-D array.

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×32 3 4
numdimsB = ndims(B)
numdimsB = 3

Related Topics