What is the Matlab environment? How can you create vectors ? What does the colon : operator do? How does the use of the built-in linspace function differ from the use of the colon : operator? Readings: Matlab by Pratap Chapter 3 1-2 1) engineering visualization and computation software • 2-D contour, histogram, line, mesh, polar, polygon and scatter plots. • 3-D line, mesh, polygon, scatter and wire frame plots. 2) The “interactive environment” is user friendly. 3) MATLAB provides its own high-level language in which users can extend the capabilities of MATLAB. • C-like programming language • Many user defined functions 3 MATLAB is interactive, if you type (without ; ) >> 2 + 3 The system responds with ans = 5 “ans” is a built-in variable that contains the results of the last evaluated expression that has not been assigned to another variable. e.g. if we type >> 3 * 3 ans = 9 1-4 To suppress the screen output use a semicolon: >> 5 ^ 2; (“ ^ ” is the power operator, 5 raised to the second power in this example) >> ( no response from matlab) To examine the current value of ans type >> ans ans = 25 1-5 All variables are created as array variables. For example, >> x = 1.5; (this is called an “assignment statement”) creates a (1 x 1) array of type real and assigns the value 1.5 to x. Variables only change values when you assign values to them using an assignment statement. To see the value of x type, >> x x= RAM x 1.5 1.5000 Variable names must begin with a character and are case sensitive. 1-6 The variable to be “assigned” a value must be on the left hand side of the assignment statement… >> 1.5 = x; (illegal “assignment statement”) The above is illegal because “1.5” does not specify a legal address in memory. An assignment statement is not a “math” equation. For example, the following sequence is legal in Matlab: >> x = 2.0; >> x = x + 1.0 x= 3.0000 1-7 The current environment for our computing session is called the workspace. We can have many variables and functions in our workspace. To see what variables we have, type >> who ans x For this session (up to now) the workspace contains two variables ans and x. To see the size (number of rows and columns) of these variables, type >> whos Name Size Bytes Class (Both x and ans are 1 x 1 arrays) ans 1x1 8 double (we call these scalars) x 1x1 8 double (double refers to double precision) 1-8 (see p. 12 in Pratap for a list of these Matlab commands) … (extend a command that doesn’t fit on one line) >> save lab3 (saves all the workspace variables to the file lab3.mat) >> load lab3 >> save (uses default file matlab.mat) >> load (uses the default file matlab.m at from the Unix pwd) (loads the lab3.mat file from the Unix pwd) 9 (see p. 12 in Pratap for a list of these Matlab commands) clc >> clf >> % clears the command window % clears the figure window >> clear var1 var2 >> clear >> exit % clears only the variables var1 var2 % clears(deletes) all variables in the workspace % exit Matlab >> quit % same as exit >> what % lists Matlab files 1-10 format options (controls how numeric output is displayed) (see p. 9 in Pratap for a list of these Matlab commands) Examples-- two of the options are shown below: >> x = 12.34567890123456789 x= 12.34567890123457 >> format short >> x x= 12.3457 >> format long e >> x x= 1.234567890123457e+01 1-11 In Matlab (for CS101) all data will be stored in arrays. An array can represent a: vector - size 1 x n (row vector with 1 row and n columns) or n x 1 (column vector with n rows and 1 column) matrix - any size m x n ( a table of m rows and n columns). Conventions Two arrays are defined to be equal if they are of the same size and at each position, they have the same value. The values in an array are called components or elements. 12 Some examples of vector quantities that occur frequently in science and engineering problems are • velocity • acceleration • force • electric, magnetic, gravitational fields • surface normal For example, the three-dimensional components of a force vector can be represented in Cartesian coordinates as F = (Fx, Fy, Fz) The xy coordinates in the plane correspond to a twodimensional "vector" P = (x, y) 1-13 We can represent a vector either as a row vector or as a column vector, depending on the application. E.g., Vv1 v2 v1 v3 or Vv2 v3 1-14 To create vector arrays in MATLAB type the following: >> F1 = [1 2.5 3.5]; >> F2 = [-1.75, 2.75, 1.0e-1]; >> F3 = [1 2 ]; >> whos F1 F2 F3 Name F1 F2 F3 Size 1x3 1x3 1x2 Bytes 24 24 16 (The use of the “ , ” operator is optional) Class double double double F1 and F2 are 1 row x 3 column arrays and F3 is a 1 row x 2 column array. To display their values type the variable name: >> F1 F1 = 1.0000 2.5000 3.5000 1-15 To create column-vector arrays in MATLAB either use the semi-colon operator ; or use the transpose operator ‘ >> F1 = [1 ; 2.5; 3.5]; ( ; means ... append to next row) >> F2 = [-1.75, 2.75, 1.0e-1] ‘ ; (transpose changes row vector to column vector and vice-versa ) >> F3 = [ ]; (empty vector) >> whos F1 F2 F3 Name F1 F2 F3 >> F1 F1 = Size 3x1 3x1 0x0 Bytes 24 24 0 Class double double double 1.0000 2.5000 3.5000 1-16 The “ : ” (colon) operator is important in construction of arrays >> x = 1:100; >> y = (-1 : 0.1 : 1)’; >> z z= = 0 : 0.3 : 1 (creates a column vector with starting value -1 and increments by 0.1 until 1 is reached but not exceeded) 0 >> (creates a 1x100 row vector with values 1,2,3,4, … 100) 0.3000 0.6000 0.9000 z = 5 : -1 : 2 z= 5 4 3 2 1-17 Use (parenthesis) to select a subset of the elements of an array. >> x = [10 9 8 7]; >> y = [3; 4; 5]; >> z = x(2) (note the use of parenthesis and not the brackets) z= 9 >> z= (subscripting x does not change x) z = x(1:3) 10 >> x x= 9 = x(2:3) 9 >> z z= (note the use the colon operator) 8 (now x has changed) 8 = y(1:2) 3 4 1-18 Use the end function to obtain the last element in a vector. Example: >> x = [10 9 8 7]; >> y = [3; 4; 5]; >> z = x(end) z= 7 >> z= z = y(2:end) 4 5 1-19 Use subscripting to change the value of a vecor. Example: >> x = [10 9 8 7]; >> y = [3; 4; 5]; >> x([2, 3]) = 5 x= 10 >> y= 5 y(2:end) = [ 6 7] 5 7 % y(2:end) = [6 ; 7] works too 3 6 7 1-20 The built-in Matlab function linspace (see p. 72)works in a similar manner to the colon operator “ : ” . linspace(a,b,N) creates a row vector of N equally spaced values starting at a and ending at b. This is equivalent to a : (b-a)/(N-1) : b Example: Create a row vector named vec1 of 4 elements starting at -1 and ending at +1. >> vec1 = linspace(-1,1,4) vec1 = -1.0000 -0.3333 0.3333 1.0000 1-21 Example: Create a row vector named vec2 of 4 elements each equal to 7. >> vec2 = linspace(7,7,4) vec2 = 7 7 7 7 Example: Create a row vector named vec3 with the values 5,4,3,2 . >> vec3 = linspace(5,2,4) vec3 = 5 4 3 2 1-22 - + (dot form) add sub * / \ ^ .* ./ .\ .^ mult right div left div power Rules for the valid operations(see p 57,58). If A and B are vectors then it is not always true that >>A op B is defined when op is one of the operations in the table above. A and B are called operands. The size of an vector is its number of rows and columns. When multiple operators are used in an expression , use the rules of precedence. *, / , \ , ^ have “special” meaning as we will consider... 1-23 A and B must be of the same size or a scalar. >> A = [2 3 4] ; >> B = 3; >> A + B ans = 5 6 7 >> B = [1 2 3] ; >> A + B ans = 3 5 7 1-24 F = resultant of F1 =(Fx1 , Fy1) F2 =(Fx2 , Fy2) two forces applied to an object. F = F1 + F2 = (Fx1 + Fx2, Fy1 + Fy2) In Matlab: >> F1 = [1 , -1.5]; >> F2 = [-1.75, 1.0e-1] ; >> F = F1 + F2 F= -0.7500 -1.4000 1-25 A and B must be of the same size or a scalar. >> A = [2 3 4] ; >> B = 3; >> A - B ans = -1 0 1 >> B = [1 2 3] ; >> A - B ans = 1 1 1 1-26 In Cartesian coordinates, we can express the dot or scalar product of two vectors as a matrix multiplication: F s f1 f2 s1 f 3 s2 f1s1 f 2 s2 f 3 s3 s3 Physical Example: Work done by a force F acting through a displacement s s = [1, 1, 1] ‘ ; >> F1 = [1 2.5 3.5]; >> F1 * s >> ans = 7 F s surface W Fs (dot or scalar product) 1-27 In order for the scalar product of vectors A * B to be defined, the number of columns in the row vector A must equal the number of rows in the column vector B. >> A = [2 3 4] ; >> B = [1 ; 2 ; 3] ; >> A * B ans = 20 1-28 The size of A and B must be the same or either could be a scalar . >> A = [2 3 4] ; >> B = [1 2 3] ; >> A .* B ans = 2 6 Note: the result is the product of the individual elements of the vectors. 12 For the other operators in the table on slide 1 - 23 , try to determine what the operator does and the sizes for which A op B is valid. We will consider the “ \ “ operator in the future. (see section 5.1.1 in book) 1-29 To obtain help in using Matlab make sure the Help window is open. To do this, click “Help” then “Product Help” If you know the name of a Matlab function or command, click on the Search box and type in the name of the function. If you want to obtain a list of functions by category, first, click “By Category”,