Chp3 MATLAB Functions: Part2 Engr/Math/Physics 25 Bruce Mayer, PE

advertisement
Engr/Math/Physics 25
Chp3 MATLAB
Functions: Part2
Bruce Mayer, PE
Licensed Electrical & Mechanical Engineer
BMayer@ChabotCollege.edu
Engineering/Math/Physics 25: Computational Methods
1
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Learning Goals
 Understand the difference Built-In and
User-Defined MATLAB Functions
 Write User Defined Functions
 Describe Global and Local Variables
 When to use SUBfunctions as
opposed to NESTED-Functions
 Import Data from an External Data-File
• As generated, for example, by an
Electronic Data-Acquisition System
Engineering/Math/Physics 25: Computational Methods
2
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Functions (ReDeaux)
 MATLAB Has Two Types of Functions
1. Built-In Functions Provided
by the Softeware
•
e.g.; max, min, median
2. User-Defined
Functions are .m-files
that can accept InPut
Arguments/Parameters and
Return OutPut Values
Engineering/Math/Physics 25: Computational Methods
3
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Array Function Operations
 MATLAB will treat a variable as an
array automatically.
 For example, to compute the
square roots of 7, 11 and 3-5j, type
>> u = [7, 11, (3-5j)]
>> sqrt(u)
ans =
2.6458
3.3166
Engineering/Math/Physics 25: Computational Methods
4
2.1013 - 1.1897i
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Expressing Fcn Arguments
 We can write sin2 in text, but MATLAB
requires parentheses surrounding the 2
• The 2 is called the fcn argument or parameter
 To evaluate sin2 in MATLAB, type sin(2)
• The MATLAB function name must be followed by a
pair of parentheses that enclose the argument
 To express in text the sine of the 2nd element
of the array x, we would type sin[x(2)].
• However, in MATLAB you cannot use
square brackets or braces in this way,
and you must type sin(x(2))
Engineering/Math/Physics 25: Computational Methods
5
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Expressing Fcn Arguments cont
 Evaluate sin(x2 + 5) → type sin(x.^2 + 5)
 Evaluate sin(√x+1) → type sin(sqrt(x)+1)
 Using a function as an argument of another
function is called function composition.
• Check the order of precedence and the number
and placement of parentheses when typing such
expressions
 Every left-facing parenthesis requires
a right-facing mate.
• However, this condition does NOT
guarantee that the expression is CORRECT!
Engineering/Math/Physics 25: Computational Methods
6
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Expressing Fcn Arguments cont
 Another common mistake involves
expressions like cos2y, which means (cosy)2.
 In MATLAB write this expression as
(cos(y))^2 or cos(y)^2
 Do NOT write the Expression as
• cos^2(y)
• cos^2y
• cos(y^2)
>> cos(pi/1.73)
ans =
-0.2427
>> (cos(pi/1.73))^2
ans =
0.0589
Engineering/Math/Physics 25: Computational Methods
7
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Built-In Trig Functions
Command
cos(x)
cot(x)
csc(x)
sec(x)
sin(x)
tan(x)
Conventional Math Function
Cosine; cos x
Cotangent; cot x
Cosecant; csc x
Secant; sec x
Sine; sin x
Tangent; tan x
 MATLAB trig fcns operate in radian mode
• Thus sin(5) returns the sine     rads  180
  rads
of 5 rads, NOT the sine of 5°.
Engineering/Math/Physics 25: Computational Methods
8
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Built-In Inverse-Trig Functions
Command
Conventional Math Function
acos(x) Inverse cosine; arccos x.
acot(x) Inverse cotangent; arccot x.
acsc(x) Inverse cosecant; arccsc x
asec(x) Inverse secant; arcsec x
asin(x) Inverse sine; arcsin x
atan(x) Inverse tangent; arctan x
atan2(y,x) Four-quadrant inverse tangent
Two
aTan’s?
 MATLAB trig-1 fcns also operate in radian mode
• i.e., They Return Angles in RADIANS
Engineering/Math/Physics 25: Computational Methods
9
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Why Two aTan’s?
 Consider the
Situation at Right
143°
(-4,3)
  x  arctan  3 4
x
 arctan  0.75  36.87
 arctan 3  4
 arctan  0.75  36.87
