1 / 20

More on Functions…

More on Functions…. Lecture 8. 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)

Download Presentation

More on Functions…

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Common MATLAB Function functions

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

  6. Function functions Common MATLAB Function functions >>fminbnd('x^3-2*x', 0,1) ans = 0.816496985529690 Locates a minimum between 0 and 1. integrate function in ‘fun’ using simpson’s rule >> quad(@fun,0,1) ans = -0.166666666666667 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 >>ezplot(@sin)

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

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

  10. Function functions eval and fevalfunctions eval evaluates a character string as though it had been typed in the Command Window. fevalevaluates a named function at a specific input value. feval (fun,value) >>x=feval('sin’,pi/4) x = 0.707106781186547 >> y=feval(@fun,2) 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)<a(iptr); temp = a(j); a(j) = a(iptr); a(iptr)= temp; end end end out=a; nvals=input('enter number of values to sort'); array=zeros(1,nvals); for i=1:nvals string=['enter value' int2str(i) ': ']; array(i)= input(string); end sorted =ssort(array); disp(' Sorted data '); for i=1:nvals sorted(i) end

  12. Function Handles You can create a function handle to any function by using either @ 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 = @sin; >> 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. • As a character string identifying the appropirate function M-file: • As a function handle, • As an inline function object • 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<x<3. [x,value]=fzero(‘fun1’,[0,3])

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

  15. Anonymous Functions

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

  17. Calling one function within another

  18. Nested functions

More Related