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

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
MATLAB GUI新手備忘錄
  MATLAB GUI新手備忘錄 收藏
1、從最簡(jiǎn)單的開(kāi)始
      編程 最基本的目的 就是——我執(zhí)行一個(gè)操作,程序 做出一個(gè)反應(yīng) 。
       “一個(gè)操作”包括:點(diǎn)擊 鼠標(biāo),拖動(dòng) 滑塊,填寫(xiě) 數(shù)據(jù) ,選擇 選項(xiàng)……
“做出一個(gè)反應(yīng)”包括:計(jì)算 一些東西,然后儲(chǔ)存 在哪里,或者貼個(gè)圖 出來(lái),或者顯示 在哪里……
-------------------------------------------------------------------------------------------------------------------
      編程的基本思想 :
      目的->當(dāng) 點(diǎn)擊按鈕A時(shí) , 然后執(zhí)行 任務(wù)C,
         則->進(jìn)入按鈕A的回調(diào)函數(shù) callback里,寫(xiě)下任務(wù)C的代碼 。
-------------------------------------------------------------------------------------------------------------------
     a:不知道callback在哪 ??右鍵單擊按鈕,view callbacks->選擇callback)別的控件也一樣。
     a:不同的回調(diào)函數(shù)啥意思 ??
       callBack
        最常用的就是它。如果控件是按鈕,那點(diǎn)擊按鈕時(shí) ,則按鈕下的Callback就會(huì)執(zhí)行;如果是滑塊,則拖動(dòng)滑塊 時(shí),滑塊名下的callback就會(huì)執(zhí)行;總之,就是對(duì)控件默認(rèn)操作 時(shí),matlab后臺(tái)就會(huì)自動(dòng)調(diào)用 它名下的的callback。正常用途,全放在callback下就夠了。如果其他的,實(shí)在是想知道,了解一下也未嘗不可。
       ButtonDownFcn
       就是鼠標(biāo)在它(代指各種控件)上面點(diǎn)擊一下,你放在這個(gè)函數(shù)名下的代碼就會(huì)執(zhí)行。(ps:按鈕的callback也是點(diǎn)擊,所以會(huì)覆蓋掉這個(gè)buttondownfcn。)
        CreateFcn
        顧名思義,在生成這個(gè)控件,顯示之前,執(zhí)行你放在這個(gè)函數(shù)名下的代碼;
        DeleteFcn
        一樣。在控件要銷(xiāo)毀,但是被毀滅之前執(zhí)行這個(gè)函數(shù)名下的代碼。貌似“真的要退出嗎”這一類(lèi)就是寫(xiě)在這里。
        KeyPressFcn
        當(dāng)前控件獲得焦點(diǎn)且有按鍵按下時(shí)執(zhí)行。(什么是焦點(diǎn)?就是這個(gè)控件被鼠標(biāo)點(diǎn)了(或者是tab輪選到了)。你打開(kāi)一個(gè)記事本,然后再點(diǎn)這個(gè)網(wǎng)頁(yè),再隨便按幾個(gè)按鍵,記事本上有字不?沒(méi)有對(duì)吧。因?yàn)樗鼪](méi)獲得焦點(diǎn),所以你的按鍵它不會(huì)反應(yīng)的。只有你最后再點(diǎn)它一下,再按幾個(gè)按鍵,結(jié)果 怎么樣?有字了吧?)這里的KeyPressFcn也是一樣的道理。
一般在這下面的代碼還會(huì)判斷下按鍵是什么,然后執(zhí)行相應(yīng)的代碼。
         ResizeFcn,SelectionChangeFcn 不常用。也懶得去看了。附幾句,控件都有Resize的屬性,好像默認(rèn)是不可調(diào)整,如果要用到這個(gè)函數(shù),去把它打開(kāi)先。
       SelectionChangeFcn
       是在群按鈕 組件中,改變選擇時(shí),所執(zhí)行的函數(shù)。
        哪些控件支持哪些回調(diào)函數(shù) ?很簡(jiǎn)單,你在它上面右鍵就可以看到了,點(diǎn)進(jìn)去就可以編輯了。
       可以在property inspect中在需要的回調(diào)函數(shù)下設(shè)置 %automatic就可以自動(dòng)添加相應(yīng)的回調(diào)函數(shù)框架 。
