請通俗易懂地解釋一下guidata()的用法?以及他是如何幫助參數在GUI間傳遞的?

做matlab的GUI是不是很懂handle和guidata。求助。謝謝


handles 在gui中就是一個儲存各種句柄和數據結構體.

guidata()函數是用來儲存和取出這個結構體的函數, 將handles結構體存入figure的特定儲存空間中或從中取出, 因此有兩種用法:

1. guidata(hObject, handles); %%儲存handles

2. handles = guidata(hObject); %%取出handles

handles僅僅只是一個結構體, 在函數之戰傳遞時,如:

function push1_Callback(hObject, eventdata, handles)

handles.data1 = "heygirl"; %%將字元串"heygirl"存入handles結構體

guidata(hObject, handles);

傳入的只是handles的值, callback函數中的handles改變時, figure特定存儲空間中的handles並沒有改變. 因此必須使用guidata(hObject, handles)將改變的handles儲存. hObject只是為了找到figure的特定儲存空間, 可以是figure中的任意句柄. handles的傳遞就好像是函數間的形參與實參, 但是這裡的形參可以通過guidata(hOject, handles)改變實參.

Ps: 運行gui時使用代碼里的Run按鈕, 因為雙擊打開將不會執行handles的生產代碼, 為了不造成額外麻煩最好使用Run按鈕.


推薦閱讀:

Matlab畫圖增加右邊坐標軸的刻度,與左邊一樣,如何處理?
請問怎麼用matlab 畫一個傾斜的橢球?
「MatLab 模擬結論在工業界認可度低」是否屬實?
matlab計算速度?
這個Matlab圖像應用了什麼命令?

TAG:圖形用戶界面 | MATLAB | GUI設計 |