ELEC 1018Y: MATLAB For Electrical Engineers

Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

ELEC 1018Y

Vectors: To create a row vector, separate the


elements by semicolons. Use square brackets. For
example,
MATLAB for Electrical Engineers
>>p = [3,7,9]
p =
3 7 9
Chapter 2
Numeric, Cell, and Structure Arrays You can create a column vector by using the
transpose notation (').

>>p = [3,7,9]'
p =
3
7
9
Dr S Z Sayed Hassen Dr S Z Sayed Hassen

You can also create a column vector by separating the You can create vectors by ''appending'' one vector to another.
elements by semicolons. For example,
For example, to create the row vector u whose first three
>>g = [3;7;9] columns contain the values of r = [2,4,20] and whose
g = fourth, fifth, and sixth columns contain the values of w =
3 [9,-6,3], you type u = [r,w]. The result is the vector u =
7 [2,4,20,9,-6,3].
9

The colon operator (:) easily generates a large vector of For example, typing x = 0:2:8 creates the vector x
regularly spaced elements. Parentheses are not needed but = [0,2,4,6,8], whereas typing x = 0:2:7
can be used for clarity. Do not use square brackets. creates the vector x = [0,2,4,6].

Typing To create a row vector z consisting of the values from 5


to 8 in steps of 0.1, type z = 5:0.1:8.
>>x = m:q:n
If the increment q is omitted, it is presumed to be 1.
or Thus typing y = -3:2 produces the vector y = [-
3,-2,-1,0,1,2].
>>x = (m:q:n)

creates a vector x of values with a spacing q. The first value


is m. The last value is n if m - n is an integer multiple of q. If
not, the last value is less than n.
Dr S Z Sayed Hassen

Dr S Z Sayed Hassen 1
ELEC 1018Y

The linspace command also creates a linearly spaced row The logspace command creates an array of
vector, but instead you specify the number of values rather logarithmically spaced elements.
than the increment.
Its syntax is logspace(a,b,n), where n is the
The syntax is linspace(x1,x2,n), where x1 and x2 are number of points between 10a and 10b.
the lower and upper limits and n is the number of points.
For example, x = logspace(-1,1,4)
For example, linspace(5,8,31) is equivalent to produces the vector x = [0.1000, 0.4642,
5:0.1:8. 2.1544, 10.000].

If n is omitted, the spacing is 1. If n is omitted, the number of points defaults to 50.

Dr S Z Sayed Hassen

Magnitude, Length, and Absolute Value of a Vector


For example, if x = [2,-4,5],
Keep in mind the precise meaning of these terms when using
MATLAB.  its length is 3; (computed from length(x))

The length command gives the number of elements in the  its magnitude is [22 + (–4)2 + 52] = 6.7082;
(computed from sqrt(x*x’))
vector.

The magnitude of a vector x having elements x1, x2, …, xn is  its absolute value is [2,4,5] (computed
from abs(x)).
a scalar, given by x12 + x22 + … + xn2), and is the same as
the vector's geometric length.

The absolute value of a vector x is a vector whose elements


are the absolute values of the elements of x.
Dr S Z Sayed Hassen

Creating Matrices
Matrices If the matrix is small you can type it row by row, separating the
A matrix has multiple rows and columns. For elements in a given row with spaces or commas and separating
example, the matrix the rows with semicolons. For example, typing

2 4 10 >>A = [2,4,10;16,3,7];
M = 16 3 7
8 4 9 creates the following matrix:
3 12 15
2 4 10
A=
has four rows and three columns. 16 3 7
Vectors are special cases of matrices having one Remember, spaces or commas separate elements in different
row or one column. columns, whereas semicolons separate elements in different
rows.
Dr S Z Sayed Hassen

Dr S Z Sayed Hassen 2
ELEC 1018Y

Creating Matrices from Vectors You need not use symbols to create a new array. For
example, you can type
Suppose a = [1,3,5] and b = [7,9,11] (row vectors).
Note the difference between the results given by [a b] and >> D = [[1,3,5];[7,9,11]];
[a;b] in the following session:
Array Addressing
>>c = [a b];
The colon operator selects individual elements, rows,
c = columns, or ''subarrays'' of arrays. Here are some
1 3 5 7 9 11 examples:
>>D = [a;b]
D = ■ v(:) represents all the row or column elements of
the vector v.
1 3 5
7 9 11 ■ v(2:5) represents the second through fifth elements;
that is v(2), v(3), v(4), v(5).