2、常用控件代碼框架參考
---------------------------------------------------------------------
Toggle Button 的callback一般寫(xiě)法
      toggle button是什么?設(shè)計(jì) 面板上,左邊那一欄圖標(biāo),看到它名字了吧?沒(méi)看到?File->preference->GUIDE->把那個(gè)show names那一欄勾選上。好了,可以看到了吧 。知道是什么了吧?
     拖進(jìn)來(lái),雙擊它,看到它的屬性設(shè)置表。上面各種各樣的屬性,以后有時(shí)間 慢慢研究。
     點(diǎn)下它時(shí),它默認(rèn)value ='Max'
      不點(diǎn)下它時(shí),它value='Min'
--------

代碼:
functon   togglebutton1_callback(hObject,eventdata,handles)
%這一句,現(xiàn)在不用管。自動(dòng)加的。 
%%%以下是一般代碼
button_state = get(hObject,'Value') 
%控件甲的callback下面hObject就是控件甲,同理控件乙callback下的hObject......
if button_state==get(hObject,'Max')
    %則怎么怎么怎么
else if button_state==get(hObject,'Min')
     %則怎么怎么怎么
end
--------
備注:button_state隨便取的變量 名,存放按鈕的選擇狀態(tài),別以為它是什么喔。
           如果你的button甲是放在一個(gè)buttonGroup里面,則button甲callback下的代碼就要挪到buttonGroup下面去。因?yàn)閎uttonGroup的回調(diào)函數(shù)會(huì)覆蓋掉它成員的回調(diào)函數(shù)。
----------------------------------------
Radio Buttons  
------
代碼:
右鍵點(diǎn)選你的Radio按鈕,進(jìn)入編輯callback
function ………………略
if(get(hObject,'Value')==get(hObject,'Max'))
   %被選中了,你想怎么樣
else
    %不被選中,你想怎么樣
end
-----------------------------------------
Check Boxes
-------
代碼:
if(get(hObject,'Value')==get(hObject,'Max'))
   %被選中了,你想怎么樣
else
    %不被選中,你想怎么樣
end
------------------------------------------
Edit Text
-----------
代碼:
function edit1_Callback(hObject,eventdata,handles)
user_string = get(hObject,'String');    %就得到了所輸入 的字符
%因?yàn)閙atlab是把所有的輸入當(dāng)作字符來(lái)看待,如果你是期望的到輸入的數(shù)據(jù)的話,則:
user_entry= str2double(get(hObject,'String'));     這里進(jìn)行一個(gè)數(shù)據(jù)類(lèi)型轉(zhuǎn)換。看函數(shù)名就知道了。
if isnan(user_entry)         %nan就是not a number的簡(jiǎn)寫(xiě)。知道這個(gè)函數(shù)意思了吧?
     errodlg('You must entry a number value','Bad Input','modal')      %跳出一個(gè)對(duì)話框。
end
%正確得到了數(shù)值,以下輸入你的其他代碼
----------
附: 'Bad Input'是指窗口樣式,就像我們?cè)诓僮飨到y(tǒng) 下,經(jīng)常會(huì)跳出一個(gè)黃色感嘆號(hào)的對(duì)話框,或者一個(gè)紅叉的對(duì)話框;
        modal是指窗口類(lèi)型,就像一些程序跳出警告對(duì)話框,我們什么也不能做了,只能把那個(gè)對(duì)話框選擇一個(gè)是或者不是,才能繼續(xù)做其他事情。這種對(duì)話框就是modal類(lèi)型。而通常的比如瀏覽器的界面 ,我們打開(kāi)后,可以不管,然后打開(kāi)別的對(duì)話框,這種就是非模態(tài)對(duì)話框。
     
       默認(rèn)在點(diǎn)擊你的界面菜單欄或者界面上的其他組件后,這個(gè)edit text的callback都回被執(zhí)行一遍,所以在你點(diǎn)確定按鈕的時(shí)候,edit callback下讀到的數(shù)據(jù)會(huì)更新的了,不用擔(dān)心!
---------------------------------------------------
Sliders
---------
代碼:
function slider1_callback(hObject,eventdata,handles)
slide_value=get(hObject,'Value');%獲取滑塊當(dāng)前值
%別的代碼
----------
附: 它的Max Min 屬性設(shè)置了滑竿的最大最小范圍值。
---------------------------------------------------
List Boxes
-----------
代碼:
function ........
index = get(handles.listbox1,'Value');  %listbox1是你自己的那個(gè)控件的tag名字
file_list =get(handles.listbox1,'String');   %得到了你的listBoxes的列表
file_name = file_list{index};
%得到了所選擇的項(xiàng)目名,一下寫(xiě)自己的代碼
-------------------
附:
       此 callback在鼠標(biāo)在這個(gè)控件上松開(kāi)或者特定的鍵盤(pán)按鍵松開(kāi)(看你怎么設(shè)置它的別的屬性的了)時(shí)候執(zhí)行。
      默認(rèn)鍵盤(pán)上 下 鍵可以改變它的值同時(shí)執(zhí)行一次callback。而enter和space不改變它的值,只是執(zhí)行callback
