Download presentation
Presentation is loading. Please wait.
Published byTobias Brent Lamb Modified over 9 years 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 = 1.5708 >> fzero('exp(x)-2',[0 1]) ans = 0.6931 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 = 0.816496985529690 >> quad(@fun,0,1) ans = -0.166666666666667 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 >>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 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 = 0.707106781186547 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 = 0.707106781186547 feval (fun,value) >> 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 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. 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<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
You can pass the handle of an anonymous function to another function Multiple input arguments
17
Calling one function within another
18
Nested functions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.