国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Matlab?的可視化界面設計

Matlab 的可視化界面設計(上)

一個可發(fā)布的應用程序通常都需要具備一個友好的圖形界面(比如,我們開課時或給學生上課而使用課件時,我們一般就會用到可視化界面)。這樣用戶不需要知道應用程序究竟是怎樣執(zhí)行各種命令的, 而只需要了解可見界面組件的使用方法用戶也不需要知道命令是如何執(zhí)行, 只要通過與界面交互就可以使指定行為得以正確執(zhí)行。
MATLAB可視化界面的設計, 一般有兩種方法, 一是直接通過編輯M腳本文件產生GUI(這個方法就是我們在前面學習過的如何編寫、調用M文件), 二是通過MATLAB圖形用戶界面開發(fā)環(huán)境GUIDE(Graphical User Interface Development Environment)來形成相應文件。這里只講述在GUIDE環(huán)境中利用控件實現(xiàn)可視化界面功能, 不探討直接通過編輯腳本文件實現(xiàn)可視化界面的方法。


MATLAB軟件GUIDE為用戶提供了一個方便高效的集成環(huán)境, 所有GUI支持的用戶控件都集成在這個環(huán)境中, 并提供界面外觀、屬性和行為響應方式的設置方法。GUIDE將用戶保存設計好的GUI界面保存在一個FIG資源文件中, 同時自動生成包含GUI初始化和組件界面布局控制代碼的M文件, 為實現(xiàn)回調函數(shù)提供了一個參考框架。


下面以一個具體實例來說明GUIDE的開發(fā)使用以下所講解的關于各控件的使用, 我們以MATLAB7.0版本為調試環(huán)境, 如果版本的環(huán)境和版本略有不同,但基本思想和方法一致。為了方便大家學習,此處提供二個版本(即文字和視頻,文字的即為下面的敘述,視頻請點擊此處。)

實例要完成的功能如下:

首先運行M文件后,出現(xiàn)一個主畫面





當分別點擊按鈕“螺旋線”、“內擺線”、“圓旋轉成圓環(huán)”和“退出”命令按鈕時,分別出現(xiàn)如下列圖示的動態(tài)、靜態(tài)的結果。

螺旋線圖

內擺線圖



圓動成環(huán)圖

退出信息圖

下面看具體的操作步驟:

1)啟動Matlab并進入GUIDE環(huán)境:在Command Window下輸入“guide”,進入GUIDE環(huán)境。出現(xiàn)如下圖所示的界面(寫到這里,發(fā)現(xiàn)文字敘述很繁瑣,但還得寫,要命)。這里Matlab提供了一個新建空白界面及三個樣本界面,它們分別是:GUI with Uicontrols;GUI with Axes and Menu;Modal Question Dialog;當然還有一個標簽是用來打開已經(jīng)編寫好的GUI的。一般來說,我們會用Blank GUI,即空白的界面來寫自己的東西。進入后,Matlab就新建了一個fig文件(默認名是untitled.fig),同時得到如下的編輯窗口:

從上圖我們可以看出Matlab 的Guide環(huán)境可以分為三個部分即菜單欄和工具欄、用戶控件集、用戶界面編輯窗口。菜單欄,暫時不作介紹,我們主要使用用戶控件集(其它軟件一般稱為工具箱),用戶控件集主要有命令按鈕(Push Button)、切換按鈕(Toggle Button)、單選按鈕(Radio Button)、復選框按鈕(Checkbox)、編輯框(Edit Button)、靜態(tài)文本框(Static Button)
、滾動桿(Slider)、列表框(Listbox)、彈出式菜單(Pop-menu)、坐標軸(Axes)等。嚴格地講, 坐標軸不能算控件的范疇。用戶界面編輯窗口用于對受控的圖形窗口進行編輯, 比如添加按鈕、靜態(tài)文本框等。

2)在用戶界面編輯窗口添加相應控件(終于可以做具體的事了,這個就簡單了,哈哈)
 
 

首先,在用戶界面編輯窗口添加4個命令按鈕(顯示是OK的用個PUSH BUTTON),再如下圖所示添加5個靜態(tài)文本框(Static Text)、5個編輯文本框(Edit Text)和一個坐標系(Axes)

其次,按下表設置每個控件的屬性值(具體操作是:右擊要設置屬性的控件——property inspector 命令——在彈出的屬性窗口中找到相應的屬性名稱——將該屬性的值修改成自己需要的值)

 

控件名 屬性 屬性修改值
PushButton1 FontSize 16
String 螺旋線
Tag pushbuttonLxx
PushButton2 FontSize 16
String 內擺線
Tag pushbuttonNBX
PushButton3 FontSize 16
String 圓旋轉成圓環(huán)
Tag pushbuttonCtoC
PushButton4 FontSize 16
String 退出
Tag pushbuttonExit
Static Text1 String 大圓半徑
Static Text2 String 小圓半徑
Static Text3 String 修正值
Static Text4 String 圓半徑
Static Text5 String 離轉軸的距離
Edit Text1 String 空或設置成一個適定值,如10
Tag editBCR
Edit Text2 String 空或設置成一個適定值,如2
Tag editSCR
Edit Text3 String 空或設置成一個適定值,如1
Tag editXZZ
Edit Text4 String 空或設置成一個適定值,如4
Tag editCR
Edit Text5 String 空或設置成一個適定值,如10
Tag editBExit

 

注:上面控件名稱的編號,比如1,2之類,在界面上是沒有的,只是我按照從上到下的次序,為方便敘述而編寫的。

