CS1371 Introduction to Computing for Engineers
Download
Report
Transcript CS1371 Introduction to Computing for Engineers
CMPS 1371
Introduction to Computing
for Engineers
FUNCTIONS
Functions
MATLAB uses function names consistent with
most major programming languages
For example
sqrt
sin
cos
log
Function Input can be either scalars
or matrices
Using Predefined Functions
Functions consist of
Name
Input argument(s)
Output
sqrt (x) = result
In MATLAB
sqrt(4)
ans = 2
Some functions require multiple
inputs
Remainder function returns the remainder in
a division problem
For example the remainder of 10/3, is 1
Some functions return multiple
results
size function determines the number of rows
and columns
You can assign names to the
output
Nesting Functions
Functions
There are functions for almost anything you
want to do
Use the help feature to find out what they are
and how to use them
From the command window
From the help selection on the menu bar
Elementary Math Functions
abs(x)
sign(x)
exp(x)
log(x)
log10(x)
absolute value
plus or minus
ex
natural log
log base 10
Rounding Functions
round(x)
fix(x)
floor(x)
ceil(x)
Discrete Mathematics
factor(x)
gcd(x,y)
greatest common denominator
lcm(x)
lowest common multiple
rats(x)
represent x as a fraction
factorial(x)
primes(x)
isprime(x)
Trigonometric Functions
sin(x)
cos(x)
tan(x)
asin(x)
sinh(x)
asinh(x)
sind(x)
asind(x)
sine
cosine
tangent
inverse sine
hyperbolic sine
inverse hyperbolic sine
sine with degree input
inverse sin with degree output
Data Analysis
max(x)
min(x)
mean(x)
median(x)
sum(x)
prod(x)
sort(x)
Variance and Standard Deviation
std(x)
var(x)
2
N
2
x
k 1
k
N 1
2
Random Numbers
rand(x)
Returns an x by x matrix of random numbers
between 0 and 1
rand(n,m)
Returns an n by m matrix of random numbers
Computational Limits
MATLAB’s computational range on most
computers is:
10-308
10308
When you divide by 0, the computer returns
Inf
Function specification
function <results> = <name> ( <parameter-list> )
% <Help comments – used with help, lookfor >
% <usage, theory, alg>
<code>
The names of variables in functions are only visible in the
function.
Scripts are used for the top level call to the functions.
Functions must be saved in an M-file of the same name as
the function. (For now in the working directory.) (Actually
filename is the name of the function!)
A simple example
Suppose I have a cylinder, and I want the
volume:
r
h
Going to write a function, called cyl,
which will input the radius and the height
of the cylinder and produce the desired
volume
r
cyl
h
vol
Function cylinder
Write function
function volume = cyl(radius, height)
% CYLINDER computes volume of circular cylinder
% given radius and height
% Use:
% vol=cylinder(radius, height)
%
volume=pi.*radius^2.*height; % why the dots?
Save as m-file with function name (cyl.m)
Type help cyl
Results of Cylinder
M-function Workspace
Each time an m-function is executed, a new
workspace is created just for that instance
All variables except arguments and returned variable
are defined only in the function workspace
Function variables are not defined in Base
workspace, nor are Base variables defined in function
workspace
Function workspace is destroyed when function
completes
Function variables are “hidden” from world (and from
accidental misuse or alteration)
Restrictions, style
Functions do not use INPUT or DISP or any real
input output unless specified in the assignment or
for debugging
Semi colons – use semi colons unless you need to
see step by step results when debugging
Can’t save and run a function. Why not?
Because doesn’t know the calling environment or
context.
Test Cylinder Function
Create a script:
test_cyl
Rad = Input(‘Radius:’)
Disp(rad) % note different names
Ht = Input(‘Height:’)
Disp(ht)
Cyl(rad,ht)
Try with vectors.
How are M-Functions Located?
Sometimes it is important to know how Matlab will look for an m-
function, especially if two have the same name…
1.
2.
3.
4.
5.
6.
First checks current workspace
is it a built-in Matlab function?
is it a sub-function in the current function?
is it a private function?
is it in the current directory?
is it in the Matlab path, searching from the current directory
down?
The first instance is used and any others are ignored
This can cause problems if you don’t understand…
It can also let you replace functions with different versions
Multiple Values Functions
M-functions Can Return Multiple Values
The returned variable from an M-function can
be a scalar or an array (even a cell array)
M-functions can use the [ ] constructor to
return an array formed from multiple scalar
values
Multiple Value Return
Lets update our cylinder function to return the area
and the volume:
function [area volume] = cylAV(radius, height)
% CYLINDER computes volume of circular cylinder
% given radius and height
% Use:
% [ar, vol] =cylinder(radius, height)
%
volume=pi.*radius^2.*height;
area = 2 .* pi .* height + 2.* pi .*r .*r;