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
Thecat
function can be a useful tool for building multidimensional arrays. For example, create a new 3-D arrayB
by concatenatingA
with 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 toB
that 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
, andsqueeze
are 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 thereshape
function 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
reshape
operates 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 thepermute
function to interchange row and column subscripts on each page by specifying the order of dimensions in the second argument. The original rows ofM
are 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. Thesqueeze
function performs another type of manipulation that eliminates dimensions of length 1. For example, use therepmat
function 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 thesqueeze
function 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