# Multidimensional Array

## Presentation on theme: "Multidimensional Array"— Presentation transcript:

Multidimensional Array
MATLAB allows to create arrays with as many dimensions as necessary for any given problem. These arrays have one subscript for each dimension, and an individual element is selected by specifying a value for each subscript. The total number of elements in the array will be the product of the maximum value of each subscript. Eg:- » c(: , : ,1)=[1 2 3; 4 5 6]; » c(: ,: , 2)=[7 8 9; ]; » whos c Name Size Bytes Class Attributes c x3x double This array contains 12 elements (2 x 3 x 2) . Its contents can be displayed just like any other array. » c c(: , : ,1) = c(: , : ,2) =

Multidimensional Array
Storing Multidimensional Array in Memory:- A two-dimensional array with m rows and n columns will contain m n elements, and these elements will occupy m n successive locations in the computer’s memory. MATLAB always allocates array elements in column major order. That is, MATLAB allocates the first column in memory, then the second, then the third, and so on., until all of the columns have been allocated. This same allocation scheme applies to arrays with more than two dimensions. The first array subscript is incremented most rapidly, the second subscript is incremented less rapidly, and so on, and the last subscript in incremented most slowly.

Multidimensional Array
Accessing Multidimensional array using one dimension One of MATLAB’s peculiarities is that it will permit a user or programmer to treat a multidimensional array as though it were a one-dimensional array whose length is equal to the number of elements in the multidimensional array. Eg:- » a = [1 2 3; 4 5 6; 7 8 9; ] a = Then the value of a(5)will be 2, which is the value of element a(1,2), because a(1,2)was allocated fifth in memory. Note:- Never use this feature of MATLAB. Addressing multidimensional arrays with a single subscript is a recipe for confusion.

Subarray It is possible to select and use subsets of MATLAB arrays as though they were separate arrays. To select a portion of an array, just include a list of all of the elements to be selected in the parentheses after the array name. 1.Eg:- arr1 = [ ]; Then arr1(3) is just 3, arr1([1 4]) is the array [ ], and arr1(1: 2 : 5) is the array [ ]. 2.Eg:- arr2 = [1 2 3; ; 3 4 5]; This statement would create an array arr2 containing the values. With this definition, the subarray arr2(1, : ) would be [1 2 3], and the subarray arr2( : ,1 : 2 : 3) would be

Subarray End Function:- MATLAB includes a special function named end that is very useful for creating array subscripts. When used in an array subscript, end returns the highest value taken on by that subscript. 1. Eg:- arr3 = [ ]; Then arr3(5 : end) would be the array [ ], and array(end) would be the value 8. 2,Eg:- arr4 = [ ; ; ]; Then the expression arr4(2 : end, 2 : end) would return the array

Subarray Using Subarray in the left hand side of the assignment statement It is also possible to use subarrays on the left-hand side of an assignment statement to update only some of the values in an array, as long as the shape (the number of rows and columns) of the values being assigned matches the shape of the subarray. » arr4 = [ ; ; ] arr4 = Then the following assignment statement is legal » arr4(1: 2,[1 4]) = [20 21; 22 23] Note that the array elements (1,1), (1,4), (2,1), and (2,4) were updated. The following expression is illegal. » arr5(1: 2 , 1 : 2) = [3 4]

Subarray Note:- Updating an array requires subarray, other original array get deleted . » arr4 = [ ; ; ] arr4 = Then the following assignment statement replaces the specified elements of arr4: » arr4(1:2,[1 4]) = [20 21; 22 23] In contrast, the following assignment statement replaces the entire contents of arr4 with a array: » arr4 = [20 21; 22 23]

Subarray Using Subarray in the left hand side to assign Scalar
A scalar value on the right-hand side of an assignment statement always matches the shape specified on the left-hand side. The scalar value is copied into every element specified on the left-hand side of the statement. Eg:-arr4 = [ ; ; ]; Then the expression shown below assigns the value one to four elements of the array. » arr4(1 : 2,1 : 2) = 1 arr4 =

Special Values in Matlab
MATLAB includes a number of predefined special values. These predefined values may be used at any time in MATLAB without initializing them first. Never redefine the meaning of a predefined variable in MATLAB. It is a recipe for disaster, producing subtle and hard-to-find bugs.

Changing Double Default Format
The default format for MATLAB shows four digits after the decimal point, and it may be displayed in scientific notation with an exponent if the number is too large or too small. For example, the statements x = y = z = produce the following output x = y = 1.0011e+003 z = 1.0011e-004 This default format can be changed in one of two ways: from the main MATLAB Window menu, or using the format command.

Changing Double Default Format

Changing Double Default Format

