help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: How to share variables between functions


From: Hall, Benjamin
Subject: RE: How to share variables between functions
Date: Tue, 3 Apr 2007 11:38:07 -0400

> | In some cases, it seems that sharing variables between functions
> | cannot be avoidable. for example
> | 
> | function y=f(x)
> |     global x;
> |     y=quad(subf,0,1);
> |     clear x;
> | endfunction
> | 
> | function f=subf(t)
> |     global x;
> |     f=g(x,t);
> | endfunction
> | 
> | function y=g(x,t)
> |     ......
> | endfunction
> | 
> | because "quad" function only accept functions with one scalar
> | argument, other arguments have to be passed by other means. The only
> | way I know is to use global variables as the above example 
> does. But I
> | don't think it is a good idea for that the variable "x" 
> would also be
> | accessible elsewhere, thus confusion may be caused. Is there any
> | method to share local variables between functions, that is, these
> | variables are not visible elsewhere?
> 
> With Octave 2.9.10, you can write
> 
>   function y = f (x)
>     y = quad (@(t) g (x, t), 0, 1);
>   endfunction
>   function y = g (x, t)
>     y = t*x;
>   endfunction
> 

I've also used persistent variables...

function y = f(x, otherparam )

persistent param = [];

if ( nargin > 1 )
        param = otherparam;
        return
end

y = param*x;

endfunction

then do an "initialization" call first

f(0,0.33);
quad( @f, 0, 1 )



reply via email to

[Prev in Thread] Current Thread [Next in Thread]