matlabgui筆記整理_第1頁
已閱讀1頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、1、GUI新手之——教你讀懂GUI的M文件GUIDE生成的GUI的M文件控制了你編制的GUI界面的所有屬性和行為,或者說外觀和對用戶操作的響應。比如說按下一個按鈕或者選擇了一個菜單項之類。M文件包括了運行你整個界面程序所需要的全部代碼,包括所有GUI組件的CALLBACKS函數(shù)。其實這些callbacks函數(shù)算是M文件里的子程序,callback里面就填寫你所期望程序做的動作,比如畫一個圖或者算一個算式。插入,關(guān)于什么是子程序懂的人跳過

2、^_^function[avgmed]=newstats(u)%Primaryfunction%NEWSTATSFindmeanmedianwithinternalfunctions.n=length(u)avg=mean(un)med=median(un)functiona=mean(vn)%Subfunction%Calculateaverage.a=sum(v)nfunctionm=median(vn)%Subfunction%C

3、alculatemedian.w=st(v)ifrem(n2)==1m=w((n1)2)elsem=(w(n2)w(n21))2end以上就是一個大的程序functionnestats,它下面另外包含了兩個小的functionmean和median,這樣在大程序的里面就可以以如上的方式調(diào)用它們了。子程序的好處在于如果你總是要重復用到一組計算方式的時候,那你就把這組重復計算方式類似以上的方法編寫成一個子程序,避免大量重復代碼。在M文件里面

4、,會看到最外層,也就是最上面那一一行functionvarargout=setfire(varargin)(setfire是我m文件存的名字)就是那個大程序框,它下面有很多小function比如什么什么creatFcn或者什么callback之類??瓷先ツ莻€復雜,其實就跟上面這個一樣的道理。只不過是M文件的類似avg=mean(un)med=median(un)這兩句話系統(tǒng)隱藏(就當它是隱藏好了)起來了,它會在你點擊鼠標(或者響應操作)

5、時候自動去調(diào)用執(zhí)行一次callback函數(shù)。所以你只用管把代碼寫入響應的函數(shù)名下就行了。至于系統(tǒng)為什么會自動調(diào)用,我們不用管,我們只用知道,我點擊鼠標,我拖動滑竿時,系統(tǒng)會執(zhí)行哪里的代碼。就夠了。一、M文件的數(shù)據(jù)管理模式SharingDatawiththeHlesStructure:用hles這個東西共享數(shù)據(jù)在你運行你的GUI的時候,M文件會自動生成一個叫做hles的東西(準確的說它屬于hles類型的結(jié)構(gòu)體,且取的名字也叫做hles),

6、不用管那么復雜,只用知道你可以從它這里找到GUI的所有數(shù)據(jù),比如說控件的信息,菜單信息,axes信息。想象hles就是一個缸了,它里面裝載了所有的信息,而且這個缸在各個控件的callback之間傳來傳my_gui(Position[71.844.974.819.7])%GUI也是函數(shù),它只不過是有個界面的函數(shù)。它的調(diào)用,同樣是函數(shù)名(輸入?yún)?shù))。這里就表示GUI在打開時,位置這個屬性被設(shè)置成了右邊那個值。也就是在這個位置打開GUI。Po

7、sition是你GUI界面的一個屬性。(要想知道各個控件有什么屬性,在它上面雙擊就看到了。)所以同樣,也可以用這種方式輸入其他的初始化命令。my_gui(路人甲年十八)但如果你輸入別的,左邊那個根本就不是界面的屬性名稱。這是輸入的參數(shù)就保存在varargin里面。也就是vararging1=路人甲vararging2=年十八。這樣也可以達到向調(diào)用的GUI傳入數(shù)據(jù)的目的。四、OutputFunctionOutputfunction有輸入自

8、然就有輸出,顧名思義,這個函數(shù)就是用來輸出的。functionvarargout=my_gui_OutputFcn(hObjecteventdatahles)%Getdefaultcommlineoutputfromhlesstructurevarargout1=hles.output這個函數(shù)不是我們自己編寫的,也不是我們負責調(diào)用。我們只用知道要傳出去的數(shù)據(jù),其實是放在vararout這個變量里面的。但是我們在別的控件的callback

9、是叫不到vararout這個變量的,因為你去看這些callback的輸入?yún)?shù)里并沒有vararout這個變量給它用。所以我們只能間接修改hles.output這個變量。(當然在后面別忘了添加guidata(hObjecthles)保存修改)因為默認的output函數(shù)里面varargout1=hles.output,也就是修改了vararout。(所以知道了原理,output只是一個名字而已,你也可以用任意別的名字,或者添加更多的輸出變量

10、,只要在outputFcn下面添加varargout2=hles.第二個變量名。。。。類似)guidata(hObjecthles)之后不要立即窗口命令,因為這時候outputfcn沒有再執(zhí)行一次,也就是你剛剛修改的output并沒有更新到varargin里面去。所以要么單獨設(shè)計一個關(guān)閉按鈕;要么跟uiwait(hles.figure1)uiresume合用。五、Callbacks回調(diào)函數(shù)當你對組件做點擊或者別的動作,則自動調(diào)用相應的c

11、allback。callback的名字取決于你的控件的tag和控件類型以及響應類型。functionprint_button_Callback(hObjecteventdatahles)2、GUI程序中改變程序中改變currentdirecty引起的問題引起的問題fig和m文件和見下,主要是用來導入數(shù)據(jù)(用于導入兩個文件夾中的txt文件,每個txt有兩列,第一列時間,第二列電壓),運行后發(fā)現(xiàn)只能點擊一個pushbutton,當點擊第二個

12、時會出現(xiàn)以下錯誤:Undefinedfunctionmethodfenbianlv1finputargumentsoftypestruct.Errin==@(hObjecteventdata)fenbianlv1(pushbutton2_CallbackhObjecteventdataguidata(hObject))ErrwhileevaluatinguicontrolCallback應該是某個地方設(shè)置的問題。pushbutton里面

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論