matlab句柄

轉載自http://blog.sina.com.cn/s/blog_c0468c8f0101xbbu.html

在matlab中,每一個對象都有一個數字來標識,此標識成爲句柄,當每次創建一個對象時,matlab就爲他創建一個唯一的句柄。句柄的作用不言而喻。句柄中包含有該對象的相關信息參數,可以在後續程序中進行操作,改變其中的參數,以便達到不同的效果。

 

它就象我們的姓名一樣,每個人都會有一個,不同的人的姓名不一樣,從數據類型上來看它只是一個16位的無符號整數。句柄實際上是一種指向某種資源的指針,但與指針又有所不同。“句柄”(handle),handle的本意是把柄,把手的意思。相當於C語言中的函數指針(入口地址),只不過句柄就用一個唯一的常整數來指出。

 

句柄與指針的區別在於:指針對應着一個數據在內存中的地址,得到了指針就可以自由地修改該數據。而句柄不行,它是對象生成時系統指定的,是爲了區別系統中存在的各個對象這個句柄不是由程序員符給的。

 

例如:

h=figure(1);   % 創建1號窗口,返回句柄

返回值,h=1

給新建的窗口創建的句柄號爲1,通過該句柄號,就可可以得到該圖形的屬性。

get(h), get函數中輸入句柄號,可以返回句柄值h所指定的圖形對象的所有屬性名稱與相對應的屬性值

 

get(hObject,'String'), 取出hObject句柄所指對象中的 'String'值

 

比如定義f(x)=x^2,可以寫爲
f=@(x)(x.^2)
其中@(x)(x.^2)就是匿名函數,第一個括號裏面是自變量,第二個括號裏面是表達式,@是函數指針
f=@(x)(x.^2)表示將匿名函數@(x)(x.^2)賦值給f,於是f就表示該函數。
於是f(2)=2.^2=4;f(1:3)=[1:3].^2=[1 4 9]等等

定義匿名函數時也可以調用別的匿名函數,比如
f1=@(x,y)(x.^2+y.^2)
定義了函數x^2+y^2
f2=@(t)(f1(t,2))
定義了函數t^2+4
f3=@(x)(f1(x(1),x(2)))
定義了函數x(1)^2+x(2)^2
使用匿名函數時一定要注意函數本身的參數形式,如
f1(2,3)
表示2^2+3^2
f2(3)=3
表示3^2+4
f3([1,2])
表示1^2+2^2 
說白了就是函數指針
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章