# anonymous functions?

4 messages
Open this post in threaded view
|

## anonymous functions?

 Hi there! Please bear with me, I'm a newbie user. I want to build a simple meshless PDE solver in octave, but right at the start I get stuck. I'm trying to write a function to compute a gram-matrix, but I can't figure out how to pass an anonymous function to the quad procedure. What I am hoping|trying to do:         function G =  grammatrix (funcs)           l = length (funcs)           G = zeros (l,l)           i = 0           j = 0           for f = funcs             for g =  funcs               function p = prod(t)                 p = f(t) * g(t)               endfunction               G(i,j) = quad (prod,0, 1, [0, 0.01], [])               j++               endfor             i++           endfor         endfunction -- Han-Wen Nienhuys   |   [hidden email]    | http://www.cs.uu.nl/þhanwen/------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web:  http://www.octave.orgHow to fund new projects:  http://www.octave.org/funding.htmlSubscription information:  http://www.octave.org/archive.html-------------------------------------------------------------
Open this post in threaded view
|

## Re: anonymous functions?

 Hello, From: Han-Wen Nienhuys <[hidden email]> #  Please bear with me, I'm a newbie user. I want to build a simple #  meshless PDE solver in octave, but right at the start I get stuck. #  I'm trying to write a function to compute a gram-matrix, but I can't #  figure out how to pass an anonymous function to the quad procedure. #  What I am hoping|trying to do: #          function G =  grammatrix (funcs) #            l = length (funcs) #            G = zeros (l,l) #            i = 0 #            j = 0 #            for f = funcs #              for g =  funcs #                function p = prod(t) #                  p = f(t) * g(t) #                endfunction #                G(i,j) = quad (prod,0, 1, [0, 0.01], []) #                j++ #                endfor #              i++ #            endfor #          endfunction   for f = funcs      ....   end   loops over the columns of funcs : octave:52> for ii = reshape (1:6,2,3), ii, end ii =   1   2 ii =   3   4 ii =   5   6   which may not be what you expected.   You may do   eval (["function p = my_prod(t)Ün"Ü           "  p = f(t) * g(t);Ün"Ü           "endfunctionÜn"]);   but f(t) will not be visible (see the man pages on local and global variables); by default, all vars are local.   Also, you don't get an anonymous func : it's called "my_prod". (note that "prod" is a builtin function). Do you usually program in perl (a good language for anonymous functions)?   Sorry for not being very helpful,   Etienne ------------------------------------------------------------- Octave is freely available under the terms of the GNU GPL. Octave's home on the web:  http://www.octave.orgHow to fund new projects:  http://www.octave.org/funding.htmlSubscription information:  http://www.octave.org/archive.html-------------------------------------------------------------