Dr S Z Sayed Hassen

You can use array indices to extract a smaller array from another
Array Addressing, continued array. For example, if you first create the array B

 A(:,3) denotes all the elements in the third column of 2 4 10 13


the matrix A. B = 16 3 7 18
 A(:,2:5) denotes all the elements in the second 8 4 9 25
through fifth columns of A. 3 12 15 17
 A(2:3,1:3) denotes all the elements in the second and
third rows that are also in the first through third then type C = B(2:3,1:3), you can produce the
columns. following array:
 v = A(:) creates a vector v consisting of all the columns of
A stacked from first to last. 16 3 7
C=
 A(end,:) denotes the last row in A, and A(:,end) denotes 8 4 9
the last column.

Additional Array Functions Additional Array Functions

[u,v,w] = find(A) Computes the arrays u and v, max(A) Returns the algebraically
containing the row and column largest element in A if A is a
indices of the nonzero elements of vector.
the matrix A, and the array w,
containing the values of the nonzero Returns a row vector
elements. The array w may be containing the largest
omitted. elements in each column if
A is a matrix.
length(A) Computes either the number of If any of the elements are
elements of A if A is a vector or the complex, max(A) returns
largest value of m or n if A is an m × the elements that have the
n matrix. largest magnitudes.

Dr S Z Sayed Hassen 3
ELEC 1018Y

Additional Array Functions


Additional Array Functions
size(A) Returns a row vector [m n]
[x,k] = max(A) Similar to max(A) but containing the sizes of the
stores the maximum values m x n array A.
in the row vector x and their sort(A) Sorts each column of the
indices in the row vector k. array A in ascending order
and returns an array the
same size as A.
Like max but returns sum(A) Sums the elements in each
min(A)and minimum values. column of the array A and
[x,k] = min(A) returns a row vector
containing the sums.

Multidimensional Arrays
The function size(A) returns a row vector [m n] containing
the sizes of the m × n array A. The length(A) function Consist of two-dimensional matrices “layered” to produce a third
computes either the number of elements of A if A is a vector dimension. Each “layer” is called a page.
or the largest value of m or n if A is an m × n matrix.

For example, if cat(n,A,B,C, ...) Creates a new array by


concatenating the
6 2
–10 –5
arrays A,B,C, and so on
A=
3 0 along the dimension n.

then max(A) returns the vector [6,2]; min(A)returns the


vector [-10, -5]; size(A) returns [3, 2]; and
length(A) returns 3.

Array Addition and Subtraction Multiplication: Multiplying a matrix A by a scalar w produces


a matrix whose elements are the elements of A multiplied by
For example:
w. For example:
6 –2 + 9 8 = 15 6
10 3 –12 14 –2 17
2 9 6 27
3 5 =
Array subtraction is performed in a similar way. –7 15 –21
The addition shown is performed in MATLAB as follows:
This multiplication is performed in MATLAB as follows:
>>A = [6,-2;10,3];
>>B = [9,8;-12,14] >>A = [2, 9; 5,-7];
>>A+B >>3*A
ans = ans =
15 6 6 27
-2 17 15 -21

Dr S Z Sayed Hassen 4
ELEC 1018Y

Multiplication of an array by a scalar is easily defined and Division and exponentiation must also be
easily carried out. carefully defined when you are dealing with
operations between two arrays.
However, multiplication of two arrays is not so
straightforward. MATLAB has two forms of arithmetic operations
on arrays. Next we introduce one form, called
MATLAB uses two definitions of multiplication: array operations, which are also called
element-by-element operations. Then we will
(1) array multiplication (also called element-by-element introduce matrix operations. Each form has its
multiplication), and own applications.
Division and exponentiation must also be
(2) matrix multiplication. carefully defined when you are dealing with
operations between two arrays.

Dr S Z Sayed Hassen

Element-by-element operations
Array or Element-by-element multiplication is defined only for
Symbol Operation Form Examples
arrays having the same size. The definition of the product x.*y,
+ Scalar-array addition A + b [6,3]+2=[8,5] where x and y each have n elements, is
- Scalar-array subtraction A – b [8,3]-5=[3,-2]
x.*y = [x(1)y(1), x(2)y(2), ... , x(n)y(n)]
+ Array addition A + B [6,5]+[4,8]=[10,13]