Displaying Output Data
There are several ways to display output data in MATLAB. This simplest way is —just leave the semicolon off of the end of a statement and it will be echoed to the Command Window. The disp function:- The disp function accepts an array argument and displays the value of the array in the Command Window. If the array is of type char, then the character string contained in the array is printed out. This function is often combined with the functions num2str (convert number to a string) and int2str (convert an integer to a string) to create messages to be displayed in the Command Window. eg:- str = ['The value of pi = ' num2str(pi)]; disp (str);

Displaying Output Data
The fprintf function:- The fprintf function displays one or more values together with related text and lets the programmer control the way that the displayed value appears. fprintf(format,data) where format is a string describing the way the data is to be printed, and data is one or more scalars or arrays to be printed. Eg1:- fprintf('The value of pi is %f \n',pi) will print out 'The value of pi is ' followed by a line feed. The characters %f are called conversion characters; they indicate that a value in the data list should be printed out in floating-point format at that location in the format string. The characters \n are escape characters; they indicate that a line feed should be issued so that the following text starts on a new line. Eg2:-fprintf('The value of pi is %6.2f \n',pi) will print out 'The value of pi is 3.14' followed by a line feed. The conversion characters %6.2f indicate that the first data item in the function should be printed out in floating-point format in a field six characters wide, including two digits after the decimal point.

Displaying Output Data
The fprintf function has one very significant limitation: it displays only the real portion of a complex value. In those cases, it is better to use the disp function to display answers. Eg:- x = 2 * ( 1 – 2 * i )^3; str = ['disp: x = ' num2str(x)]; disp(str); fprintf('fprintf: x = %8.4f\n',x); The results printed out by these statements are disp: x = -22+4i fprintf: x = Note that the fprintf function ignored the imaginary part of the answer.

Scalar and Array Operation
Calculations are specified in MATLAB with an assignment statement, whose general form is variable_name = expression; The expression to the right of the assignment operator can be any valid combination of scalars, arrays, parentheses, and arithmetic operators. Parentheses may be used to group terms whenever desired. When parentheses are used, the expressions inside the parentheses are evaluated before the expressions outside the parentheses. Eg:- 2 ^ ((8+2)/5) = 2 ^ (10/5) = 2 ^ 2 = 4 Arithmetic Operation between two scalars

Array and Matrix Operation
MATLAB supports two types of operations between arrays, known as array operations and matrix operations. Array operations are operations performed between arrays on an element-by-element basis and the two arrays must have same number of rows and column. In contrast, matrix operations follow the normal rules of linear algebra, such as matrix multiplication. For matrix multiplication to work, the number of columns in first matrix must be equal to the number of rows in second matrix. MATLAB uses a special symbol to distinguish array operations from matrix operations. In the cases where array operations and matrix operations have a different definition, MATLAB uses a period before the symbol to indicate an array operation(for example, .*).

Array and Matrix Operation

Array and Matrix Operation
In some cases, substituting one for the other will produce an illegal operation, and MATLAB will report an error. In other cases, both operations are legal, and MATLAB will perform the wrong operation and come up with a wrong answer. The most common problem happens when working with square matrices. Both array multiplication and matrix multiplication are legal for two square matrices of the same size, but the resulting answers are totally different.

Hierarchy of Operation
Many arithmetic operations are combined into a single expression. In such an expression, it is important to know the order in which the operations are evaluated. To make the evaluation of expressions unambiguous, MATLAB has established a series of rules governing the hierarchy or order in which operations are evaluated within an expression. The rules generally follow the normal rules of algebra.

Built-in MATLAB Functions
A function is an expression that accepts one or more input values and calculates a single result from them. One of MATLAB’s greatest strengths is that it comes with an incredible variety of built-in functions ready for use. MATLAB functions can return more than one result to the calling program. Eg1. max function normally returns the maximum value of an input vector, but it can also return a second argument containing the location in the input vector where the maximum value was found. For example, the statement maxval = max ([1 –5 6 –3]) returns the result maxval 6. However, if two variables are provided to store results in, the function returns both the maximum value and the location of the maximum value. [maxval index] = max ([1 –5 6 –3]) produces the results maxval 6 and index 3.

Built-in MATLAB Functions
Many MATLAB functions are defined for one or more scalar inputs and produce a scalar output. Eg2:- y = sin(x) calculates the sine of x and stores the result in y. If these functions receive an array of input values, then they will calculate an array of output values on an element-by-element basis. Eg3:- x = [ 0 pi/2 pi 3*pi/2 2*pi], then the statement y = sin(x) will produce the result y = [0 1 0 –1 0]. MATLAB functions work correctly for both real and complex inputs. MATLAB functions automatically calculate the correct answer, even if the result is imaginary or complex. Eg4:- sqrt(-2) will produce a runtime error in languages such as C, Java, or Fortran. In contrast, MATLAB correctly calculates the imaginary answer: » sqrt(-2) ans = i

Built-in MATLAB Functions

Built-in MATLAB Functions

Built-in MATLAB Functions
If you need to locate a specific function not on this list, you can search for the function alphabetically or by subject using the MATLAB Help Browser.