matlab 函数句柄

函数句柄的创建和观察

      函数句柄并不是伴随函数文件而自动形成的文件“属性”。它必须通过专门的定义才会生成。为一个函数定义句柄的方法有两种:或利用 @ 符号,或利用转换函数str2func。对函数句柄的内涵观察需借助专门指令functions 实现。

为MATLAB的“内建”函数创建函数句柄,并观察其内涵。

(1)创建

hsin=@sin 

(2)类型判别

class(hsin)

size(hsin)  

(3)借助指令functions观察内涵

CC=functions(hsin)   

〖说明〗

l  指令hsin=@sin 的功能,可以用hsin=str2func('sin') 替代。

在创建一个函数句柄时,只有那函数正处在“视野Scope”内,此创建的函数句柄才是有效的。

所谓视野:在当前目录下,指令help, lookfor 搜索函数的范围。

l  定义函数句柄时,所指定的函数名不应包括“路径信息”,也不应包括扩展名。函数名最多只能包括63个字符。

 

函数句柄的基本用法

      本节介绍:如何通过函数句柄执行相应函数的计算。假设,一个函数的调用格式为

[argout1, …, argoutn]=FunName(argin1, …, arginn)

又假设该函数的句柄Hfun已经存在,那么通过函数句柄实现函数运算的调用格式是:

[argout1, …, argoutn]=feval(Hfun,argin1, …, arginn)

〖说明〗

l  不管名为FunName的函数文件是否在当前搜索路径上,不管它是否在当前视野内,不管它是否子函数或私用函数,只要句柄Hfun已经被有效创建,那末它代表的函数总能被正确地执行。

l  在FunName存在重载函数时,借助句柄Hfun 的计算总能被“恰当地”执行。也就是说,它也会根据待计算的数据类型,从其包含的所有重载函数中选择相应的函数文件执行运算。

l  在不使用函数句柄的情况下,对 FunName 进行多次调用时,每次都要为该函数进行全面的路径搜索,这直接影响计算速度。借助Hfun可完全克服这种无谓的时间消耗。

【例6.6-2】本例通过sin函数及其句柄演示若干基本用法。

(1)函数句柄的创建

fhandle=str2func('sin'); 

(2)函数句柄在“数值计算”中的情况

ys=sin(pi/4)             %函数直接调用

yfold=feval('sin',pi/4)     %feval指令的“老式”调用

yfnew=feval(fhandle,pi/4) %feval指令的“新式”调用 

查看是否存在文件:

which('function_name')  

posted @ 2012-09-26 22:41  天堂一梦  阅读(2923)  评论(0编辑  收藏  举报