- Array subtraction A – B [6,5]-[4,8]=[2,-3] if x and y are row vectors. For example, if


.* Array multiplication A.*B [3,5].*[4,8]=[12,40]
x = [2, 4, – 5], y = [– 7, 3, – 8]
./ Array right division A./B [2,5]./[4,8]=[2/4,5/8]

.\ Array left division A.\B [2,5].\[4,8]=[2\4,5\8] then z = x.*y gives


.^ Array exponentiation A.^B [3,5].^2=[3^2,5^2]
z = [2(– 7), 4 (3), –5(–8)] = [–14, 12, 40]
2.^[3,5]=[2^3,2^5]

[3,5].^[2,4]=[3^2,5^4]

If x and y are column vectors, the result of x.*y is a column The array operations are performed between the elements in
vector. For example z = (x’).*(y’) gives corresponding locations in the arrays. For example, the array
multiplication operation A.*B results in a matrix C that has the
same size as A and B and has the elements ci j = ai j bi j . For
2(–7) –14
z = 4(3) = 12 example, if
–5(–8) 40

A= 11 5 B= –7 8
Note that x’ is a column vector with size 3 × 1 and thus –9 4 6 2
does not have the same size as y, whose size is 1 × 3.
then C = A.*B gives this result:
Thus for the vectors x and y the operations x’.*y and
y.*x’ are not defined in MATLAB and will generate an error
11(–7) 5(8) –77 40
message. C=
–9(6) 4(2)
=
–54 8

Dr S Z Sayed Hassen 5
ELEC 1018Y

The built-in MATLAB functions such as sqrt(x) and However, when multiplying or dividing these
exp(x) automatically operate on array arguments to functions, or when raising them to a power, you
produce an array result the same size as the array argument must use element-by-element operations if the
x. arguments are arrays.

Thus these functions are said to be vectorized functions. For example, to compute z = (ey sin x) cos2x, you
must type
For example, in the following session the result y has the
same size as the argument x. z = exp(y).*sin(x).*(cos(x)).^2.

>>x = [4, 16, 25]; You will get an error message if the size of x is not
>>y = sqrt(x) the same as the size of y. The result z will have
y = the same size as x and y.
2 4 5

Dr S Z Sayed Hassen

Array Division
Also, if
The definition of array division is similar to the definition of
24 20 –4 5
A= B=
array multiplication except that the elements of one array –9 4 3 2
are divided by the elements of the other array. Both arrays
must have the same size. The symbol for array right division then C = A./B gives
is ./. For example, if
C= 24/(–4) 20/5 = –6 4
–9/3 4/2 –3 2
x = [8, 12, 15] y = [–2, 6, 5]

then z = x./y gives

z = [8/(–2), 12/6, 15/5] = [–4, 2, 3]

Dr S Z Sayed Hassen

Array Exponentiation We can raise a scalar to an array power. For example, if p =


[2, 4, 5], then typing 3.^p produces the array [32, 34, 35]
MATLAB enables us not only to raise arrays to powers but = [9, 81, 243].
also to raise scalars and arrays to array powers.
Remember that .^ is a single symbol. The dot in 3.^p is not
To perform exponentiation on an element-by-element basis, a decimal point associated with the number 3. The following
we must use the .^ symbol. operations, with the value of p given here, are equivalent and
give the correct answer:
For example, if x = [3, 5, 8], then typing x.^3
produces the array [33, 53, 83] = [27, 125, 512]. 3.^p
3.0.^p
3..^p
(3).^p
3.^[2,4,5]

Dr S Z Sayed Hassen 6
ELEC 1018Y

Matrix-Matrix Multiplication Use the operator * to perform matrix multiplication in MATLAB.


