http://wenku.baidu.com/view/cc9b4308bb68a98271fefa6f.html (Matlab北航教程)
CH 7.6 函數(shù)句柄
函數(shù)句柄是matlab的一個(gè)數(shù)據(jù)類型,保存函數(shù)的路徑、視野、函數(shù)名及重載方式等。
使用函數(shù)句柄的優(yōu)點(diǎn)
1.使一些泛函指令工作更可靠
2.使函數(shù)調(diào)用象變量引用一樣方便
3.可獲得同名重載函數(shù)的信息
4.可在更大范圍內(nèi)調(diào)用各種函數(shù),提高軟件的重用性
5.提高函數(shù)調(diào)用速度。
一、函數(shù)句柄的創(chuàng)建與觀察
1.創(chuàng)建
handlef=@fname;
handlef=str2func(‘fname’)
例如:fhandle = @sin;
sin是matlab中自帶的正弦函數(shù),得到的輸出變量fhandle為sin函數(shù)的句柄。可以利用fhandle來(lái)調(diào)用sin函數(shù),例如下面的代碼:
fhandle(0)
上面語(yǔ)句得到的輸出代碼如下:
ans = 0
實(shí)際上,該程序中的語(yǔ)句fhandle(0)相當(dāng)于語(yǔ)句sin(0)。
二、函數(shù)句柄的應(yīng)用
[out1,ou2,…]=fname(in1,in2,…)
也可通過函數(shù)句柄來(lái)完成函數(shù)運(yùn)算:
[out1,ou2,…]= handlef(in1,in2,…)
[out1,ou2,…]=feval(handlef,in1,in2,…)
http://www.ilovematlab.cn/thread-23048-1-1.html matlab 函數(shù)句柄@的介紹_什么是函數(shù)句柄
覺得自己很少用函數(shù)句柄,但是經(jīng)常遇到,所以在這里總結(jié)一下。
函數(shù)句柄:是包含了函數(shù)的路徑、函數(shù)名、類型以及可能存在的重載方法。
函數(shù)句柄必須通過專門的定義創(chuàng)建的,而一般的圖像的句柄是自動(dòng)建立的。
創(chuàng)建函數(shù)句柄使用@或者str2func命令創(chuàng)建
執(zhí)行sin函數(shù) feval
feval('sin',pi/2) %查matlab幫助 feval 既可以,可以不必關(guān)心這個(gè)函數(shù)的使用
ans =
1
那么使用函數(shù)句柄有什么好處呢?
1、提高運(yùn)行速度。因?yàn)?/span>matlab對(duì)函數(shù)的調(diào)用每次都是要搜索所有的路徑,從set path中我們可以看到,路徑是非常的多的,所以如果一個(gè)函數(shù)在你的程序中需要經(jīng)常用到的話,使用函數(shù)句柄,對(duì)你的速度會(huì)有提高的。
2、使用可以與變量一樣方便。比如說(shuō),我再這個(gè)目錄運(yùn)行后,創(chuàng)建了本目錄的一個(gè)函數(shù)句柄,當(dāng)我轉(zhuǎn)到其他的目錄下的時(shí)候,創(chuàng)建的函數(shù)句柄還是可以直接調(diào)用的,而不需要把那個(gè)函數(shù)文件拷貝過來(lái)。因?yàn)槟銊?chuàng)建的function handles中,已經(jīng)包含了路徑,比如說(shuō)我創(chuàng)建了一個(gè)fun
h_fun=str2func('rei');
可以用functions來(lái)查看這個(gè)function,結(jié)果果然已經(jīng)包括了路徑。
functions(h_fun)
ans =
function: 'rei'
type: 'simple'
file: 'G:\program\serial232\rei.m'