37°
 Due to aTan range
(4,-3)
−/2  y  /2
Engineering/Math/Physics 25: Computational Methods
10
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
143°
Why Two aTan’s? cont
(-4,3)
 Calculator Confusion from
 37  arctan  3 4  arctan 3  4  143
37°
 MATLAB Solves This problem
with atan2 which allows input
of the CoOrds to ID the proper Quadant
 MATLAB atan
 MATLAB atan2
>> q1 = atan(-3/4)
q1 =
-0.6435
>> q2 = atan(3/-4)
q2 =
-0.6435
>> q3 = atan2(-3,4)
q3 =
-0.6435
>> q4 = atan2(3,-4)
q4 =
2.4981
Engineering/Math/Physics 25: Computational Methods
11
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
(4,-3)
atan2 built into Complex angle
 As noted in the
Discussion of
Complex numbers
converting between
the RECTANGULAR
& POLAR forms
require that we note
the Range-Limits of
the atan function
 MATLAB’s angle
function uses atan2
Engineering/Math/Physics 25: Computational Methods
12
>> z1 = 4 - 3j
z1 =
4.0000 - 3.0000i
>> z2 = -4 + 3j
z2 =
-4.0000 + 3.0000i
>> r1 = abs(z1)
r1 =
5
>> r2 = abs(z2)
r2 =
5
>> theta1 = atan2(imag(z1),real(z1))
theta1 =
-0.6435
>> theta2 = atan2(imag(z2),real(z2))
theta2 =
2.4981
>> z1a = r1 *exp(j *theta1)
z1a =
4.0000 - 3.0000i
>> z2b = r2 *exp(j *theta2)
z2b =
-4.0000 + 3.0000i Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
“Degree” Trig Functions
 MATLAB now has Trig Functions that
Operate on angles in DEGREES (º)
 Example: Y = cosd(θ)
• Where is Measured in Degrees




cosd(θ)
sind(θ)
tand(θ)
cotd(θ)
 cscd(θ)
 secd(θ)
Engineering/Math/Physics 25: Computational Methods
13
 acosd(y)
 asind(y)
 atand(y)
 acotd(y)
 acscd(y)
 asecd(y)
NO
atan2d(y)
though
(we’ll
make one)
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Built-In Hyperbolic Functions
Command
cosh(x)
coth(x)
csch(x)
sech(x)
sinh(x)
tanh(x)
Conventional Math Function
Hyperbolic cosine.
Hyperbolic cotangent
Hyperbolic cosecant
Hyperbolic secant
Hyperbolic sine
Hyperbolic tangent
Engineering/Math/Physics 25: Computational Methods
14
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Built-In Inverse-Hyp Functions
Command
Conventional Math Function
acosh(x) Inverse Hyperbolic cosine.
acoth(x) Inverse Hyperbolic cotangent
acsch(x) Inverse Hyperbolic cosecant
asech(x) Inverse Hyperbolic secant
asinh(x) Inverse Hyperbolic sine
atanh(x) Inverse Hyperbolic tangent
>> asinh(37)
ans =
4.3042
>> asinh(-37)
ans =
-4.3042
Engineering/Math/Physics 25: Computational Methods
15
>> acosh(37)
ans =
4.3039
>> acosh(-37)
ans =
4.3039 + 3.1416i
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
User-Defined Functions (UDFs)
 The first line in a function file must begin with
a FUNCTION DEFINITION LINE that has a list
of inputs & outputs.
• This line distinguishes a function m-file from a
script m-file. The 1st Line Syntax:
function [output variables] = name(input variables)
• Note that the OUTPUT variables are enclosed in
SQUARE BRACKETS, while the input variables
must be enclosed with parentheses.
• The function name (here, name) should be the
same as the file name in which it is saved
(with the .m extension).
Engineering/Math/Physics 25: Computational Methods
16
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF Example
 The Active m-File Lines
function ave3 = avg3(a, b, c)
TriTot = a+b+c;
ave3 = TriTot/3;
• Note the use of a
semicolon at the end
of the lines. This
prevents the values of
TriTot and ave3
from being displayed
Engineering/Math/Physics 25: Computational Methods
17
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF Example cont
 “Call” this Function with its OutPut Agrument
