1、在matlab中,每一個對象都有一個數(shù)字來標(biāo)識,叫做句柄.當(dāng)每次創(chuàng)建一個對象時,matlab就為它建立一個唯一的句柄祝沸。
2寂汇、句柄中包含有該對象的相關(guān)信息參數(shù),可以在后續(xù)程序中進行操作凰萨,改變其中的參數(shù),以便達(dá)到不同的效果械馆。
3胖眷、句柄與指針的區(qū)別在于:指針對應(yīng)著一個數(shù)據(jù)在內(nèi)存中的地址,得到了指針就可以自由地修改該數(shù)據(jù)霹崎。而句柄不行珊搀,它是對象生成時系統(tǒng)指定的,是為了區(qū)別系統(tǒng)中存在的各個對象尾菇。
4境析、從數(shù)據(jù)類型上來看它只是一個16位的無符號整數(shù)。句柄實際上是一種指向某種資源的指針派诬,但與指針又有所不同劳淆。“句柄”(handle)千埃,handle的本意是把柄憔儿,把手的意思忆植。相當(dāng)于C語言中的函數(shù)指針(入口地址)放可,只不過句柄就用一個唯一的常整數(shù)來指出。
5朝刊、函數(shù)句柄提供一種簡介訪問函數(shù)的手段耀里,用戶可以很方便地調(diào)用其他函數(shù):提供函數(shù)調(diào)用過程中的可靠性,減少程序涉及中的冗余拾氓,同時可以在使用函數(shù)的過程中保存函數(shù)相關(guān)的信息冯挎,尤其是關(guān)于函數(shù)執(zhí)行的信息。
創(chuàng)建函數(shù)句柄使用 @
或者 str2func
命令創(chuàng)建
函數(shù)句柄的創(chuàng)建:handle=@functionname
咙鞍,handle 為所創(chuàng)建的函數(shù)句柄房官,functionname 為所創(chuàng)建的函數(shù)趾徽。或者 handle=str2func('functionname')
那么使用函數(shù)句柄有什么好處呢翰守?
1孵奶、提高運行速度。因為matlab對函數(shù)的調(diào)用每次都是要搜索所有的路徑蜡峰,從set path中我們可以看到了袁,路徑是非常的多的,所以如果一個函數(shù)在你的程序中需要經(jīng)常用到的話湿颅,使用函數(shù)句柄载绿,對你的速度會有提高的。
2油航、使用可以與變量一樣方便崭庸。比如說,我再這個目錄運行后劝堪,創(chuàng)建了本目錄的一個函數(shù)句柄冀自,當(dāng)我轉(zhuǎn)到其他的目錄下的時候,創(chuàng)建的函數(shù)句柄還是可以直接調(diào)用的秒啦,而不需要把那個函數(shù)文件拷貝過來熬粗。因為你創(chuàng)建的function handles中,已經(jīng)包含了路徑余境。
函數(shù)句柄的操作:
functions:返回函數(shù)句柄的相關(guān)信息
func2str:根據(jù)函數(shù)句柄創(chuàng)建一個函數(shù)名的字符串
str2func:由一個函數(shù)名的字符串創(chuàng)建一個函數(shù)句柄
save:從當(dāng)前工作區(qū)間向M文件保存函數(shù)句柄
load:從一個M文件中向當(dāng)前工作區(qū)間調(diào)用函數(shù)句柄
isa:判斷一個變量是否包含一個函數(shù)句柄
isequal:判斷兩個函數(shù)句柄是否為某一相同函數(shù)的句柄
我的理解:句柄類似于對對象的引用(弱引用)驻呐,可以通過句柄查看對象的屬性,也可以通過對句柄的調(diào)用來修改對象的相關(guān)屬性芳来。函數(shù)句柄可以理解為函數(shù)指針含末,handle,”把手“即舌。函數(shù)句柄一般應(yīng)用在匿名函數(shù)和對圖形對象設(shè)置相關(guān)樣式佣盒。
參考文章:
http://blog.sina.com.cn/s/blog_c0468c8f0101xbbu.html
https://blog.csdn.net/qq_30089191/article/details/72853960
https://blog.csdn.net/algorithm_lixuan/article/details/75675176
https://u011936142.iteye.com/blog/2032526
https://www.cnblogs.com/weiweicf/p/5970497.html
https://blog.csdn.net/aiieno0/article/details/24785625