Download presentation

Presentation is loading. Please wait.

Published byTobias Brent Lamb Modified about 1 year ago

1
More on Functions… Lecture 8

2
Preserving Data between Calls to a function Persistent statement is declared in order to preserve some local information within a function between calls to afunction persistent var1,var2… Example: Running averages function [ave,std]=runstats(x) %runstats generate running ave /std deviation persistent n Persistent sum_x Persistent sum_x2 if x == ‘reset’ n=0 Sum_x=0 Sum_x2=0 else n=n+1 Sum_x = Sum_x Sum_x2=Sum_x2+x^2 end

3
Preserving Data between Calls to A function if n == 0 ave=0; std=0; elseif n == 1 ave=sum_x; std=0; else ave=sum_x/n; std=sqrt((n*sum_x2-sum_x^2)/(n*(n-1))); end script file [ave,std] = runstats(‘reset’) nvals=input(‘enter number of values’); for ii=1:nvals x=input(‘enter a value’, ‘s’); [ave,std]=runstats(x) end

4
Function functions A function includes the name of other functions in the input argument list. Function NameDescription fminbnd Minimize a function of one variable fzero find a zero of a function of one variable quad Numerically integrate a function ezplot easy to use function plotter fplot plot a function by name Common MATLAB Function functions

5
Function functions Common MATLAB Function functions >> fzero(‘cos’,[0 pi]) ans = >> fzero('exp(x)-2',[0 1]) ans = Locates a zero of the function cos between 0 and pi. Locates a zero of the function e x -2 between 0 and 1.

6
Function functions Common MATLAB Function functions >>fminbnd('x^3-2*x', 0,1) ans = >> ans = Locates a minimum between 0 and 1. integrate function in ‘fun’ using simpson’s rule function y=fun(x) y=x.^2-x; ‘fun’ includes any one variable function

7
Function functions Common MATLAB Function functions >>ezplot('x^3-2*x') quick plot of function in the string

8
Function functions Common MATLAB Function functions >> fplot('x^3-x',[-5 5]) quick plot of function in the string >> 2*pi])

9
Function functions eval and feval functions eval evaluates a character string as though it had been typed in the Command Window. feval evaluates a named function at a specific input value. >>x=eval('sin(pi/4)') x = eval (string) >>y=eval('x^2-2*x') ??? Error using ==> eval Undefined function or variable 'x'.

10
Function functions eval and feval functions eval evaluates a character string as though it had been typed in the Command Window. feval evaluates a named function at a specific input value. >>x=feval('sin’,pi/4) x = feval (fun,value) >> y = 2 function y=fun(x) y=x.^2-x;

11
Example: ascending sort function out = ssort(a) nvals=length(a); for i=1:nvals-1 iptr=i; for j=i+1:nvals if a(j)

12
Function Handles You can create a function handle to any function by using before the function name. You can name the handle if you wish and use the handle to reference the function. For example, to create a handle to the sine function; >> sine_handle >> plot ([0:0.01:6], sine_handle, [0:0.01:6])

13
Methods for Calling Functions There are four ways to invoke, or call, a function into a function. 1.As a character string identifying the appropirate function M-file: 2.As a function handle, 3.As an inline function object 4.As a string 1. function y= fun1(x) y = x.^2-4; The function may be called as follows, to compute the zero over the range 0

14
2. As a function handle: [x,value] = 3. As an inline function object: >>fun1=‘x.^2-4’; >>fun_inline =inline(fun1); >>[x,value] = 4. As a string expression >>fun1=‘x.^2-4’; >>[x,value] = Or >>[x,value] = fzero(=‘x.^2-4’,[0,3]);

15
Anonymous Functions

16
You can pass the handle of an anonymous function to another function Multiple input arguments

17
Calling one function within another

18
Nested functions

19

20

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google