Max-Min 差值是0的話,表示只可以單選;1的話,表示可以多選。這個(gè)可以在他的屬性欄里設(shè)置
----------------------------------------------------------
Pop_up Menus
--------------
代碼:
function .......
val=get(hObject,'Value')
Switch val
case 1
%
case 2
%
defualt
......
end
----------------------------------------------------
Button Groups
------------------
代碼:
function .......
switch get(hObject,'Tag');
%注意這里的hObject和別的不同,并不是指這個(gè)BUtton Group,而是指在組里面,被選中的那個(gè)控件
case 'radio button1'   %按鈕1的tag
     %。。。。。
case '按鈕2的tag'
    %。。。。。
。。。
end
----------
附:所以在這里,如果要拿到button groups本身的話,就用handles.它的tag名  中間一個(gè)點(diǎn)。
--------------------------------------------------
Axes
-------------
       它是用來(lái)畫(huà)圖 的,可以說(shuō)是一塊畫(huà)布。它并不算是嚴(yán)格意義上的控件,但可以讓用戶在它的區(qū)域上點(diǎn)擊或者移動(dòng)鼠標(biāo)時(shí)(看你是放在什么callback下了)執(zhí)行一定的代碼。那就要加它自己的callback函數(shù)了。
       下面用來(lái)一般功能,所以不用自己的callback,代碼都是寫(xiě)在別的控件回調(diào)函數(shù)下。
代碼:
axes (handles.youraxesname);%選擇你的一個(gè)axes,自然,用它的tag來(lái)選中它
plot (x,y);  %這時(shí),所畫(huà)的圖就到它上面了
set(handles.youraxesname,'XMimrFrick','on'); %順便設(shè)置一下它的屬性
grid on; %加上網(wǎng)格
--------------------------------------------------
Active控件
還沒(méi)時(shí)間去研究。這個(gè)是最好用的,因?yàn)榭梢越栌脛e人的現(xiàn)成的東西,畢竟自己不是程序員,沒(méi)有必要編寫(xiě)太多的代碼。一些通用的比如文件 存取對(duì)話框,視頻 放映之類(lèi)的。
可惜,我還沒(méi)時(shí)間去看。呵呵。
3、怎么獲得和設(shè)置控件的屬性
     通俗的說(shuō),就是我怎么獲取 編輯框里的字符,滑塊現(xiàn)在的位置,pop up里被選中的選項(xiàng),如何控制 static text顯示我要求的信息
     控件的屬性當(dāng)然遠(yuǎn)不止我剛剛說(shuō)的。
     在你需要的地方插入以下代碼:
設(shè)置:
     set(handles.你控件的tag,'要設(shè)置的屬性名','要設(shè)置的屬性值')
獲?。?br>    get(handles.你控件的tag,'要獲取的屬性名')
    比如:set(handles.edit1,'string','hello world');

help里可以看到所有可能有用的屬性
MATLAB->Creating Graphical User Interfaces->Laying Out GUIs and Setting Properties->What Properties Do I Need to Set?

4. 數(shù)據(jù)怎么在不同的控件之間傳遞
     知道了GUI的數(shù)據(jù)管理規(guī)則,這個(gè)就很簡(jiǎn)單了。
-------------------   
先看在一個(gè)GUI界面內(nèi)部的傳遞的數(shù)據(jù)   
     每一個(gè)控件的回調(diào)函數(shù)頭:
    function myc_Callback(hObject, eventdata, handles)
   
     第一個(gè)參數(shù)是hObject ,是跟這個(gè)callback所關(guān)聯(lián)的控件的handles,在它自己的callback下,可以用代號(hào)-> hObject 來(lái)調(diào)用它。。不用管那么麻煩的概念,只用知道,控件自己的回調(diào)函數(shù)調(diào)用自己的屬性,只用hObject.屬性名   就可以了(中間一點(diǎn))。
     第二個(gè)參數(shù)是MATLAB的保留參數(shù)
     第三個(gè)handles ,是這個(gè)GUI界面的代號(hào)??梢酝ㄟ^(guò)它獲取這個(gè)界面的所有信息。所以在控件A自己的回調(diào)函數(shù)中,要獲取或者設(shè)置別的控件的屬性,就用  handles.別的控件Tag.屬性 
