Manipulating Multidimensional Arrays - MATLAB & Simulink Example - MathWorks India
-
Upload
sureshkumar69 -
Category
Documents
-
view
15 -
download
1
Transcript of Manipulating Multidimensional Arrays - MATLAB & Simulink Example - MathWorks India
4/30/2016 Manipulating Multidimensional Arrays MATLAB & Simulink Example MathWorks India
http://in.mathworks.com/help/matlab/examples/manipulatingmultidimensionalarrays.html 1/5
Open This Example
Manipulating Multidimensional Arrays
This example shows how to work with arrays having more than two dimensions.Multidimensional arrays can be numeric, character, cell, or structure arrays.
Multidimensional arrays can be used to represent multivariate data. MATLAB® provides a number of functionsthat directly support multidimensional arrays.
Creating MultiDimensional ArraysMultidimensional arrays in MATLAB are created the same way as twodimensional arrays. For example, firstdefine the 3 by 3 matrix, and then add a third dimension.
A = [5 7 8; 0 1 9; 4 3 6]; A(:,:,2) = [1 0 4; 3 5 6; 9 8 7]
A(:,:,1) =
5 7 8 0 1 9 4 3 6
A(:,:,2) =
1 0 4 3 5 6 9 8 7
The CAT function is a useful tool for building multidimensional arrays. B = cat(DIM,A1,A2,...) builds amultidimensional array by concatenating A1, A2 ... along the dimension DIM.
B = cat( 3, [2 8; 0 5], [1 3; 7 9], [2 3; 4 6])
4/30/2016 Manipulating Multidimensional Arrays MATLAB & Simulink Example MathWorks India
http://in.mathworks.com/help/matlab/examples/manipulatingmultidimensionalarrays.html 2/5
B(:,:,1) =
2 8 0 5
B(:,:,2) =
1 3 7 9
B(:,:,3) =
2 3 4 6
Calls to CAT can be nested.
A = cat(3,[9 2; 6 5], [7 1; 8 4]);B = cat(3,[3 5; 0 1], [5 6; 2 1]);C = cat(4,A,B,cat(3,[1 2; 3 4], [4 3; 2 1]));
Finding the DimensionsSIZE and NDIMS return the size and number of dimensions of matrices.
SzA = size(A) DimsA = ndims(A) SzC = size(C) DimsC = ndims(C)
SzA =
2 2 2
DimsA =
3
SzC =
2 2 2 3
DimsC =
4
4/30/2016 Manipulating Multidimensional Arrays MATLAB & Simulink Example MathWorks India
http://in.mathworks.com/help/matlab/examples/manipulatingmultidimensionalarrays.html 3/5
Accessing ElementsTo access a single element of a multidimensional array, use integer subscripts. For example, using A defined fromabove, A(1,2,2) returns 1.
Array subscripts can also be vectors. For example:
K = C(:,:,1,[1 3])
K(:,:,1,1) =
9 2 6 5
K(:,:,1,2) =
1 2 3 4
Manipulating MultiDimensional ArraysRESHAPE, PERMUTE, and SQUEEZE are used to manipulate ndimensional arrays. RESHAPE behaves as itdoes for 2D arrays. The operation of PERMUTE is illustrated below.
Let A be a 3 by 3 by 2 array. PERMUTE(A,[2 1 3]) returns an array with the row and column subscripts reversed(dimension 1 is the row, dimension 2 is the column, dimension 3 is the depth and so on). Similarly, PERMUTE(A,[3,2,1]) returns an array with the first and third subscripts interchanged.
A = rand(3,3,2); B = permute(A, [2 1 3]); C = permute(A, [3 2 1]);
Selecting 2D Matrices From MultiDimensional ArraysFunctions like EIG that operate on planes or 2D matrices do not accept multidimensional arrays as arguments. Toapply such functions to different planes of the multidimensional arrays, use indexing or FOR loops. For example:
A = cat( 3, [1 2 3; 9 8 7; 4 6 5], [0 3 2; 8 8 4; 5 3 5], ... [6 4 7; 6 8 5; 5 4 3]); % The EIG function is applied to each of the horizontal 'slices' of A. for i = 1:3 eig(squeeze(A(i,:,:))) end
4/30/2016 Manipulating Multidimensional Arrays MATLAB & Simulink Example MathWorks India
http://in.mathworks.com/help/matlab/examples/manipulatingmultidimensionalarrays.html 4/5
ans =
10.3589 ‐1.0000 1.6411
ans =
21.2293 + 0.0000i 0.3854 + 1.5778i 0.3854 ‐ 1.5778i
ans =
13.3706 + 0.0000i ‐1.6853 + 0.4757i ‐1.6853 ‐ 0.4757i
INTERP3, INTERPN, and NDGRID are examples of interpolation and data gridding functions that operatespecifically on multidimensional data. Here is an example of NDGRID applied to an Ndimensional matrix.
x1 = ‐2*pi:pi/10:0; x2 = 2*pi:pi/10:4*pi; x3 = 0:pi/10:2*pi; [x1,x2,x3] = ndgrid(x1,x2,x3); z = x1 + exp(cos(2*x2.^2)) + sin(x3.^3); slice(z,[5 10 15], 10, [5 12]); axis tight
4/30/2016 Manipulating Multidimensional Arrays MATLAB & Simulink Example MathWorks India
http://in.mathworks.com/help/matlab/examples/manipulatingmultidimensionalarrays.html 5/5
You can build multidimensional cell arrays and multidimensional structure arrays, and can also convert betweenmultidimensional numeric and cell arrays.
To find out more, consult the MATLAB documentation on multidimensional arrays.