1 / 60

Manipulating MATLAB

Manipulating MATLAB. Vector, Matrices. Variables and Arrays. What are variables? You name the variables (as the programmer) and assign them numerical values.

julie-welch
Download Presentation

Manipulating MATLAB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Manipulating MATLAB Vector, Matrices

  2. Variables and Arrays • What are variables? • You name the variables (as the programmer) and assign them numerical values. • You execute the assignment command to place the variable in the workspace memory (memory is part of hardware used for storing information). • You are allowed to use the variable in algebraic expressions, etc. once it is assigned.

  3. An array is MATLAB's basic data structure. Can have any number of dimensions. Most common are: vector - one dimension (a single row or column) matrix - two or more dimensions Arrays can have numbers or letters. (Arrays)

  4. scalar 1 × 1 vector n × 1 or 1 × n matrix n × m Variables as Arrays In MATLAB, a variable is stored as an array of numbers. When appropriate, it is interpreted as a scalar, vector or matrix. The size of an array is specified by the number of rows and the number of columns in the array, with the number of rows indicated first.

  5. Scalars • Scalars are 1×1 arrays. • They contain a single value, for example: • X=3 • Height=5.34 • Width=10.09

  6. Vectors • A vector is a list of numbers expressed as a 1 dimensional array. • A vector can be n×1 or 1×n. • Columns are separated by commas (or spaces): • x = [1, 2, 3] or x = [1 2 3] • Rows are separated by semicolons: • y= [1; 2; 3]

  7. To create a row vector from known numbers, type variable name, then equal sign, then inside square brackets, numbers separated by spaces. variable_name = [ n1, n2, n3 ] >> yr = [1984 1986 1988 1990 1992 1994 1996] yr = 1984 1986 1988 1990 1992 1994 1996 (Creating a row vector) Commas optional Note MATLAB displays row vector horizontally

  8. To create a column vector from known numbers Method 1 - same as row vector but put semicolon after all but last number variable_name = [ n1; n2; n3 ] >> yr = [1984; 1986; 1988 ] yr = 1984 1986 1988 (Creating a Column Vector) Note: MATLAB displays column vector vertically

  9. Method 2 - same as row vector but put apostrophe (') after closing bracket. Apostrophe interchanges rows and columns. Will come back on this later. variable_name = [ n1 n2 n3 ]' >> yr = [1984 1986 1988 ]' yr = 1984 1986 1988 (Creating a column vector)

  10. To create a vector with specified constant spacing between elements variable_name = m:q:n m is the first number n is the last number q is the difference between consecutive numbers v = m:q:n means v = [ m m+q m+2q m+3q ... n ] (Constant spacing vectors)

  11. If q is omitted, the spacing is 1 v = m:n means v = [ m m+1 m+2 m+3 ... n ] >> x = 1:2:13 x = 1 3 5 7 9 11 13 >> y = 1.5:0.1:2.1 y = 1.5000 1.6000 1.7000 1.8000 1.9000 2.0000 2.1000 (Constant spacing vectors) Non-integer spacing

  12. >> z = -3:7 z = -3 -2 -1 0 1 2 3 4 5 6 7 >> xa = 21:-3:6 xa = 21 18 15 12 9 6 >> fred = 7:-2:15 fred = Empty matrix: 1-by-0 (Constant spacing vectors) Negative spacing Impossible spacing

  13. 1. How would you use linspace to set up spacings for planting seedlets in a garden row (30 seedlets, each row 2 meters long). 2. How about planning a 4285km road trip on 21 days. How long each leg would be? (Quick linspace Exercises)

  14. To create a vector with specified number of terms between first and last v = linspace( xi, xf, n ) xi is first number xf is last number n is the number of terms (obviously must be a positivenumber) (= 100 if omitted) (Fixed length vectors)

  15. T I P >> va = linspace( 0, 8, 6 ) va = 0 1.6000 3.2000 4.8000 6.4000 8.0000 >> va = linspace( 30, 10, 11 ) va=30 28 26 24 22 20 18 16 14 12 10 m:q:n lets you directly specify spacing.linspace() lets you directly specify number of terms. Six elements Decreasing elements

  16. Indexing Into an Array allows you to change a value

  17. Adding Elements

  18. If you add an element outside the range of the original array, intermediate elements are added with a value of zero

  19. 2-D Matrices can also be entered by listing each row on a separate line 2-D Matrices C = [-12, 0, 0 12, 13, 40 1, -1, 90 0, 0, 2]

  20. 2-D Matrices Use an ellipsis to continue a definition onto a new line M = [12, 152, 6, 197, 32, -32, … 55, 82, 22, 10];

  21. These semicolons are optional 2-D matrix

  22. Define a matrix using other matrices as components

  23. Or…

  24. Matrices Columns • A matrix is a two dimensional array of numbers. • For example, this is a 4×3 matrix: mat1=[1.0,1.8,1.6; 3.0,-2.0,25.1; 0.0,-5.1,12.7; 2.3,0.3,-3.1] Rows

  25. Indexed-location of numbers in an array Columns • Each item in an array is located in the (row, column). • mat1(2,3) • ans= • 25.1000 Rows

  26. Practice! • Enter the following into MATLAB: • Scalar: x=90 • Vectors: y=[1, 0, 55] z=[1 0 55] • Matrix: m= [ 55, 44, 33; 0, 2, 88]

  27. Manipulating MATLAB Vector, Matrices

  28. Defining (or assigning) arrays • An array can be defined by typing in a list of numbers enclosed in square brackets: • Commas or spaces separate numbers. • m=[12, 1, -33] or m=[12 1 -33] • Semicolons indicate a new row. • n=[2, 50, 20;1,1,2;0,-2,66] • m= • 12 18 -33 • n = • 2 50 20 • 1 1 2 • 0 -2 66

  29. Defining arrays continued • You can define an array in terms of another array: • r=[m;n] • p=[r,r] r = • 12 18 -33 • 2 50 20 • 1 1 2 • 0 -2 66 • p = • 12 18 -3312 18 -33 • 2 50 202 50 20 • 1 1 21 1 2 • 0 -2 660 -2 66

  30. (Verctor/Matrix Addressing) • We can access (read from or write to) elements in an array (vector or matrix) individually or in groups. • Useful for changing a subset of elements. • Useful for making a new variable from a subset of elements.

  31. (Accessing Vectors Elements 1) • You can access any element by indexing the vector name with parentheses (indexing starts from 1, not from 0 as in C). >>odd = [1:3:10] odd = 1 4 7 10 >> odd(3) ans = 7

  32. Review… • Index – a number used to identify elements in an array • Retrieving a value from an array: n(2,1) ans=1 • You can change a value in an element in an array with indexing: • n(3,2)=55 • n = • 2 50 20 • 1 1 2 • 0 -2 66 • n = • 2 50 20 • 1 1 2 • 0 55 66 You can extend an array by defining a new element: • Notice how undefined values of the array are filled with zeros m=[12 1 -33] m(6)=9 m=[12 1 -33 0 0 9]

  33. (Range of Elements / Vector Arithmetic) • We can also access a range of elements (a subset of the original vector) by using the colon operator and giving a starting and ending index. >>odd(2:4) ans = 4 7 10 • Simple arithmetic between scalars and vectors is possible. >> 10 + [1 2 3] ans = 11 12 13

  34. (Matrices) Create a two-dimensional matrix like this m = [ row 1 numbers; row 2 numbers; ... ; last row numbers ] • Each row separated by semicolon. All rows have same number of columns >> a=[ 5 35 43; 4 76 81; 21 32 40] a = 5 35 43 4 76 81 21 32 40

  35. (Matrices) >> cd=6; e=3; h=4; >> Mat=[e, cd*h, cos(pi/3);... h^2 sqrt(h*h/cd) 14] Mat = 3.0000 24.0000 0.5000 16.0000 1.6330 14.0000 Comma is optional

  36. (Matrices) Can also use m:p:n or linspace() to make rows • Make sure each row has same number of columns >> A=[1:2:11; 0:5:25;... linspace(10,60,6); 67 2 43 68 4 13] A = 1 3 5 7 9 11 0 5 10 15 20 25 10 20 30 40 50 60 67 2 43 68 4 13

  37. (Matrices) What if the number of columns is different? >> B= [ 1:4; linspace(1,4,5) ] ??? Error using ==> vertcat CAT arguments dimensions are not consistent. All arrys in the argument list must have the same number of columns. Five columns Four columns

  38. (Special Matrix Commands) zeros(m,n) - makes a matrix of m rows and n columns, all with zeros. ones(m,n) - makes a matrix of m rows and n columns, all with ones. eye(n) - makes a square matrix of n rows and columns. Main diagonal (upper left to lower right) has ones, all other elements are zero.

  39. Examples! • zeros(2,5) • ans = • 0 0 0 0 0 • 0 0 0 0 0 • ones(3,5) • ans = • 1 1 1 1 1 • 1 1 1 1 1 • 1 1 1 1 1 • eye(5) • ans = • 1 0 0 0 0 • 0 1 0 0 0 • 0 0 1 0 0 • 0 0 0 1 0 • 0 0 0 0 1 Note: Placing a single number inside either function will return an n × n array. e.g. ones(5)will return a 5 × 5 array filled with ones.

  40. >> zr=zeros(3,4) zr = 0 0 0 0 0 0 0 0 0 0 0 0 >> ne=ones(4,3) ne = 1 1 1 1 1 1 1 1 1 1 1 1 >> idn=eye(5) idn = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1

  41. T I P To make a matrix filled with a particular number, multiply ones(m,n) by that number >> z=100*ones(3,4) z = 100 100 100 100 100 100 100 100 100 100 100 100

  42. (About variables in MATLAB) • All variables are arrays • Scalar - array with only one element • Vector - array with only one row or column • Matrix - array with multiple rows and columns • Assigning to variable specifies its dimension • Don't have to define variable size before assigning to it, as you do in many programming languages • Reassigning to variable changes its dimension to that of assignment.

  43. (The Transpose Operator) Transpose a variable by putting a single quote after it, e.g., x' • In math, transpose usually denoted by superscript "T", e.g., xT • Converts a row vector to a column vector and vice-versa. • Switches rows and columns of a matrix, i.e., first row of original becomes first column of transposed, second row of original becomes second column of transposed, etc.

  44. Continue… • The transpose operator, an apostrophe, changes all of an array’s rows to columns and columns to rows. m = [12, 1, -33] m’ m= ans= 12 1 -33 12 1 -33 >> aa=[3 8 1] aa = 3 8 1 >> bb=aa' bb = 3 8 1

  45. (The Transpose Operator) >> C=[2 55 14 8; 21 5 32 11; 41 64 9 1] C = 2 55 14 8 21 5 32 11 41 64 9 1 >> D=C' D = 2 21 41 55 5 64 14 32 9 8 11 1

  46. (Vectors Arithmetic 2) • Addition or subtraction of matrices is possible as long as they are the same size. >>[1 2 3]+[4 5 6] ans = 5 7 9 • To deal with arrays on an element-by-element level we need to use the following array or dot-operators: .* ,./ and.^ • Element-by-element multiplication and division uses the .* and ./ operators. The * and / operators are used for complete matrix multiplication and division. >>[1 2 3].*[4 5 6] ans = 4 10 18

  47. dot-operators • .*,./ and.^ • Because scalars are equivalent to a 1×1 array, you can either use the standard or the dot-operators when doing multiplication, division and exponentiation of scalars (i.e., of single numbers). • It is okay for you to always use the dot-operators, unless you intend to perform vector or matrix multiplication or division.

  48. Array vs. Matrix Operations • Example: m=[2,1;3,4] p=[5,6;7,8] (in class we had a look on m=[1,2;3,4] and results were different ) q=m.*p results in [10, 6; 21, 32]; this is array multiplication q = m * p results in [17, 20; 43, 50]; this is matrix multiplication So, do NOT forget the dot when doing array operations! (.* ./ .^)

  49. (More about Column Vectors) • The vectors seen so far are row vectors (horizontal). You can define column vectors as well. For row vectors you separate the elements with spaces or commas; for column vectors you use semi-colons. >>colvec = [1;2;3] colvec = 1 2 3

  50. (More about Matrices) • You can define matrices the same way by combining rows and columns. >>mat1 = [1 2;3 4] mat 1 = 1 2 3 4 >> mat2 = [mat1;mat1] mat2 = 1 2 3 4 1 2 3 4

More Related