The document provides an overview of key MATLAB functions and concepts including:
- Functions like rem(), factor(), polyval() for working with numbers
- Creating and manipulating matrices and arrays
- Performing operations on matrices like multiplication, transposition, and element-wise operations
- Working with complex numbers with real and imaginary parts
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
104 views
Matlab Lecture 6
The document provides an overview of key MATLAB functions and concepts including:
- Functions like rem(), factor(), polyval() for working with numbers
- Creating and manipulating matrices and arrays
- Performing operations on matrices like multiplication, transposition, and element-wise operations
- Working with complex numbers with real and imaginary parts
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 70
Lecture 6
• More of MatLab functions
• Rem(x,y) means the remainder of x divided by y. • Example • >> rem(10,3) • ans = 1 • >> rem(100,3);x • Undefined function or variable 'x'. • >> rem(100,3) • ans = 1 • You can also assign a variable to the evaluation. • x=rem(100,3) • x= 1 • To find the factors of a number, use ‘factor’ e.g. • factor(36) • ans = 2 2 3 3 • >> factor(100) • ans = 2 2 5 5 • > x = factor(24) • x= 2 2 2 3 • Format: The Way in Which Numbers • Appear • Consider the following codes • s = [1/2 1/3 pi sqrt(2)]; • format short; s • format long; s • format rat; s • format ; s • >> s = [1/2 1/3 pi sqrt(2)]; • >> format long, s • s = 0.500000000000000, 0.333333333333333 3.141592653589793 1.414213562373095 • >> format rat, s • s= 1/2 1/3 355/113 1393/985 • >> format; s • s = 0.5000 0.3333 3.1416 1.4142 • Some MatLab specific command. 3 2 • Evaluate the cubic y =𝑥 + 3𝑥 − 𝑥 − 1 at the point x = [1 2 3 4 5 6]. • We find the solution to this code as a commented code. • >> %firstly set up the points at which the polynomial will be evaluated • >> x = 1:6; • >> % enter the coefficients of the cubic equation and note that • >> % these are entered starting with the coefficients of the • >> % of the highest power first • >> c = [1 3 -1 -1]; • >> % now perform the evalution using polyval • >> y = polyval(c,x) • y = 2 17 50 107 194 317 • It is always a good practice to provide brief, but meaningful, comments at important points within your code • Plot the polynomial y = 𝑥 4 + 𝑥 2 − 1 between x = −2 and x = 2 (using fifty points). • >> x = linspace(-2,2,50); • >> c = [1 0 1 0 -1]; • >> y = polyval(c,x); • >> plot(x,y) • Find the roots of the polynomial 𝑦 = 𝑥 3 − 3𝑥 2 + 2𝑥 using the command roots • c = [1 -3 2 0]; • r = roots(c) • r =0 • 2 • 1 • The solve function is used for solving algebraic equations. • Solve for x in the equation x-5 =0 • y = solve(‘x-5=0’) • MATLAB will execute some statements and return • y=5 • The solve function takes the equation enclosed in quotes as an argument • If the equation involves multiple symbols, then MATLAB by default assumes that you are solving for • x, except you specify the one you are solving. • Example • solve(equation, variable) • solve for v in the equation v – u – 3t2 = 0, • >> >> solve('v-u-3*t^2=0','v') • ans = 3*t^2 + u • Solve for t. • >> solve('v-u-3*t^2=0','t') • -(3^(1/2)*(v - u)^(1/2))/3 • (3^(1/2)*(v - u)^(1/2))/3 • We can still solve the equations in octave using the roots function. • >> y= roots([1,-5]) • y= • 5 • >> c =[1 -5]; • >> roots(c) • ans = • 5 • solve the fourth order equation x4 − 7x3 + 3x2 − 5x + 9 = 0. • >> c=[1 -7 3 -5 9]; • >> s=roots(c) • s= • 6.6304 + 0.0000i • 1.0598 + 0.0000i • -0.3451 + 1.0778i • -0.3451 - 1.0778i • >> eq = 'x^4 - 7*x^3 + 3*x^2 -5*x +9 = 0'; • >> r = solve(eq) • r= • root(z^4 - 7*z^3 + 3*z^2 - 5*z + 9, z, 1) • root(z^4 - 7*z^3 + 3*z^2 - 5*z + 9, z, 2) • root(z^4 - 7*z^3 + 3*z^2 - 5*z + 9, z, 3) • root(z^4 - 7*z^3 + 3*z^2 - 5*z + 9, z, 4) • Matrices and Arrays. • MATLAB is an abbreviation for "matrix laboratory.“ • Other programming languages mostly work with numbers one at a time but MATLAB is designed to operate primarily on whole matrices and arrays. • MATLAB variables are multidimensional arrays, no matter what type of data. • A matrix is a two-dimensional array often used for linear algebra. • Array Creation • To create an array with four elements in a single row, separate the elements with either • a comma (,) or a space. e.g. • b=[1 2 3 4 5 6] • b= • 1 2 3 4 5 6 • or b=[1,2,3,4,5,6] • b= • 1 2 3 4 5 6 • This type of array is a row vector. • To create a matrix that has multiple rows, separate the rows with semicolons. It also automatically arranges them in rows and columns • a = [1 2 3; 4 5 6; 7 8 10] • a= • 123 • 456 • 7 8 10 • Another way to create a matrix is to use a function, such as ones, zeros, or rand. For • example, create a 5-by-1 column vector of zeros. • z = zeros(5,1) • z= • 0 • 0 • 0 • 0 • 0 • >> ones(5,1) • ans = • 1 • 1 • 1 • 1 • 1 • > ones(1,5) • ans = • 1 1 1 1 1 • >> rand(2) • ans = • 0.8147 0.1270 • 0.9058 0.9134 • >> rand(1) • ans = • 0.6324 • >> rand(2,3) • ans = • 0.0975 0.5469 0.9649 • 0.2785 0.9575 0.1576 • MATLAB allows you to process all of the values in a matrix using a single arithmetic operator or function. e.g. • >> A=[1,2,3;4,5,6;7,8,10] • A= • 1 2 3 • 4 5 6 • 7 8 10 • >> C=A+10 • C= • 11 12 13 • 14 15 16 • 17 18 20 • D=sin(A) • D= • 0.8415 0.9093 0.1411 • -0.7568 -0.9589 -0.2794 • 0.6570 0.9894 -0.5440 • To transpose a matrix, use a single quote ('): e.g. • >> C' • ans = • 11 14 17 • 12 15 18 • 13 16 20 • D=sin(A) • D= • 0.8415 0.9093 0.1411 • -0.7568 -0.9589 -0.2794 • 0.6570 0.9894 -0.5440 • To transpose a matrix, use a single quote ('): e.g. • >> C' • ans = • 11 14 17 • 12 15 18 • 13 16 20 • You can perform standard matrix multiplication, which computes the inner products between rows and columns, using the * operator. e.g. • >> A*inv(A) • ans = • 1.0000 0 -0.0000 • 0 1.0000 0 • 0 0 1.0000 • (The identity matrix). • >> format long • >> Z=A*inv(A) • Z= • 1.000000000000000 0 -0.000000000000000 • 0 1.000000000000000 0 • 0 0 0.999999999999998 • >> format short • >> Z=A*inv(A) • Z= • 1.0000 0 -0.0000 • 0 1.0000 0 • 0 0 1.0000 • To perform element-wise multiplication rather than matrix multiplication, use the .* operator: • e.g. • >> Z=A.*A • Z= • 1 4 9 • 16 25 36 • 49 64 100 • The matrix operators for multiplication, division, and power each have a corresponding array operator that operates element-wise. e.g. • >> A.^2 • ans = • 1 4 9 • 16 25 36 • 49 64 100 • >> A./2 • ans = • 0.5000 1.0000 1.5000 • 2.0000 2.5000 3.0000 • 3.5000 4.0000 5.0000 • Internalize the differences between the point-wise and regular versions of the operators by examining the results of the following expressions that use the variables A=[1 2; 3 4], B=[1 0; 0 2], and C=[3;4]. Note: some commands may result in an error message. Understand what the error is and why it was given • When the variables are written on the command prompt, the following results are given • >> A=([1 2; 3 4]),B=([1 0; 0 2]),C=([3;4]) • A= • 1 2 • 3 4 • B= • 1 0 • 0 2 • C= • 3 • 4 • A*B vs. A.*B vs. B.*A vs. B*A • 2*A vs. 2.*A • A^2 vs. A*A vs. A.*A vs. A.^2 vs. 2.^A vs. A^A vs. 2^A. The last one here might be difficult to understand…it is matrix exponentiation. • A/B vs. A\B vs. A./B vs. A.\B • A*C vs. A*C' vs. C*A vs. C'*A • A\C vs. A\C' vs. C/A vs. C'/A • >> A*B • ans = • 1 4 • 3 8 • >> A.*B • ans = • 1 0 • 0 8 • >> B.*A • ans = • 1 0 • 0 8 • >> B*A • ans = • 1 2 • 6 8 • 2*A • ans = • 2 4 • 6 8 • 2.*A • ans = • 2 4 • 6 8 • A^2 • ans = • 7 10 • 15 22 • >> A*A • ans = • 7 10 • 15 22 • A.*A • ans = • 1 4 • 9 16 • >> A.^2 • ans = • 1 4 • 9 16 • >> 2.^A • ans = • 2 4 • 8 16 • >> A^A • ??? Error using ==> mpower • At least one operand must be scalar. • >> 2^A (it is matrix exponentiation) • ans = • 10.4827 14.1519 • 21.2278 31.7106 • >> A/B • ans = • 1 1 • 3 2 • >> A\B • ans = • -2.0000 2.0000 • 1.5000 -1.0000 • When creating a matrix, a space or a comma (,) are the separator between columns, while a semicolon (;) separate between rows. Figure out how to create the following matrices: (1 4 2 5 3 6 ) , (1 0 0 1 1 0 ) • You can nest matrix construction so that [ 6 (1:5) 7 ] makes sense (what does it result in?) • >> [6 (1:5) 7] • ans = • 6 1 2 3 4 5 7 • Concatenation • This is the process of joining matrices to make larger ones. The pair of square brackets [] is the concatenation operator. e.g. • >> G=[A,A] • G= • 1 2 3 1 2 3 • 4 5 6 4 5 6 • 7 8 10 7 8 10 • This is a 3X6 matrix • >> D=[A;A] • D= • 1 2 3 • 4 5 6 • 7 8 10 • 1 2 3 • 4 5 6 • 7 8 10 • This is a 6X3 matrix. • Complex Numbers • Complex numbers have both real and imaginary parts, where the imaginary unit is the • square root of -1. • >> sqrt(-1) • ans = • 0 + 1.0000i • To represent the imaginary part of complex numbers, use either i or j . e.g. • >> c = [3+4i, 4+3j; -i, 10j] • c= • 3.0000 + 4.0000i 4.0000 + 3.0000i • 0 - 1.0000i 0 +10.0000i • Array Indexing • Every variable in MATLAB is an array that can hold many numbers. When you want to • access selected elements of an array, use indexing. e.g. • consider the 4-by-4 magic square A: • A = magic(4) • A= • 16 2 3 13 • 5 11 10 8 • 9 7 6 12 • 4 14 15 1 • There are two ways to refer to a particular element in an array. The most common way is • to specify row and column subscripts, such as: • A(4,2) • ans = • 14 • Less common, but sometimes useful, is to use a single subscript that traverses down each • column in order: • A(8) • ans = • 14 • Using a single subscript to refer to a particular element in an array is called linear • indexing. • If you try to refer to elements outside an array on the right side of an assignment statement, MATLAB throws an error. E.g • test = A(4,5) • Index exceeds matrix dimensions. • However, on the left side of an assignment statement, you can specify elements outside • the current dimensions. The size of the array increases to accommodate the newcomers. e.g. • A(4,5) = 17 • A= • 16 2 3 13 0 • 5 11 10 8 0 • 9 7 6 12 0 • 4 14 15 1 17 • >> A=magic(4) • A= • 16 2 3 13 • 5 11 10 8 • 9 7 6 12 • 4 14 15 1 • >> A(1:4,3) This refers to all the 4 elements in the 3rd column. • ans = • 3 • 10 • 6 • 15 • The colon alone, without start or end values, specifies all of the elements in that dimension. >> A(:) • ans = • 16 • 5 • 9 • 4 • 2 • 11 • 7 • 14 • 3 • 10 • 6 • 15 • 13 • 8 • 12 • 1 • Or you could select all the columns in the third row of A: • >> A(3, :) • ans = • 9 7 6 12 • The colon operator also allows you to create an equally spaced vector of values using the more general form start:step:end. • Example • B = 0:10:100 • B= • 0 10 20 30 40 50 60 70 80 90 100 • If you omit the middle step, as in start:end, MATLAB uses the default step value of 1. • Workspace Variables • The workspace contains variables that you create within or import into MATLAB from data files or other programs. For example, these statements create variables A in the workspace. • >> A=magic(4); • You can view the contents of the workspace using the command. • >> whos • Name Size Bytes Class Attributes • A 4x4 128 double • Solve the following system of equations • x + 2y + 3z = 1 • 3x + 3y + 4z = 1 • 2x + 3y + 3z = 2 • Solution • >> A = [1 2 3;3 3 4;2 3 3]; • >> b = [1;1;2]; • >> X = A\b • X = -0.5000 • 1.5000 • -0.5000 Solve the equations • 2x + 3y = 7, • x − y = 1, • and • 2x + 3y = −2, • x − y = 8. The equations can be written as 2 3 𝑥 7 −2 = 1 −1 𝑦 1 8 • >> A = [2 3;1 -1]; • >> b = [7 -2;1 8]; • >> X = A\b • X= • 2.0000 4.4000 • 1.0000 -3.6000 • The Solution to the 1st equation is (2, 1) and the 2nd is (4.4, -3.6) Solve the following simultaneous equations (a) y = x+1 and x+y =3 (b) y = x+1 and x+y = 5 (c) y = x2 and y = x+2 (d) Y =x2 -3x + 4 and y – x = 1 >> x = -4:0.1:4; >> y1 = x + 1; >> y2 = 3-x; >> plot(x,y1,x,y2) >> xlabel('-4\leqx\leq4') >> ylabel('Y') >> grid >> title('graphical solution of simultaneous equation') >> legend('y1=x+1','y2=x-3') Under edit Click on figure properties Click on the each of the lines and effect what ever changes you desire