最后,添加程序(在添加程序前,最好先將文件保存一下,比如以Exp8.m為文件名保存),添加程序的常用方法是:單擊菜單命令view——M-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(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
%上面的是系統(tǒng)初始化代碼,絕對不要去修改它們。


function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;

guidata(hObject, handles);

%上面的代碼,告訴我們,一般的用戶界面的自己設置的初始化狀態(tài)應添加在這個函數(shù)內。

function varargout = Exp8_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

%上面的函數(shù)返回的量直接到命令窗口。

function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊螺旋線按鈕時,執(zhí)行的代碼,即可以在此處添加有關螺旋線的程序代碼。

function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊內擺線按鈕時,執(zhí)行的代碼,即可以在此處添加有關內擺線的程序代碼。


% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊退出按鈕時,執(zhí)行的代碼,即可以在此處添加退出時的程序代碼。

function editBCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是 editBCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

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

 %上面的函數(shù)用來在程序中設置editBCR的屬性值。

 

function editSCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editSCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

function editSCR_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置editSCR的屬性值。

 

function editXZZ_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editXZZ這個編輯文本按鈕回調時,執(zhí)行的代碼。


function editXZZ_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置editXZZ的屬性值。


function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊圓旋轉成圓環(huán)按鈕時,執(zhí)行的代碼,即可以在此處添加圓旋轉成圓環(huán)時的程序代碼。

function editCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

function editCR_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置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
 %上面的函數(shù)用來在程序中設置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(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
%上面的是系統(tǒng)初始化代碼,絕對不要去修改它們。


function Exp8_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;

guidata(hObject, handles);

%這里選擇了一個圖片文件,作為初始畫面,具體的圖片可以選擇自己喜歡的。
map1=imread('Water lilies.jpg');
image(map1)

%上面的代碼,告訴我們,一般的用戶界面的自己設置的初始化狀態(tài)應添加在這個函數(shù)內。

function varargout = Exp8_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;

%上面的函數(shù)返回的量直接到命令窗口。

function pushbuttonLxx_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊螺旋線按鈕時,執(zhí)行的代碼,即可以在此處添加有關螺旋線的程序代碼。

axes(handles.axes1)
cla
v=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 on
axis equal on
comet3(x,y,z)

%上面的程序是“一質點,沿著已知圓錐面的一條直母線自圓錐的頂點起,作等速直線運動,另一方面這一條母線在圓錐面上,過圓錐的頂點繞圓錐的軸(旋轉軸)作等速的轉動,這時質點在圓錐面上的軌跡”的動態(tài)形成過程。

function pushbuttonNBX_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊內擺線按鈕時,執(zhí)行的代碼,即可以在此處添加有關內擺線的程序代碼。

axes(handles.axes1)
cla
a=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 on
line([0,0],[-a-2,a+2
u=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 on
grid on
theta=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)

%上面的程序是內擺線的動態(tài)的形成過程


% --- Executes on button press in pushbuttonExit.
function pushbuttonExit_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊退出按鈕時,執(zhí)行的代碼,即可以在此處添加退出時的程序代碼。

ss=questdlg('你真的要退出嗎?','退出信息窗口!','不,我還想看看!','是的,我要退出!','是的,我要退出!');
switch ss
    case '是的,我要退出!'
        delete(handles.figure1);
end

%上面的程序是退出程序時信息窗口

function editBCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是 editBCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

function editBCR_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置editBCR的屬性值。

 

function editSCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editSCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

function editSCR_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置editSCR的屬性值。

 

function editXZZ_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editXZZ這個編輯文本按鈕回調時,執(zhí)行的代碼。


function editXZZ_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置editXZZ的屬性值。


function pushbuttonCtoC_Callback(hObject, eventdata, handles)
%上面的函數(shù)是點擊圓旋轉成圓環(huán)按鈕時,執(zhí)行的代碼,即可以在此處添加圓旋轉成圓環(huán)時的程序代碼。

axes(handles.axes1)
cla
%a=4;
%b=10;
a=str2double(get(handles.editCR,'String'));
b=str2double(get(handles.editDist,'String'));
u=0:pi/30:2*pi;
y=a.*cos(u)+b;
z=a.*sin(u);
n=length(u);
x=0*ones(1,n);
if a<b
axis([-b-2 b+2 -b-2 b+2 -a-2 a+2])
else
axis([-a-2 a+2 -a-2 a+2 -b-2 b+2])
end
plot3(x,y,z)
pause(1)
for t=0:pi/60:2*pi
    x=y.*sin(t);
    y1=y.*cos(t);
    plot3(x,y1,z)
    pause(0.1)
    grid on
    hold on
    %axis equal on
    %view([-20,0])
end

%上面的程序是圓旋轉成圓環(huán)的動態(tài)的形成過程

function editCR_Callback(hObject, eventdata, handles)
%上面的函數(shù)是editCR這個編輯文本按鈕回調時,執(zhí)行的代碼。

function editCR_CreateFcn(hObject, eventdata, handles)
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

 %上面的函數(shù)用來在程序中設置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
 %上面的函數(shù)用來在程序中設置editDist的屬性值。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
matlab函數(shù)調用及數(shù)據(jù)傳遞(轉載)
阿英講多個matlab gui之間的數(shù)據(jù)傳遞
轉貼:Matlab GUIDE使用總結--Matlab GUI界面
MATLAB實現(xiàn)GUI界面
【圖像識別】基于卷積神經(jīng)網(wǎng)絡CNN實現(xiàn)車牌識別matlab源碼
[教程] GUI指導教程系列(1):GUI入門基本操作(轉載)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服