Presentation is loading. Please wait.

Presentation is loading. Please wait.

Builtin and user defined functions

Similar presentations


Presentation on theme: "Builtin and user defined functions"— Presentation transcript:

1 Builtin and user defined functions
Functions in Matlab Builtin and user defined functions

2 Builtin Functions Exponential Logarithmic exp(x) sqrt(x)
log(x) natural logarithm ln log10(x) log2(x)

3 Builtin continued numeric complex
ceil(x) round to nearest integer towards + fix(x) round to nearest integer towards 0 floor(x) round to nearest integer towards -  round(x) round to nearest integer sign(x) , 0 or -1 rem(x,y) Finds remainder of x/y complex abs(x) absolute value angle(x) in complex plane conj(x) imag(x) real(x)

4 Builtin continued Trigonometric and their inverse cos(x) acos(x)
sin(x) asin(x) tan(x) atan(x) cot(x) acot(x) csc(x) acsc(x) sec(x) asec(x) atan2(x,y)

5 Builtin Functions continued
Hyperbolic and their inverse cosh(x) acosh(x) coth(x) acoth(x) csch(x) acsch(x) sech(x) asech(x) sinh(x) asinh(x) tanh(x) atanh(x)

6 Remarks All trigonometric functions require the use of radians and not degrees All buitlin functions can also be used with complex numbers. To understand the meaning with complex numbers need to go back to basic definitions: exp(i x) = cos(x) + i sin(x) sin(x) =(exp(i x) - exp(-i x) )/(2 i) sinh(x) = (exp(x) – exp(-x) )/2 Basic example exp( a + i b) = exp(a) exp(i b) = exp(a) (cos(x) + i sin(x))

7 Remarks continued Since a trigonometric function is periodic each value has many inverse values Matlab will return only one value, the so called 'principle value' For engineering applications it is important to check that this is the correct value. Plotting a complex valued function z =f(x+iy) is not possible. It requires a four dimensional space (x,y,u,v) since z = u+iv

8 Builtin Functions for vectors
max(x) returns largest value in vector x [a,b] = max(x) returns largest value in a and index where found in b max(x,y) x and y arrays of same size, returns vector of same length with lager value from corresponding positions in x and y same type of functions are available for min

9 Builtin functions for vectors
sort(x) mean(x) median(x) sum(x) prod(x) cumsum(x) returns vector of same size with cummulative sum of x i.e. x=[4,2,3] returns [4,5,9] cumprod(x) returns cummulative products in vector of same size

10 Builtin functions applied to matrices
Matrices (arrays) are stored in column major form When builtin functions for vectors are applied to a matrix function operates on columns and returns a row vector

11 User defined functions
Similar to script files except that temporary variables remain local function use standardized input and output parameters Script files good for quick and dirty jobs Functions can be used over and over again with no side effects Similar to subroutine, function or procedure in other programming languages like Fortran, PL/I, Pascal, C, C++

12 Example f(x,y) = 3*x +6*y^2 Questions to be answered first: Are x and y allowed to be arrays? Since Matlab treats everything as an array it is best to allow all parameters to be an array If x and y are arrays they have to be of the same size and f(x,y) is returned as an array of the same size In above example x or y could be scalar (i.e. a constant) and function still makes sense

13 Matlab code placed in file fun.m
function z = fun(x,y) u=3*x; z = u + 6*y.^2 ; Note operator .^ to allow for an array Here the operator * does not require the array operator .* since it is a multiplication with a constant + alays operates on the elements of an array thus .+ is not defined u is a local variable in will not be available after the function is executed u is used in the example for demonstration only. It would be better to write z = 3*x+6*y.^2;

14 Remarks Check that function name fun does not yet exist via: exist fun
The input parameters x, y and the output parameter z are local fun(3,4) does not create a variable z instead it returns the value in ans q = fun(x0,y0) gives anwser to q, assuming x0 and y0 are defined fun([2:5],[7:10]) works since arrays are of the same length

15 Parameters for functions
Input parameters: 0 or more parameter list enclosed by ( ) if there are no parameters can omit () function show_date today = date Example with three input parameters function volume = box(height, width, depth) volume = height.*width.*depth;

16 Parameters for user defined functions
Output parameter 0 or more parameter list enclosed by [ ] 0 or 1 output parameter, can omit [ ] 2 or more parameters separated by commas first output parameter ist set to ans, if function is called without output parameters Examples: function [areaC, cirumC] = circle(radius); function areaSquare = square(sides) ;

17 Remarks Why pass constants like g Earth's gravitation to a function?
g varies with units and forces user to select the proper unit a better choice is to let the user select at the very beginning, which units are to be used in this case need to state in function global g and in main progra g = 9.81 Input parameters are local even if they are change in the function the original value remains unchanged if the value in the calling program needs to be changed have to return value as an output parameter

18 Function handle Useful as parameter to other functions
Can be considered as an alternate name for a function – but with more capabilities Example: sine_handle sine_handle(x) same values as sin(x) for all x x = [0 : 0.01 : 2*pi] ; y = sin( x ); plot(x,y) plot( x, sin(x) ) plot( [0 : 0.01 : 2*pi] , sin( [0 : 0.01 : 2*pi] )) ;

19 Function handle continued
In last example everything is on one line It requires writing the interval twice It would be more convient to write gen_plot( function_handle, interval ) The first parameter has to be a function handle and not just the name of a function gen_plot( sin, [0 : 0.01 : 2*pi ] ) does not make sense to Matlab, but the following does gen_plot( sine_handle, [0 : 0.01 : 2*pi] )

20 Using a function handle
function [] = gen_plot( func_handle, interval ) ; plot( interval, func_handle(interval) ) ; When plotting lots of functions it may be useful to have gen_plot available The example shows how to pass functions as parameters. Another use is anonymous functions Assume the user needs to work temporaily with the function x3+3*x – 1 Instead of writing the function function y = mypoly(x) ; y = x.^3+3*x-1 and storing it as mypoly.m in subdirectory work we can use an anonymous function with the function handle mypoly mypoly x.^3+3*x-1

21 Using anonymous functions
With a function handle an anonymous function can be used like any other gen_plot( mypoly, [-10 : 0.01 : 10] ) fzero( mypoly, 0.0 ) roots( [1, 0, 3, -1] ) Without the function handle the anonymous function can be inserted directly as the parameter x.^3+3*x-1, [-10 : 0.01 : 10] )

22 More examples f1 x + 2* exp(-x) -3 fzero( f1, 0 ) fzero( f1, 1 ) Assume f1 had been defined as a function and kept in f1.m then fzero( f1, 0 ) would be in error Besides function handle Matlab provides the the following alternate method fzero( 'f1', 0 ) fzero( 'sin', 0 ) fzero( 'x.^3', 0 ) need to use default variable name


Download ppt "Builtin and user defined functions"

Similar presentations


Ads by Google