久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    GUI指導教程系列(9)——在GUI中調(diào)用Simulink模型 - MATLAB技術論壇 ...

     aliceblue 2011-04-29

    MATLAB技術論壇

    標題: GUI指導教程系列(9)——在GUI中調(diào)用Simulink模型

    作者: dynamic    時間: 2010-3-25 22:40     標題: GUI指導教程系列(9)——在GUI中調(diào)用Simulink模型

    本節(jié)教程主要向大家演示使用三種不同的方法在GUIDE中嵌入Simulink模塊。關于原理大家可以參考http://www./access/ ... g_guis/f6-8865.html

    在Simulink中能夠直觀快速的搭建系統(tǒng)模型,如果再聯(lián)合GUIDE的面向?qū)ο罂梢暬幊蹋梢哉f是錦上添花!將Simulink融入到GUIDE中可以方便模型的終端用戶,很容易直接可視化的操控模型參數(shù)和顯示仿真結果,而此時并不需要進入Simulink環(huán)境。


    構建Simulink模型



    該部分我們將快速的構建一個Simulink模型方便在后面的GUIDE中使用。本次我們就使用一個簡單的二階“質(zhì)量-彈簧-阻尼”系統(tǒng)作為示例吧。

    image001.gif 

    在使用該教程時,我們假定您已經(jīng)具備Simulink相關建模基礎和了解“質(zhì)量-彈簧-阻尼”系統(tǒng)的理論。因此在這里我就不深入介紹Simulink模型的建立和“質(zhì)量-彈簧-阻尼”系統(tǒng)的數(shù)學推導。如果的確需要,建議您參考下http://edu./Tutorials/Matlab/Simulink/index.html

    1、先下載論壇為您制作好的Simulink和GUI模型 simulink-gui.zip (13.04 KB, 下載次數(shù): 338) ,包含simulink_gui.fig、simulink_gui.m、 simulateButton.mmass_spring.mdl四個文件,將其解壓到MATLAB工作目錄。

    2、在Simulink中打開模型,框圖如下所示

    image003.png 

    3、請注意增益(Gain)模塊的增益使用的是變量1/m、c/m和k/m,而不是數(shù)值。因為Simulink默認使用基本狀態(tài)空間(Base WorkSpace)的數(shù)據(jù),因此在仿真之前必須先在狀態(tài)空間定義參數(shù)m、c和k,否則將出錯。當然我們可以使用set_param()函數(shù)直接設置參數(shù),這個將會在后面講解。

    4、由于函數(shù)有自己的狀態(tài)空間(不是Base Workspace),因此在函數(shù)中使用sim()函數(shù)進行模型仿真,即使你在函數(shù)中定義了模型的必要參數(shù),但是這些參數(shù)只存在于函數(shù)狀態(tài)空間中,模型在仿真是沒法獲取。比如下面的代碼將會導致錯誤
    1. function runSimulinkModel(m,c,k)
    2. % 即使在函數(shù)中有模型的參數(shù)輸入或定義,但是Simulink默認只使用基本狀態(tài)空間的數(shù)據(jù)
    3. sim('mass_spring');
    復制代碼
    5、由于函數(shù)狀態(tài)空間和基本狀態(tài)空間的變量和數(shù)據(jù)不兼容,這就增加了在GUIDE中調(diào)用Simulink模型的難度。在接下來的教程中,我們將討論使用三種方法來解決這個問題!


    GUIDE調(diào)用Simulink




    方法一:

    主要使用set_param函數(shù)設置仿真參數(shù)


    方法二:

    Simulink中提供的simset()函數(shù),可以讓用戶自定Simulink模型的運行空間(默認是Base Workspace),我們只要將Simulink設置為從當前工作空間運行就Ok了。關于simset的更多用法,感興趣的網(wǎng)友可以自己參考Matlab幫助!

    1、在GUIDE中打開simulink_gui.fig文件(不會使用GUIDE,那先看下http://www./thread-5217-1-1.html),GUI布局如下所示

    image005.png 

    2、打開simulink_gui.m文件定位到Simulate!按鈕的回調(diào)函數(shù)simulate_pushbutton_Callback,在后面添加如下代碼
    1. axes(handles.axes1) % 將axes1設置為當前坐標系,便于繪制仿真結果
    2. m=str2num(get(handles.mass_editText,'String')); % 獲取質(zhì)量
    3. c=str2num(get(handles.damping_editText,'String')); % 獲取阻尼
    4. k=str2num(get(handles.spring_editText,'String')); % 獲取勁度系數(shù)

    5. % 配置Simulink仿真選項,使其使用當前工作空間
    6. % 設置Simulink從當前工作空間運行
    7. options = simset('SrcWorkspace','current');

    8. % 使用sim()函數(shù)對模型進行仿真
    9. % 第一參數(shù)是模型名稱
    10. % 第二個參數(shù)是向量,指定仿真開始和結束時間
    11. % 如果設置為[],則使用在Simulink中設置的始末時間
    12. % 第三個參數(shù)設置Simulink仿真選項
    13. sim('mass_spring',[],options);

    14. % 繪制圖形% 模型中有一個OUT模塊,使用它我們可以設置輸出變量為tout和yout
    15. % 然后就可以直接調(diào)用Simulink的獲取仿真結果tout和yout進行繪圖了
    16. plot(tout,yout)
    17. xlabel('Time')
    18. ylabel('Displacement')
    19. Title('2nd Order Mass Spring System')
    20. grid on
    復制代碼
    3、保存修改,再運行GUI。在文本框中輸入“質(zhì)量-彈簧-阻尼”系統(tǒng)的三個參數(shù)(注意不要輸入字母、符號或負數(shù)),然后點擊“Simulate!”按鈕,看看我們的勞動成果吧!

    image013.png 


    方法三:

    1、同樣在GUIDE中打開未經(jīng)有修改的simulink_gui.fig文件

    image005.png 

    2、雙擊“Simulate!”按鈕打開屬性查看器,將Callback屬性修改為simulateButton。以后每次點擊“Simulate!”按鈕時,則GUI只響應simlateButton中定義的操作,而不是simulate_pushbutton_Callback

    注意:simulateButton是另外編寫的一個M腳本文件,MATLAB中腳本文件(不同于函數(shù)文件)中的所有變量和數(shù)據(jù)共用基本狀態(tài)空間。

    image007.png 

    3、其實simulateButton.m腳本的代碼如下
    1. % 注意到simulateButton.m文件不是一個M函數(shù)(以function開頭的為M函數(shù)),而是M腳本!
    2. % Matlab腳本將在基本工作空間運行,它涉及到所有的變量和數(shù)據(jù)都保存在基本工作空間!
    3. % 而Simulink所有參數(shù)默認調(diào)用基本工作空間的數(shù)據(jù),所以此時我們就可以直接使用sim()函數(shù)進行模型仿真了!

    4. clear all

    5. % 獲取當前GUI窗體的句柄
    6. h =gcf;
    7. % 獲取GUI的handles結構體,它包含了所有控件的信息
    8. handles = guidata(h);

    9. % 選擇當前坐標系,由于后面的繪圖
    10. axes(handles.axes1);

    11. % 獲取文本框中的Simulink仿真參數(shù)
    12. m=str2num(get(handles.mass_editText,'String')); % 注意獲取的string是一個字符串,需要使用str2num將其轉(zhuǎn)換為數(shù)值
    13. c=str2num(get(handles.damping_editText,'String'));
    14. k=str2num(get(handles.spring_editText,'String'));

    15. % 仿真系統(tǒng)
    16. sim('mass_spring');

    17. % 繪制仿真結果圖形
    18. plot(tout,yout)
    19. xlabel('Time')
    20. ylabel('Displacement')
    21. Title('2nd Order Mass Spring System')
    22. grid on
    復制代碼
    其實方法二的一種變形就是,跨空間計算Simulink模型所需要的參數(shù),比如evalin('base','m=5'),就表示在基本工作空間運行m=5這條命令。

    4、保存下對GUI的修改,驗證下我們的成果吧!

    image013.png 

    圖片附件: image001.gif (2010-3-25 22:42, 5.23 KB) / 下載次數(shù) 6
    http://www./forum.php?mod=attachment&aid=NDQ0NHwyYzg5NTYyY3wxMzA0MDc3ODI0fDkwMDk5



    圖片附件: image003.png (2010-3-25 22:42, 12.78 KB) / 下載次數(shù) 9
    http://image28.360doc.com/DownloadImg/2011/04/2919/11332968_3



    圖片附件: image005.png (2010-3-25 22:42, 15.32 KB) / 下載次數(shù) 5
    http://image28.360doc.com/DownloadImg/2011/04/2919/11332968_4



    圖片附件: image007.png (2010-3-25 22:42, 11.16 KB) / 下載次數(shù) 4
    http://www./forum.php?mod=attachment&aid=NDQ0N3wzZDlkNzA3NHwxMzA0MDc3ODI0fDkwMDk5



    圖片附件: image013.png (2010-3-25 22:42, 12.05 KB) / 下載次數(shù) 2
    http://image28.360doc.com/DownloadImg/2011/04/2919/11332968_5



    附件: simulink-gui.zip (2010-3-25 22:44, 13.04 KB) / 下載次數(shù) 338
    http://www./forum.php?mod=attachment&aid=NDQ0OXw2ZDE0NDQwNHwxMzA0MDc3ODI0fDkwMDk5

    圖片附件: image005.png (2010-3-25 23:09, 15.32 KB) / 下載次數(shù) 6
    http://image28.360doc.com/DownloadImg/2011/04/2919/11332968_6



    圖片附件: image013.png (2010-3-25 23:09, 12.05 KB) / 下載次數(shù) 4
    http://image28.360doc.com/DownloadImg/2011/04/2919/11332968_7

     
     
    assignin('base','m',m);
    assignin('base','c',c);
    assignin('base','k',k);
    sim('massspring');也可以

      本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
      轉(zhuǎn)藏 分享 獻花(0

      0條評論

      發(fā)表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 巨爆乳中文字幕爆乳区| 西西人体大胆444WWW| 亚洲日韩日本中文在线| 又大又爽又硬的曰皮视频| 丰满爆乳在线播放| 国产熟睡乱子伦视频在线播放| 免费无码又爽又刺激高潮虎虎视频| 四虎亚洲精品高清在线观看| 国产日韩精品中文字幕| 丰满少妇内射一区| 亚州中文字幕一区二区| 亚洲乱码日产精品一二三| 久久先锋男人AV资源网站| 亚洲爆乳WWW无码专区| 少妇又色又紧又爽又刺激视频| 亚洲国产成人资源在线| 无码人妻品一区二区三区精99| 日本深夜福利在线观看| 午夜三级A三级三点在线观看| 亚洲av日韩在线资源| 无码人妻精品一区二区三区下载| 视频二区中文字幕在线| 精品一区二区不卡无码AV| 色欲国产精品一区成人精品| 人人妻人人添人人爽欧美一区| 午夜成人性爽爽免费视频| 亚洲国产成人久久综合三区| 成熟丰满熟妇高潮XXXXX| 被黑人伦流澡到高潮HNP动漫| 精品国产免费一区二区三区| 蜜桃无码一区二区三区| 色综合AV综合无码综合网站| 公喝错春药让我高潮| 99国产成人综合久久精品| 国产精品无码专区| 国产网友愉拍精品视频手机| 国产中文成人精品久久久| 二区中文字幕在线观看| 亚洲乱理伦片在线观看中字| 蜜臀av久久国产午夜| 丰满爆乳一区二区三区|