MATLABGUI數(shù)據(jù)傳遞總結(jié).doc

MATLABGUI數(shù)據(jù)傳遞總結(jié).doc

ID:50530829

大小:32.50 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2020-03-10

MATLABGUI數(shù)據(jù)傳遞總結(jié).doc_第1頁(yè)
MATLABGUI數(shù)據(jù)傳遞總結(jié).doc_第2頁(yè)
MATLABGUI數(shù)據(jù)傳遞總結(jié).doc_第3頁(yè)
MATLABGUI數(shù)據(jù)傳遞總結(jié).doc_第4頁(yè)
MATLABGUI數(shù)據(jù)傳遞總結(jié).doc_第5頁(yè)
資源描述:

《MATLABGUI數(shù)據(jù)傳遞總結(jié).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、Matlab的GUI參數(shù)傳遞方式總結(jié)其實(shí)Matlab提供了很多種直接或間接方法實(shí)現(xiàn)多fig中的數(shù)據(jù)共享,只是大家沒有注意罷了:1、全局變量2、作為函數(shù)的參數(shù)傳遞3、利用控件的userdata數(shù)據(jù)4、為handles結(jié)構(gòu)體添加新字段5、setappdata函數(shù)為句柄添加數(shù)據(jù)6、跨空間計(jì)算evalin和賦值assignin7、將數(shù)據(jù)保存到文件,需要時(shí)讀取8、帶參數(shù)調(diào)用GUI的M文件9、嵌套函數(shù)(不適用于GUIDE中,只適用純命令是的GUI)一、全局變量運(yùn)用global定義全局變量傳遞參數(shù),適用于gui內(nèi)控件間以及不同gui間。這種方式恐怕是最

2、簡(jiǎn)單的方式,是很省心!但是,簡(jiǎn)單的問題就在于有時(shí)你會(huì)很頭疼!因?yàn)樵诿恳粋€(gè)要到該全局變量的地方,你都要添一句gloalx,還有就是如果你在一個(gè)地方修改了x的值,那么所有x的值就都變了!有的時(shí)候恐怕會(huì)出現(xiàn)紊亂。另一個(gè)更重要的問題在于,套用C++的一句話,全局變量破壞了程序的封裝性!所以,全局變量是能少用盡量少用。以下創(chuàng)造一個(gè)簡(jiǎn)單的GUI給大家說明一下,建一個(gè)GUI,包含兩個(gè)按鈕,一個(gè)坐標(biāo)系,一個(gè)用來畫y=sin(x),一個(gè)用來畫y=cos(x);eg:在GUI的OpeningFcn函數(shù)中寫:globalxy1y2x=0:.1:2*pi;y1=

3、sin(x);y2=cos(x);在pushbutton1_Callback函數(shù)中寫Globalxy1Plot(x,y1)在pushbutton1_Callback函數(shù)中寫Globalxy2Plot(x,y2)全局變量是比較方便的,但全局變量會(huì)破壞封閉性,如果不是有大量數(shù)據(jù)要傳遞,建議不要使用。二、運(yùn)用gui本身的varain{}、varaout{}傳遞參數(shù)這種方式僅適用于gui間傳遞數(shù)據(jù),且只適合與主子結(jié)構(gòu),及從主gui調(diào)用子gui,然后關(guān)掉子gui,而不適合遞進(jìn)結(jié)構(gòu),即一步一步實(shí)現(xiàn)的方式。輸入?yún)?shù)傳遞(主要在子gui中設(shè)置):比如子G

4、UI的名稱為subGUI,設(shè)想的參數(shù)輸入輸出為:[out1,out2]=subGUI(in1,in2)在subGUI的m文件中(由GUIDE自動(dòng)產(chǎn)生):1.第一行的形式為:functionvarargout=subGUI(varargin)該行不用做任何修改;varargin和varargout分別是一個(gè)可變長(zhǎng)度的cell型數(shù)組。輸入?yún)?shù)in1和in2保存在varargin中,輸出參數(shù)out1,out2包含在varargout中;2.在subGUI的OpeningFcn中,讀入?yún)?shù),并用guidata保存,即:handles.in1=va

5、rargin{1};handles.in2=varargin{2};guidata(hObject,handles);返回參數(shù)的設(shè)置:1.在主GUI的OpeningFcn函數(shù)中加上[out1,out2]=subGUI(in1,in2),用于調(diào)用子gui,并在結(jié)尾加上uiwait(handles.figure1);figure1是subGUI的Tag,主要是等待調(diào)用子gui的過程,從而獲得子gui的輸出參數(shù)out1、out2;2.subGUI中控制程序結(jié)束(如"OK”和"Cancel"按鈕)的callback末尾加上uiresume(han

6、dles.figure1),注意是主gui的窗口handles.figure1,不要將delete命令放在這些callback中;3.在子GUI的OutputFcn中設(shè)置要傳遞出去的參數(shù),如varargout{1}=handles.out1;varargout{2}=handles.out2;末尾添加delete(handles.figure1);結(jié)束程序。在GUI的OpenFcn中,如果不加uiwait,程序會(huì)直接運(yùn)行到下面,執(zhí)行OutputFcn。也就是說程序一運(yùn)行,返回值就確定了,再在其它部分對(duì)handles.output作更改也沒

7、有效果了。加上uiwait后,只有執(zhí)行了uiresume后,才會(huì)繼續(xù)執(zhí)行到OutputFcn,在此之前用戶有充分的時(shí)間設(shè)置返回值。通過以上設(shè)置以后,就可以通過[out1,out2]=subGUI(in1,in2)的形式調(diào)用該子程序。在一個(gè)GUI中調(diào)用另一個(gè)GUI時(shí),主GUI不需要特別的設(shè)置,同調(diào)用普通的函數(shù)一樣。在打開子GUI界面的同時(shí),主程序還可以響應(yīng)其它的控件。不需要擔(dān)心子GUI的返回值被傳錯(cuò)了地方。三、userdata數(shù)據(jù)直接通過對(duì)象的userdata屬性進(jìn)行各個(gè)callback之間的數(shù)據(jù)存取操作,主要適用于gui內(nèi)。首先必須將數(shù)據(jù)

8、存儲(chǔ)到一個(gè)特定的對(duì)象中,假設(shè)對(duì)象的句柄值為ui_handle,需要存儲(chǔ)的值為value,則輸入以下程序即可:set('ui_handle','UserData',Value);此時(shí),value

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。