




已閱讀5頁,還剩10頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MATLAB可視化設界面計(上) 一個可發布的應用程序通常都需要具備一個友好的圖形界面(比如,我們開課時或給學生上課而使用課件時,我們一般就會用到可視化界面)。這樣用戶不需要知道應用程序究竟是怎樣執行各種命令的, 而只需要了解可見界面組件的使用方法用戶也不需要知道命令是如何執行, 只要通過與界面交互就可以使指定行為得以正確執行。MATLAB可視化界面的設計, 一般有兩種方法, 一是直接通過編輯M腳本文件產生GUI(這個方法就是我們在前面學習過的如何編寫、調用M文件), 二是通過MATLAB圖形用戶界面開發環境GUIDE(Graphical User Interface Development Environment)來形成相應文件。這里只講述在GUIDE環境中利用控件實現可視化界面功能, 不探討直接通過編輯腳本文件實現可視化界面的方法。MATLAB軟件GUIDE為用戶提供了一個方便高效的集成環境, 所有GUI支持的用戶控件都集成在這個環境中, 并提供界面外觀、屬性和行為響應方式的設置方法。GUIDE將用戶保存設計好的GUI界面保存在一個FIG資源文件中, 同時自動生成包含GUI初始化和組件界面布局控制代碼的M文件, 為實現回調函數提供了一個參考框架。下面以一個具體實例來說明GUIDE的開發使用以下所講解的關于各控件的使用, 我們以MATLAB7.0版本為調試環境, 如果版本的環境和版本略有不同,但基本思想和方法一致。為了方便大家學習,此處提供二個版本(即文字和視頻,文字的即為下面的敘述,視頻請點擊此處。)實例要完成的功能如下:首先運行M文件后,出現一個主畫面當分別點擊按鈕“螺旋線”、“內擺線”、“圓旋轉成圓環”和“退出”命令按鈕時,分別出現如下列圖示的動態、靜態的結果。螺旋線圖內擺線圖圓動成環圖退出信息圖下面看具體的操作步驟:1)啟動Matlab并進入GUIDE環境:在Command Window下輸入“guide”,進入GUIDE環境。出現如下圖所示的界面(寫到這里,發現文字敘述很繁瑣,但還得寫,要命)。這里Matlab提供了一個新建空白界面及三個樣本界面,它們分別是:GUI with Uicontrols;GUI with Axes and Menu;Modal Question Dialog;當然還有一個標簽是用來打開已經編寫好的GUI的。一般來說,我們會用Blank GUI,即空白的界面來寫自己的東西。進入后,Matlab就新建了一個fig文件(默認名是untitled.fig),同時得到如下的編輯窗口:從上圖我們可以看出Matlab 的Guide環境可以分為三個部分即菜單欄和工具欄、用戶控件集、用戶界面編輯窗口。菜單欄,暫時不作介紹,我們主要使用用戶控件集(其它軟件一般稱為工具箱),用戶控件集主要有命令按鈕(Push Button)、切換按鈕(Toggle Button)、單選按鈕(Radio Button)、復選框按鈕(Checkbox)、編輯框(Edit Button)、靜態文本框(Static Button)、滾動桿(Slider)、列表框(Listbox)、彈出式菜單(Pop-menu)、坐標軸(Axes)等。嚴格地講, 坐標軸不能算控件的范疇。用戶界面編輯窗口用于對受控的圖形窗口進行編輯, 比如添加按鈕、靜態文本框等。2)在用戶界面編輯窗口添加相應控件(終于可以做具體的事了,這個就簡單了,哈哈)MATLAB可視化界面設計(下)王林方 發表于 2010-4-2 11:12:00 0推薦首先,在用戶界面編輯窗口添加4個命令按鈕(顯示是OK的用個PUSH BUTTON),再如下圖所示添加5個靜態文本框(Static Text)、5個編輯文本框(Edit Text)和一個坐標系(Axes)其次,按下表設置每個控件的屬性值(具體操作是:右擊要設置屬性的控件property inspector 命令在彈出的屬性窗口中找到相應的屬性名稱將該屬性的值修改成自己需要的值)控件名屬性屬性修改值PushButton1FontSize16String螺旋線TagpushbuttonLxxPushButton2FontSize16String內擺線TagpushbuttonNBXPushButton3FontSize16String圓旋轉成圓環TagpushbuttonCtoCPushButton4FontSize16String退出TagpushbuttonExitStatic Text1String大圓半徑Static Text2String小圓半徑Static Text3String修正值Static Text4String圓半徑Static Text5String離轉軸的距離Edit Text1String空或設置成一個適定值,如10TageditBCREdit Text2String空或設置成一個適定值,如2TageditSCREdit Text3String空或設置成一個適定值,如1TageditXZZEdit Text4String空或設置成一個適定值,如4TageditCREdit Text5String空或設置成一個適定值,如10TageditBExit注:上面控件名稱的編號,比如1,2之類,在界面上是沒有的,只是我按照從上到下的次序,為方便敘述而編寫的。最后,添加程序(在添加程序前,最好先將文件保存一下,比如以Exp8.m為文件名保存),添加程序的常用方法是:單擊菜單命令viewM-file Editor,此時,得到下面的程序:function varargout = Exp8(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Exp8_OpeningFcn, . gui_OutputFcn, Exp8_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end%上面的是系統初始化代碼,絕對不要去修改它們。function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);%上面的代碼,告訴我們,一般的用戶界面的自己設置的初始化狀態應添加在這個函數內。function varargout = Exp8_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;%上面的函數返回的量直接到命令窗口。function pushbuttonLxx_Callback(hObject, eventdata, handles)%上面的函數是點擊螺旋線按鈕時,執行的代碼,即可以在此處添加有關螺旋線的程序代碼。function pushbuttonNBX_Callback(hObject, eventdata, handles)%上面的函數是點擊內擺線按鈕時,執行的代碼,即可以在此處添加有關內擺線的程序代碼。% - Executes on button press in pushbuttonExit.function pushbuttonExit_Callback(hObject, eventdata, handles)%上面的函數是點擊退出按鈕時,執行的代碼,即可以在此處添加退出時的程序代碼。function editBCR_Callback(hObject, eventdata, handles)%上面的函數是 editBCR這個編輯文本按鈕回調時,執行的代碼。BigCircleRadial=str2double(get(hObject,String);function editBCR_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editBCR的屬性值。function editSCR_Callback(hObject, eventdata, handles)%上面的函數是editSCR這個編輯文本按鈕回調時,執行的代碼。function editSCR_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editSCR的屬性值。 function editXZZ_Callback(hObject, eventdata, handles)%上面的函數是editXZZ這個編輯文本按鈕回調時,執行的代碼。function editXZZ_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editXZZ的屬性值。function pushbuttonCtoC_Callback(hObject, eventdata, handles)%上面的函數是點擊圓旋轉成圓環按鈕時,執行的代碼,即可以在此處添加圓旋轉成圓環時的程序代碼。function editCR_Callback(hObject, eventdata, handles)%上面的函數是editCR這個編輯文本按鈕回調時,執行的代碼。function editCR_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editCR的屬性值。function editDist_Callback(hObject, eventdata, handles)function editDist_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editDist的屬性值。下面真正添加自己的程序,最后成的程序如下:自己添加的程序用紅色表示。function varargout = Exp8(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, Exp8_OpeningFcn, . gui_OutputFcn, Exp8_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end%上面的是系統初始化代碼,絕對不要去修改它們。function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)handles.output = hObject;guidata(hObject, handles);%這里選擇了一個圖片文件,作為初始畫面,具體的圖片可以選擇自己喜歡的。map1=imread(Water lilies.jpg);image(map1)%上面的代碼,告訴我們,一般的用戶界面的自己設置的初始化狀態應添加在這個函數內。function varargout = Exp8_OutputFcn(hObject, eventdata, handles)varargout1 = handles.output;%上面的函數返回的量直接到命令窗口。function pushbuttonLxx_Callback(hObject, eventdata, handles)%上面的函數是點擊螺旋線按鈕時,執行的代碼,即可以在此處添加有關螺旋線的程序代碼。axes(handles.axes1)clav=2;alf=pi/6;omg=pi/5;t=0:0.01:100;x=v*sin(alf).*cos(omg*t).*t;y=v*sin(alf).*sin(omg*t).*t;z=v*cos(alf).*t;%plot3(x,y,z)axis(-100 100 -100 100 0 160)grid onaxis equal oncomet3(x,y,z)%上面的程序是“一質點,沿著已知圓錐面的一條直母線自圓錐的頂點起,作等速直線運動,另一方面這一條母線在圓錐面上,過圓錐的頂點繞圓錐的軸(旋轉軸)作等速的轉動,這時質點在圓錐面上的軌跡”的動態形成過程。function pushbuttonNBX_Callback(hObject, eventdata, handles)%上面的函數是點擊內擺線按鈕時,執行的代碼,即可以在此處添加有關內擺線的程序代碼。axes(handles.axes1)claa=str2double(get(handles.editBCR,String);b=str2double(get(handles.editSCR,String);k=str2double(get(handles.editXZZ,String);axis(-a-2 a+2 -a-2 a+2 0 a+2)line(-a-2,a+2,0,0);hold online(0,0,-a-2,a+2u=0:pi/30:2*pi;x=a*cos(u);y=a*sin(u);plot(x,y)x=b*cos(u)+a-b;y=b*sin(u);plot(x,y)axis equal ongrid ontheta=0:pi/1800:k*a*pi;x=(a-b)*cos(b/a*theta)+b*cos(a-b)/a*theta);y=(a-b)*sin(b/a*theta)-b*sin(a-b)/a*theta);comet(x,y)%上面的程序是內擺線的動態的形成過程% - Executes on button press in pushbuttonExit.function pushbuttonExit_Callback(hObject, eventdata, handles)%上面的函數是點擊退出按鈕時,執行的代碼,即可以在此處添加退出時的程序代碼。ss=questdlg(你真的要退出嗎?,退出信息窗口!,不,我還想看看!,是的,我要退出!,是的,我要退出!);switch ss case 是的,我要退出! delete(handles.figure1);end%上面的程序是退出程序時信息窗口function editBCR_Callback(hObject, eventdata, handles)%上面的函數是 editBCR這個編輯文本按鈕回調時,執行的代碼。function editBCR_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editBCR的屬性值。function editSCR_Callback(hObject, eventdata, handles)%上面的函數是editSCR這個編輯文本按鈕回調時,執行的代碼。function editSCR_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editSCR的屬性值。 function editXZZ_Callback(hObject, eventdata, handles)%上面的函數是editXZZ這個編輯文本按鈕回調時,執行的代碼。function editXZZ_CreateFcn(hObject, eventdata, handles)if ispc set(hObject,BackgroundColor,white);else set(hObject,BackgroundColor,get(0,defaultUicontrolBackgroundColor);end %上面的函數用來在程序中設置editXZZ的屬性值。function pushbuttonCtoC_Callback(hObject, eventdata, handles)%上面的函數是點擊圓旋轉成圓環按鈕時,執行的代碼,即可以在此處添加圓旋轉成圓環時的程序代碼。axes(handles.axes1)cla%a=4;%b=10;a=str2double(get(handles.editCR,Str
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業自動化技術的新進展與應用案例分析
- 工業領域環保技術的前沿與發展
- 工業設計與環境保護的關系
- 工作中的口頭與書面溝通技巧
- 工作場所靈活性與效率關系探討
- 工作場所的綠色環保理念與實踐
- 工作模式變革下的人才培養計劃
- 工程數學中的建模與計算方法
- 工程機械中焊接結構的耐久性優化
- 工程建筑中的綠色節能技術應用研究
- 消防員職業發展規劃方案
- DB14-T 2869-2023 建筑消防設施檢測規程
- 二手車鑒定評估報告書(范本)
- 高校校園閑置資源的共享平臺實施方案
- 2022年中山市公安局三鄉分局輔警招聘考試真題
- 充電樁工程施工方案模板
- 抖音直播運營服務合同范本
- 2022-2023學年廣西桂林市全州縣小升初總復習數學精選精練含答案
- 企業員工的一封安全家書3篇
- ABB變頻器ACS510內部電路圖
- 【典型案例】五張圖看懂中國人強大的集體主義精神
評論
0/150
提交評論