底层逻辑 MATLAB 的句柄是什么
轉(zhuǎn)載自http://blog.sina.com.cn/s/blog_c0468c8f0101xbbu.html
在matlab中,每一個(gè)對(duì)象都有一個(gè)數(shù)字來標(biāo)識(shí),此標(biāo)識(shí)成為句柄,當(dāng)每次創(chuàng)建一個(gè)對(duì)象時(shí),matlab就為他創(chuàng)建一個(gè)唯一的句柄。句柄的作用不言而喻。句柄中包含有該對(duì)象的相關(guān)信息參數(shù),可以在后續(xù)程序中進(jìn)行操作,改變其中的參數(shù),以便達(dá)到不同的效果。
?
它就象我們的姓名一樣,每個(gè)人都會(huì)有一個(gè),不同的人的姓名不一樣,從數(shù)據(jù)類型上來看它只是一個(gè)16位的無符號(hào)整數(shù)。句柄實(shí)際上是一種指向某種資源的指針,但與指針又有所不同。“句柄”(handle),handle的本意是把柄,把手的意思。相當(dāng)于C語言中的函數(shù)指針(入口地址),只不過句柄就用一個(gè)唯一的常整數(shù)來指出。
?
句柄與指針的區(qū)別在于:指針對(duì)應(yīng)著一個(gè)數(shù)據(jù)在內(nèi)存中的地址,得到了指針就可以自由地修改該數(shù)據(jù)。而句柄不行,它是對(duì)象生成時(shí)系統(tǒng)指定的,是為了區(qū)別系統(tǒng)中存在的各個(gè)對(duì)象,這個(gè)句柄不是由程序員符給的。
?
例如:
h=figure(1);???% 創(chuàng)建1號(hào)窗口,返回句柄
返回值,h=1
給新建的窗口創(chuàng)建的句柄號(hào)為1,通過該句柄號(hào),就可可以得到該圖形的屬性。
get(h), get函數(shù)中輸入句柄號(hào),可以返回句柄值h所指定的圖形對(duì)象的所有屬性名稱與相對(duì)應(yīng)的屬性值
?
get(hObject,‘String’), 取出hObject句柄所指對(duì)象中的 'String’值
?
比如定義f(x)=x^2,可以寫為
f=@(x)(x.^2)
其中@(x)(x.^2)就是匿名函數(shù),第一個(gè)括號(hào)里面是自變量,第二個(gè)括號(hào)里面是表達(dá)式,@是函數(shù)指針
f=@(x)(x.2)表示將匿名函數(shù)@(x)(x.2)賦值給f,于是f就表示該函數(shù)。
于是f(2)=2.2=4;f(1:3)=[1:3].2=[1 4 9]等等
定義匿名函數(shù)時(shí)也可以調(diào)用別的匿名函數(shù),比如
f1=@(x,y)(x.2+y.2)
定義了函數(shù)x2+y2
f2=@(t)(f1(t,2))
定義了函數(shù)t^2+4
f3=@(x)(f1(x(1),x(2)))
定義了函數(shù)x(1)2+x(2)2
使用匿名函數(shù)時(shí)一定要注意函數(shù)本身的參數(shù)形式,如
f1(2,3)
表示22+32
f2(3)=3
表示3^2+4
f3([1,2])
表示12+22?
說白了就是函數(shù)指針
總結(jié)
以上是生活随笔為你收集整理的底层逻辑 MATLAB 的句柄是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL数据库索引查询
- 下一篇: Jade模板引擎教程