------------------------------   
     handles hObject 都是結(jié)構(gòu)體。正常的編程概念。
    handles格式是一個(gè)存放數(shù)據(jù)的缸??丶膆andles是小缸,它的名字叫做hObject;GUI界面的handle是一個(gè)大缸,并且這個(gè)缸名字也叫做handles;大缸里存放了所有的小缸和所有用戶數(shù)據(jù),你只需 handles.控件A的tag  就可以存取控件A的信息。
     那我怎么把自己計(jì)算出或者別的什么數(shù)據(jù)放到這個(gè)缸里呢?
     ^_^ 在任何地方  
     handles.自己的變量名 = 某些值     (其實(shí)也就是給結(jié)構(gòu)體添加成員變量)
     這樣你就定義了自己的變量。
     在任何地方
    b=handles.自己的變量名      (結(jié)構(gòu)名加點(diǎn)號(hào)來(lái)引用成員變量)
     就可以得到這個(gè)變量值,同樣也可以修改它。
     別忘了使用
      guidata(hObject, handles);( 不用改,直接黏貼)  在函數(shù)末尾來(lái)保存你對(duì)handles和hObject的操作 。(不然你自定義的變量就沒(méi)了)
-----------------------
5、在不同GUI之間傳遞數(shù)據(jù)
-----------這部分是以前寫(xiě)的我發(fā)現(xiàn)我的理解有些問(wèn)題---所以我現(xiàn)在傳遞數(shù)據(jù)用的application data的方法,沒(méi)用這個(gè)-??赡苓€沒(méi)理解透output的函數(shù)作用------------------------
  傳入
    那就來(lái)看打開(kāi)一個(gè)GUI界面時(shí),傳給他的參數(shù)有哪些 。
    
     function mygui_OpeningFcn(hObject, eventdata, handles, varargin)
                  所有的啟動(dòng)參數(shù)都是通過(guò)varargin 傳到它的OpeningFcn里面的。那啟動(dòng)參數(shù)可以是哪些呢?
    
    1、figure,也就是窗口參數(shù) 。
         比如說(shuō)position之類(lèi)
         例如:打開(kāi)這個(gè)GUI時(shí),使用這個(gè)命令  mygui('Position',[434 234 234 34]) 則表示打開(kāi)窗口在這個(gè)位置;還有哪些可控屬性可以查help。
     2、自定義參數(shù) 。
       如果傳入的參數(shù)不是figure的屬性(matlab查找不到你輸入的屬性名),則你輸入的參數(shù)作為一個(gè)向量存放在varargin里面。
       比如mygui('路人甲','80‘),那varargin{1}存放了'路人甲',varargin{2}=’80‘
      
     那mygui中對(duì)這讀取兩個(gè)數(shù)據(jù)進(jìn)行反應(yīng),就達(dá)到了傳入?yún)?shù)的目的。
  傳出
      那怎么把數(shù)據(jù)傳出來(lái)呢?
      將你要輸出的數(shù)據(jù)存在handles.output里面
     在GUI任意地方
              handles.output=數(shù)據(jù)1;
              handles.secend_output=數(shù)據(jù)2;
     然后在GUI的outputFcn里面加上
             varaginout{1}=handles.output;
             varaginout{2}=handles.secend_output;
這樣就把數(shù)據(jù)傳出來(lái)了。
看每一個(gè)GUI的最外層的那句
     function varargout = mygui(varargin)     看輸入輸出,就是這樣了。把GUI本身就是一個(gè)函數(shù),
        b=mygui(一些傳入的參數(shù))   就執(zhí)行GUI并返回結(jié)果
        則b就得到了傳出來(lái)的結(jié)果。

本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/aldenphy/archive/2010/07/24/5757311.aspx
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
[教程] GUI指導(dǎo)教程系列(1):GUI入門(mén)基本操作(轉(zhuǎn)載)
轉(zhuǎn)貼:Matlab GUIDE使用總結(jié)--Matlab GUI界面
數(shù)字圖像
Matlab?的可視化界面設(shè)計(jì)
Matlab圖形用戶界面設(shè)計(jì)
Matlab:MATLAB GUI不同控件函數(shù)間變量傳遞的三種方法詳解
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服