>> TriAve = avg3(7,13,-3)
TriAve =
5.6667
 To Determine
TriAve the
Function takes
• a=7
• b = 13
• c = −3
Engineering/Math/Physics 25: Computational Methods
18
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF Example cont
 Call the avg3 function withOUT its output
argument and try to access its internal value,
avg3. You will see an error message.
>> avg3(-23,19,29)
ans =
8.3333
>> ave3
??? Undefined function or variable 'ave3'.
 The variable ave3 is LOCAL to the UDF
• It’s Value is NOT defined OutSide the UDF
Engineering/Math/Physics 25: Computational Methods
19
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF Example cont
 The variables a, b, & c
are local to the function
avg3, so unless you pass
their values by naming
them in the command
window, their values will
not be available in the
workspace outside the
function.
 The variable TriTot is
also local to the function.
Engineering/Math/Physics 25: Computational Methods
20
>> a=-37; b=73; c=19;
>> s = avg3(a,b,c);
>> a
a =
-37
>> b
b =
73
>> c
c =
19
>> TriTot
??? Undefined
function or variable
'TriTot'.
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF – 2nd Example
 New Function
f t   e
t 6
cost 
 Write Function DecayCos with inputs of t & ω
function ecos = DecayCos(t,w)
% Calc the decay of a cosine
% Bruce Mayer, PE • ENGR25 • 28Jun05
% INPUTS:
%
t = time (sec)
%
w = angular frequency (rads/s)
% Calculation section:
ePart = exp(t/6);
w & t can be
ecos =cos(w.*t)./ePart;
Arrays
Engineering/Math/Physics 25: Computational Methods
21
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF – 2nd Example cont
 Pass Arrays to DecayCos
f t   e
t 6
cost 
>> p = DecayCos([1:3],[11:13])
p =
0.0037
0.3039
0.1617
 Note that in MATLAB
• [11:13]  [11:1:13] = [ 11, 12, 13]
Engineering/Math/Physics 25: Computational Methods
22
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF – Multiple Outputs
 A function may have more than one output.
These are enclosed in square brackets [ ]
• The OUPput is on the LEFT-hand side of the “=“
sign in the “function definition” line
 For example, the function Res computes the
Electrical Current, Ires, and Poweri
Dissipated, Pres, in an
Electrical Resistor

given its Resistance, R,
v
R
and Voltage-Drop, v,
as input arguments

Engineering/Math/Physics 25: Computational Methods
23
Circuit Represent ation
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
UDF – Multiple Outputs cont
 Calling the
function Res for
4.7Ω and 28 V
• Res has 2-INputs &
2-OUTputs
>> [I1 P1] = res(4.7,28)
I1 =
5.9574
P1 =
166.8085
Engineering/Math/Physics 25: Computational Methods
24
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Examples of Fcn Def Lines
1. One input, one output:
function [area_square] = square(side)
2. Vector-Brackets are optional for one output:
function area_square = square(side)
3. Three inputs, one output (Brackets Optional):
function [volume_box] = box(height,width,length)
4. One input, Two outputs (Vector-Brackets Reqd):
function [area_circle,circumf] = circle(radius)
5. Output can be a Plot as well as number(s)
function sqplot(side)
Engineering/Math/Physics 25: Computational Methods
25
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Example  Free Fall
 Consider an object
with arbitrary mass, m,
falling downward
• under the acceleration
of gravity
• with negligible
air-resistance (drag)
• With original
velocity v0
 Take DOWN as
POSITIVE direction
Engineering/Math/Physics 25: Computational Methods
26
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Example  Free Fall cont
 Use Newtonian
Mechanics to
analyze the Ballistics
of the falling Object
 The Velocity and
