Professional Documents
Culture Documents
Techniques
MATLAB for Electrical Engineers You can use the lookfor command to find functions that
are relevant to your application.
Dr S Z Sayed Hassen
3-2
3-3 3-4
The rectangular
and polar
Some common mathematical functions (continued) representations
of the complex
Numeric number a + ib.
ceil(x) Round to nearest integer toward ∞.
fix(x) Round to nearest integer toward zero.
floor(x) Round to nearest integer toward -∞.
round(x) Round toward nearest integer.
sign(x) Signum function:
+1 if x > 0; 0 if x = 0; -1 if x < 0.
3-5 3-6
Dr S Z Sayed Hassen 1
ELEC 1018Y - Computational
Techniques
3-7 3-8
3-9 3-10
To evaluate sin(x 2 + 5), you type sin(x.^2 + 5). Another common mistake involves expressions like
sin2 x, which means (sin x)2.
To evaluate sin(x+1), you type sin(sqrt(x)+1).
In MATLAB we write this expression as
Using a function as an argument of another function is (sin(x))^2, not as sin^2(x), sin^2x,
called function composition. Be sure to check the order of sin(x^2), or sin(x)^2!
precedence and the number and placement of
parentheses when typing such expressions.
3-11 3-12
Dr S Z Sayed Hassen 2
ELEC 1018Y - Computational
Techniques
Trigonometric functions:
Expressing Function Arguments (continued)
To convert between degrees and radians, use the relation csc(x) Cosecant; csc x.
qradians = (pi/180)qdegrees.
sec(x) Secant; sec x.
3-13 3-14
Hyperbolic functions:
Inverse Trigonometric functions:
cosh(x) Hyperbolic cosine
acos(x) Inverse cosine; arccos x.
acot(x) Inverse cotangent; arccot x. coth(x) Hyperbolic cotangent.
acsc(x) Inverse cosecant; arccsc x.
csch(x) Hyperbolic cosecant
asec(x) Inverse secant; arcsec x.
asin(x) Inverse sine; arcsin x . sech(x) Hyperbolic secant
atan(x) Inverse tangent; arctan x . Hyperbolic sine
sinh(x)
atan2(y,x) Four-quadrant inverse tangent.
tanh(x) Hyperbolic tangent
3-15 3-16
3-17 3-18
Dr S Z Sayed Hassen 3
ELEC 1018Y - Computational
Techniques
3-19 3-20
Call this function without its output argument and try to Assign the output argument to another variable:
access its value. You will see an error message.
>>q = fun(3,7)
>>fun(3,7) q =
ans = 303
303
>>z You can suppress the output by putting a semicolon after
??? Undefined function or variable ’z’. the function call.
3-21 3-22
3-23 3-24
Dr S Z Sayed Hassen 4
ELEC 1018Y - Computational
Techniques
You can use arrays as input arguments: A function may have more than one output. These are
enclosed in square brackets.
>>r = fun(2:4,7:9)
r = For example, the function circle computes the area A
300 393 498 and circumference C of a circle, given its radius as an
input argument.
3-25 3-26
The function is called as follows, if the radius is 4. A function may have no input arguments and no output
list.
>>[A, C] = circle(4)
A = For example, the function show_date clears all
50.2655 variables, clears the screen, computes and stores the
C = date in the variable today, and then displays the value of
25.1327 today.
function show_date
clear
clc
today = date
Dr S Z Sayed Hassen 5
ELEC 1018Y - Computational
Techniques
1. The variable names used in the function definition may, 2. The input variables need not be assigned values
but need not, be used when the function is called: outside the function prior to the function call:
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
3-31 3-32
The names of the input variables given in the function The global command declares certain variables global,
definition line are local to that function. and therefore their values are available to the basic
workspace and to other functions that declare these
This means that other variable names can be used when variables global.
you call the function.
The syntax to declare the variables a, x, and q is
All variables inside a function are erased after the function
finishes executing, except when the same variable names global a x q
appear in the output variable list used in the function call.
Any assignment to those variables, in any function or in
the base workspace, is available to all the other functions
declaring them global.
You can create a function handle to any function by using You can use the fzero function to find the zero of a
the at sign, @, before the function name. You can then use function of a single variable, which is denoted by x. One
the handle to reference the function. To create a handle to form of its syntax is
the function y = x + 2e-x -3, define the following function
file: fzero(@function, x0)
function y = f1(x) where @function is the function handle for the function
y = x + 2*exp(-x) - 3; function, and x0 is a user-supplied guess for the zero.
You can pass the function as an argument to another The fzero function returns a value of x that is near x0.
function. For example, we can plot the function over 0 x It identifies only points where the function crosses the x-
6 as follows: axis, not points where the function just touches the axis.
For example, fzero(@cos,2) returns the value 1.5708.
>> x = 0:0.01:6;
3-35 >> plot(x, feval(@f1,x)) 3-36 Dr S Z Sayed Hassen
Dr S Z Sayed Hassen 6
ELEC 1018Y - Computational
Techniques
function y = f1(x)
y = x + 2*exp(-x) - 3;
Dr S Z Sayed Hassen 7
ELEC 1018Y - Computational
Techniques
To minimize the function f = xe-x2 - y2 , we first define it in Methods for Calling Functions
an M-file, using the vector x whose elements are x(1) =
x and x(2) = y. There are four ways to invoke, or “call,” a function into
action. These are:
function f = f4(x)
f = x(1).*exp(-x(1).^2-x(2).^2); 1. As a character string identifying the appropriate
function M-file,
Suppose we guess that the minimum is near x = y = 0. 2. As a function handle,
The session is 3. As an “inline” function object, or
4. As a string expression.
>>fminsearch(@f4,[0,0])
ans = Examples of these ways follow for the fzero function
-0.7071 0.000 used with the user-defined function fun1, which
computes y = x2 - 4.
Thus the minimum occurs at x = -0.7071, y = 0.
Dr S Z Sayed Hassen Dr S Z Sayed Hassen (continued …)
3-45 3-46
Methods for Calling Functions (continued) Methods for Calling Functions (continued)
1. As a character string identifying the appropriate 2. As a function handle to an existing function M-file:
function M-file, which is
>>[x, value] = fzero(@fun1,[0, 3])
function y = fun1(x)
y = x.^2-4; 3. As an “inline” function object:
(continued …)
Dr S Z Sayed Hassen
(continued …) Dr S Z Sayed Hassen
3-47 3-48
Dr S Z Sayed Hassen 8
ELEC 1018Y - Computational
Techniques
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
3-49 3-50
• Anonymous functions enable you to create a simple • Subfunctions are placed in the primary function and
function without needing to create an M-file for it. are called by the primary function. You can use
You can construct an anonymous function either at multiple functions within a single primary function M-
the MATLAB command line or from within another file.
function or script. Thus, anonymous functions provide
a quick way of making a function from any MATLAB
expression without the need to create, name, and
save a file.
Dr S Z Sayed Hassen 9
ELEC 1018Y - Computational
Techniques
• Nested functions are functions defined within Anonymous functions enable you to create a simple
another function. They can help to improve the function without needing to create an M-file for it. You
readability of your program and also give you more can construct an anonymous function either at the
flexible access to variables in the M-file. MATLAB command line or from within another function
or script. The syntax for creating an anonymous
The difference between nested functions and function from an expression is
subfunctions is that subfunctions normally cannot be
accessed outside of their primary function file. fhandle = @(arglist) expr
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
3-55 3-59
Dr S Z Sayed Hassen 10
ELEC 1018Y - Computational
Techniques
Variables can appear in anonymous functions in two ways: • As variables specified in the body of the expression,
• As variables specified in the argument list, as for as for example with the variables A and B in plane
example f = @(x) x.^3;, and = @(x,y) A*x + B*y.
A function M-file may contain more than one user-defined Create the primary function first with a function
function. The first defined function in the file is called the definition line and its defining code, and name the
primary function, whose name is the same as the M-file file with this function name as usual.
name. All other functions in the file are called subfunctions.
Then create each subfunction with its own function
Subfunctions are normally “visible” only to the primary definition line and defining code.
function and other subfunctions in the same file; that is, they
normally cannot be called by programs or functions outside The order of the subfunctions does not matter, but
the file. However, this limitation can be removed with the function names must be unique within the M-file.
use of function handles.
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
3-68 3-69
Dr S Z Sayed Hassen 11
ELEC 1018Y - Computational
Techniques
Dr S Z Sayed Hassen
(continued …) Dr S Z Sayed Hassen
3-70 3-71
Dr S Z Sayed Hassen 12
ELEC 1018Y - Computational
Techniques
Example
Nested Functions (continued)
The following example constructs a function handle for a
Like any M-file function, a nested function contains
nested function and then passes the handle to the
the usual components of an M-file function.
MATLAB function fminbnd to find the minimum point on
a parabola. The parabola function constructs and
You must, however, always terminate a nested
returns a function handle f for the nested function p.
function with an end statement.
This handle gets passed to fminbnd.
In fact, if an M-file contains at least one nested
function f = parabola(a, b, c)
function, you must terminate all functions, including
f = @p;
subfunctions, in the file with an end statement,
function y = p(x)
whether or not they contain nested functions.
y = a*x^2 + b*x + c;
end
end
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
(continued …)
3-76 3-77
>>f = parabola(4, -50, 5); 1. A nested function can access the workspaces of all
>>fminbnd(f, -10, 10) functions inside of which it is nested. So for
ans = example, a variable that has a value assigned to it
6.2500 by the primary function can be read or overwritten
by a function nested at any level within the main
Note than the function p(x) can see the variables a, function.
b, and c in the calling function’s workspace.
A variable assigned in a nested function can be read
or overwritten by any of the functions containing that
function.
(continued …)
Dr S Z Sayed Hassen Dr S Z Sayed Hassen
3-78 3-79
Dr S Z Sayed Hassen 13
ELEC 1018Y - Computational
Techniques
To import ASCII data, you must know how the data in For these files, you should know the following.
the file is formatted.
• How many data items are in each row?
For example, many ASCII data files use a fixed (or
uniform) format of rows and columns. • Are the data items numeric, text strings, or a mixture
of both types?
Dr S Z Sayed Hassen
3-86
Dr S Z Sayed Hassen 14