The following MATLAB session shows how to perform the matrix
In the product of two matrices AB, the number of columns in multiplication .
A must equal the number of rows in B. The row-column
multiplications form column vectors, and these column >>A = [6,-2;10,3;4,7];
vectors form the matrix result. The product AB has the same >>B = [9,8;-5,12];
number of rows as A and the same number of columns as B. >>A*B
For example, ans =
64 24
6 –2 9 8 (6)(9) + (– 2)(– 5) (6)(8) + (– 2)(12)
10 3 = (10)(9) + (3)(– 5) (10)(8) + (3)(12)
75 116
–5 12
4 7 (4)(9) + (7)(– 5) (4)(8) + (7)(12) 1 116
64 24
= 75 116
1 116

Matrix multiplication does not have the commutative Special Matrices


property; that is, in general, AB BA. A simple example will
demonstrate this fact: Two exceptions to the non-commutative property are the
null or zero matrix, denoted by 0 and the identity, or unity,
matrix, denoted by I.
6 –2 9 8 78 20
AB = =
10 3 –12 14 54 122
The null matrix contains all zeros and is not the same as the
whereas empty matrix [ ], which has no elements.

BA = 9 8 6 –2 = 134 6 These matrices have the following properties:


–12 14 10 3 68 66

0A = A0 = 0
Reversing the order of matrix multiplication is a common
and easily made mistake. IA = AI = A

Sometimes we want to initialize a matrix to have all zero


The identity matrix is a square matrix whose diagonal
elements. The zeros command creates a matrix of all
elements are all equal to one, with the remaining elements
zeros.
equal to zero.
Typing zeros(n) creates an n × n matrix of zeros, whereas
For example, the 2 × 2 identity matrix is
typing zeros(m,n) creates an m × n matrix of zeros.

Typing zeros(size(A)) creates a matrix of all zeros


I= 1 0
0 1 having the same dimension as the matrix A. This type of
matrix can be useful for applications in which we do not
know the required dimension ahead of time.
The functions eye(n) and eye(size(A)) create an n × n
identity matrix and an identity matrix the same size as the The syntax of the ones command is the same, except that it
matrix A. creates arrays filled with ones.

Dr S Z Sayed Hassen

Dr S Z Sayed Hassen 7
ELEC 1018Y

Matrix Left Division and Linear Algebraic Equations Polynomial Coefficients

6x + 12y + 4z = 70
7x – 2y + 3z = 5 The function poly(r)computes the coefficients of the
2x + 8y – 9z = 64 polynomial whose roots are specified by the vector r. The
result is a row vector that contains the polynomial’s
>>A = [6,12,4;7,-2,3;2,8,-9]; coefficients arranged in descending order of power.
>>B = [70;5;64];
>>Solution = A\B
Solution = For example,
3
5 >>c = poly([-2, -5])
-2 c =
The solution is x = 3, y = 5, and z = –2. 1 7 10

Polynomial Roots Polynomial Multiplication and Division


The function conv(a,b) computes the product of the two
polynomials described by the coefficient arrays a and b. The
The function roots(a)computes the roots of a polynomial
two polynomials need not be the same degree. The result is
specified by the coefficient array a. The result is a column
the coefficient array of the product polynomial.
vector that contains the polynomial’s roots.
The function [q,r] = deconv(num,den) computes the
For example, result of dividing a numerator polynomial, whose coefficient
array is num, by a denominator polynomial represented by the
>>r = roots([2, 14, 20]) coefficient array den. The quotient polynomial is given by the
coefficient array q, and the remainder polynomial is given by
r = the coefficient array r.
-2
-5

Polynomial Multiplication and Division: Examples Plotting Polynomials

>>a = [9,-5,3,7];
>>b = [6,-1,2]; The function polyval(a,x)evaluates a polynomial at specified
>>product = conv(a,b) values of its independent variable x, which can be a matrix or
product =
a vector. The polynomial’s coefficients of descending powers
54 -39 41 29 -1 14 are stored in the array a. The result is the same size as x.
>>[quotient, remainder] = deconv(a,b)
quotient =
1.5 -0.5833
remainder =
0 0 -0.5833 8.1667

Dr S Z Sayed Hassen 8
ELEC 1018Y

Example of Plotting a Polynomial

To plot the polynomial f (x) = 9x3 – 5x2 + 3x + 7 for -2


≤ x ≤ 5, you type

>>a = [9,-5,3,7];
>>x = -2:0.01:5;
>>f = polyval(a,x);
>>plot(x,f),xlabel(’x’),ylabel(’f(x)’)

Dr S Z Sayed Hassen 9

You might also like