Distance-Traveled
as a function of time
& Original Velocity
vt   gt  v0
1 2
d   vt dt  d  gt  v0t
0
2
Engineering/Math/Physics 25: Computational Methods
27
t
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Free Fall/Drop MATLAB Fcn
function [dist, vel] = drop(g, v0, t);
% Calc Speed and distance-traveled by
% dropped object subject to accel of gravity
% Bruce Mayer, PE ENGR25 27Jun05
%
% Parameter/Argument List
%
g = accel of gravity
%
v0 = velocity at drop point (zero-pt)
%
t = falling time
%
% Calculation section:
vel = g*t + v0;
dist = 0.5*g*t.^2 + v0*t;
Engineering/Math/Physics 25: Computational Methods
28
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop
1. The variable names used in the function
definition may, but need not, be used when
the function is called:
>> a = 32.17; % ft/s^2
>> v_zero = -17; % ft/s
>> tf = 4.3; % s
>> [dist_ft, spd_fps] = drop(a, v_zero, tf)
dist_ft =
224.3117
spd_fps =
121.3310
Engineering/Math/Physics 25: Computational Methods
29
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop
cont
2. The input variables need not be assigned
values outside the function prior to the
function call:
>> [ft_dist, fps_spd] = drop(32.17, -17, 4.3)
ft_dist =
224.3117
fps_spd =
121.3310
Engineering/Math/Physics 25: Computational Methods
30
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop
cont
3. The inputs and outputs may be arrays:
Engineering/Math/Physics 25: Computational Methods
31
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Local Variables
 The names of the input variables given in
the function definition line are local to that
function
• i.e., the Function sets up a PRIVATE Workspace
 This means that other variable names can
be used when you call the function
 All variables inside a function are erased
after the function finishes executing, except
when the same variable names appear in the
output variable list used in the function call.
Engineering/Math/Physics 25: Computational Methods
32
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Global Variables
 The global command declares certain
variables global, and therefore their values
are available to the basic workspace and to
other functions that declare these variables
global
 The syntax to declare the variables a, x, and
q as GLOBAL is: global a x q
 Any assignment to those variables, in any
function or in the base workspace, is
available to all the other functions
declaring them global.
Engineering/Math/Physics 25: Computational Methods
33
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Private WorkSpace
Cmd Window
WorkSpace
Command
Window
OUTPUTS from
Function-1
INPUTS to
Function-1
Function
1
Engineering/Math/Physics 25: Computational Methods
34
Function-1
WorkSpace
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
143°
(-4,3)
Make “atan2d” Function
function Q = atan2d(Y,X);
% Bruce Mayer, PE * 8Sep10
% ENGR25 * Fcn Lecture
%
% Modifies Built-in Function
atan2 to return answer in DEGREES
%
Q = (180/pi)*atan2(Y,X);
>> a1 = atan2d(3,-4)
>> a2 = atan2d(-3,4)
a1 =
a2 =
143.1301
Engineering/Math/Physics 25: Computational Methods
35
-36.8699
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
37°
(4,-3)
All Done for Today
This
workspace
for rent
Engineering/Math/Physics 25: Computational Methods
36
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Engr/Math/Physics 25
Appendix
Bruce Mayer, PE
Licensed Electrical & Mechanical Engineer
BMayer@ChabotCollege.edu
f x   2 x  7 x  9 x  6
3
2
Engineering/Math/Physics 25: Computational Methods
37
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop – 1
1. Make as current directory
•
C:\Working_Files_Laptop_0505\BMayer\
Chabot_Engineering\ENGR-25_CompMeth\E25_Demo
2. Use FILE => NEW => M-FILE to open
m-file editor
3. To Slide-28 and Copy the “drop” Text
4. Paste drop-Text into m-file editor and
save-as drop.m
Engineering/Math/Physics 25: Computational Methods
38
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop - 2
5.
Test drop using SI units
>> [y_m, s_mps] = drop(9.8, 2.3, .78)
y_m =
4.7752
s_mps =
9.9440>>
Engineering/Math/Physics 25: Computational Methods
39
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Calling Function drop - 3
6. The inputs and outputs may be arrays:
>> [ft_fall, fps_vel] = drop(32.17,-17, [0:.5:2.5])
ft_fall =
0
-4.4787
-0.9150
10.6913
30.3400
58.0313
fps_vel =
-17.0000
-0.9150
15.1700
31.2550
47.3400
63.4250
 This function call produces the arrays
ft_fall and fps_vel, each with six
values corresponding to the six values of
time in the array t.
Engineering/Math/Physics 25: Computational Methods
40
Bruce Mayer, PE
BMayer@ChabotCollege.edu • ENGR-25_Functions-2.ppt
Download