Matlab操作之GUI(二)

2021-02-21 維偉工程師

       在介紹完成界面後,大家對各個控制項有了一個大概的認識,如何往深處學習,當然是結合實際例子來進行練習咯。

       首先新建一個GUI界面,保存,命名為GUI01,可以發現會生成一個fig文件和m文件,其中這兩個文件的名字都會是GUI01,當Matlab定位在包含這兩個文件的文件夾路徑下時,拖動其中的任何一個文件到Command Window中都會運行完成的界面圖形,如果需要更改完善,右鍵fig文件,打開方式為GUIDE,就可在原來的基礎上進行修改

       上回講了一下界面的基本組成,那麼這次就要介紹一下相應的m文件中包含的一些常用內容,在不添加任何控制項的情況下,會有三個以GUI01為頭的函數,分別對應GUI窗口界面,GUI打開時預處理函數,GUI界面的輸出,一般這三個默認函數不要自行改動,最多就是在OpeningFcn函數中進行數據的預置。

       學過C語言的知道,通過類比,matlab中函數會包含形參(handles,eventdata等等)、使用函數包含數據的傳輸(setappdata,getappdata這些函數會在後講到),在這三個函數中,當然也包含了形參,如下所示

       GUI界面的好處是,在生成任何一個回調函數時,都會生成一個注釋及該回調函數可能用到的形參,非常方便,而GUI界面開發主要用到的函數有set,get,setappdata,getappdata,傳送參數有handles,eventdata後續使用中會發現其用的非常非常多

       那麼,作為控制項的介紹,用實例說話才算,現在來進行Push Button、Edit Text、Static Text控制項的介紹

1.首先,往開發界面中拖入一個StaticText,雙擊該控制項,調出其屬性菜單,修改其FontSize屬性值為14、ForegroundColor屬性值選為紅色、String屬性值設置為請輸入相加的兩個數:

       在界面上,我們的提示也就出現了

2.再拖入兩個Edit Text(右擊控制項拖動為複製控制項),三個Static Text,一個PushButton按鈕,調整一下畫幅大小(GUI主界面的右下角黑點)如圖所示

3.設置(按照從左到右,從上往往下的順序設置)

       設置第一個Edit Text的Tag屬性值為sum1,String屬性值清空(回車為確認修改)

       設置第一個Static Text的String屬性值為+,FontSize的屬性值為14

       設置第二個Edit Text的Tag屬性值為sum2,String屬性值清空

       設置第二個Static Text的String屬性值為=,FontSize的屬性值為14

       設置第三個Static Text的String屬性值為空,Tag的屬性值為sum_value

       利用對齊工具對上述組件進行垂直對齊,選中這五個組件,選擇垂直居中並應用

4.設置按鈕的屬性設置其FontSize的屬性值為14,String的屬性值為計算,Tag的屬性值為Add

到此,界面設計完畢

5.回調函數的編寫,右擊按鈕--->viewCallbacks--->Callback

       會將編輯器打開,而且,其函數的開頭是以按鈕的Tag(Add)開頭,其參數有hObject,eventdata,handles,在這個案例中,我們使用handles就可以

在函數下面寫入以下代碼:

sum_value1=str2num(get(handles.sum1,'String'));

sum_value2=str2num(get(handles.sum2,'String'));

sum=sum_value1+sum_value2;

set(handles.sum_value,'String',num2str(sum));

代碼講解:

       用get函數分別獲得輸入框中的文本內容,其中,對象由handles.Tag來唯一對應,sum1就是第一個編輯框的Tag,String為其輸入框的一個屬性,正好對應文本,但是,數學的運算只能是數字計算,所以出現str2num這個函數,不用的話計算結果會出錯,是將字符串變成數字。對兩個數值進行相加後,同理,num2str將數字轉變成字符串,利用set函數送到第三個Static Text中,其Tag為sum_value。

       運行(F5或點腳本運行按鈕)以後在第一個框中輸入數字,第二個框中輸入數字,點擊計算,會出現以下結果:其界面的名字與fig及m文件的名字一致

       到此,腳本的組成,回調函數的添加,按鈕控制項Push Button與文本控制項Edit Text及Static Text的應用就介紹完成

https://pan.baidu.com/s/11kfyXiRV8oqGq3nwKKUgSg 

      在朋友圈中有人留言製作Stateflow的教程,這個確實挺難,只能提供當時我用來學習的書本給大家,在這裡要感謝一下我的沈姓博士師兄,提供這本書的資料,這本書是張威編著的,用以學習Stateflow很好,在這借花獻佛

《Sateflow邏輯系統建模》下載連結:

https://pan.baidu.com/s/1e-7TFM2UtxZTpm7oM-FTTg 

提取密碼:cj2k

往期回顧:

相關焦點

  • 「資料分享」41款GUI實例助你隨心所欲玩轉matlab GUI開發
    matlab愛好者今天給大家帶來由Matt Fig收集整理開發的GUI界面編程實例以及相關GUI編程問題錦集,資料包含41個GUI開發實例以及47個GUI開發問題,所有實例均在非詳見實例:GUI_4、24、37 5 如何讓GUI用戶知道他的操作是徒勞的(或沒有結果)?
  • MATLAB用GUI計算十進位轉換為二、八、十六進位
    1)dec2bin(A):此函數將十進位數或矩陣轉換為它的二進位形式的字符串。A本身或A的元素(A是矩陣時)都必須小於2的52次方的非負整數(2)dec2bin(A,n):此函數將A轉換成n個字符組成的字符串表示的A的n位二進位數。如果實際轉換成的二進位數的位數小於n,則其餘位上為0,如果實際轉換成的二進位數的位數大於n,則忽略此限制。
  • Matlab操作之GUI(一)
    (01)文件操作      新建文件,打開文件,偏好設置等 (02)編輯       複製剪切,撤銷等操作,與其他常用的快捷鍵一樣(06)幫助界面       能夠很好地幫助學習GUI的設計(07)新建GUI(08)打開GUI界面(.fig)(09)保存當前GUI(10)對控制項進行剪切操作
  • 數據處理:Matlab之向量和數組的基本操作
    一文中,我們對matlab做了簡要介紹。本文來說說matlab 中使用數據的常用形式——向量,也就是一維數組。二維數組就是矩陣了,我們下次再寫。向量 (vector)matlab中的向量分為行向量和列向量兩種。行向量的數據之間用逗號或者空格隔開;列向量的數據之間用分號隔開。
  • PyAutoGUI:自動化鍵鼠操作的Python類庫
    隨便挑了一張看起來比較高端的圖片有些朋友可能玩過按鍵精靈,一個用來操作鍵盤滑鼠完成一些自動化工作的軟體。其實如果你學了Python的話,完全用不著按鍵精靈這種東西了。因為廣泛的Python類庫裡,就有PyAutoGUI這樣可以變成控制鍵盤滑鼠的類庫,有了它,就可以用Python隨心所欲的操作電腦了。
  • Matlab | 點雲基本操作(一)
    Matlab是常用的數學工具,相比較於其他語言的特點是比較方便,集成有穩定的數學工具箱,我們所用到的點雲基本操作在matlab的CV工具箱裡
  • 如何用Matlab連接控制Arduino:GUI界面製作與電機控制
    Matlab與Arduino聯合應用——GUI界面  首先介紹如何安裝配置一個基於Matlab的GUI界面,能夠實現對ArduinoIO口的操作。  下圖所示為matlab中Arduino相關程序的下載界面
  • matlab vs R
    matlab 暫時還沒有很明確的函數可以與之對應。同時 R 的 cbind() 列合併暫時沒有可以與之直接對應的語句。運算操作運算操作matlabR加減乘除.+, .-, .*, .需要注意的是轉置操作、整除、餘除有所不同,另外關於矩陣的乘法也有所區別。特別需要注意的是 R 是針對向量進行四則運算,它等同於 matlab 裡的點運算。接下來,將分類別比較各類計算相關的函數。
  • [優化] 《MATLAB高效編程技巧與應用:25個案例分析》源程序+數據
    本書首先針對matlab新版本特有的一些編程思想、高效的編程方法、新技術進行了較為詳細的討論,在此基礎上,以大量案例介紹了matlab在科學計算中的應用。第1章 matlab快速入門   1.1 熟悉matlab環境    1.1.1 matlab的啟動    1.1.2 matlab desktop   1.1.3 matlab 程序編輯器(editor)   1.2 matlab牛刀小試    1.2.1 hello,matlab   1.2.2 萬能計算器用法
  • MATLAB的Cell數組操作
    5.3  Cell數組的基本操作本小節結合示例對元胞數組的一些基本操作進行介紹。【例3-26】  元胞數組的合併。
  • MATLAB中,你必須知道的!(二)
    二·複數運算 *1·基本運算操作 複數表達式構造利用i,j直接寫,也可以額利用符號函數來構造。也可以寫成極坐標的形式。 polar(theta,rho)畫出極坐標圖,其中theta為極坐標極角,rho為極坐標失徑。
  • 招收學徒—如何製作matlab的GUI界面?
    親愛的學弟學妹,如果你對matlab之GUI感興趣,可QQ:609553134聯繫我,我很樂意教會您如何製作輸入自己的圖形用戶界面,有償遠程教會您一個簡單課題的製作,讓您融會貫通,舉一反三。
  • Matlab畫圖技巧: 不需要敲代碼的傻瓜式操作流程
    Matlab已經成為畫曲線圖最好用的語言之一了, 但是許多人並沒有發現他的最好用之處——相比於大部分語言,需要記住一堆API函數才能繪製出想要的曲線, matlab提供了可視化的界面進行傻瓜式的畫圖操作, 實現指哪打哪的功能而不需要任何代碼。可以這麼說, 如果其他語言是Photoshop, matlab就可以當做美圖秀秀。這裡就介紹一下matlab通過可視化界面來畫圖的操作。
  • MATLAB筆記01:基礎操作與矩陣輸入
    收錄於話題 #matlabcos(8) % 調用內置餘弦函數運算得到-0.1455cos='This string.
  • matlab流程控制(二)
    感謝大家關注matlab愛好者公眾號,今天給大家介紹matlab流程控制語句第二部分。
  • Matlab協調ROS程序: matlab 2015b + ros indigo
    軟體請自行網上搜索(windows/mac/unix都有)           安裝參考 ubuntu14.04 matlab2015 64bits二. 簡單使用說明    起始你按照matlab的指導一步步來就OK了。現就簡單提提自己對理解上變化大點的談下自己的感受。 1.
  • 深入淺出MATLAB數據處理之文件讀寫
    但是最基本的文件操作,讀取數據的函數使用方法沒有給大家講,只是一個沒有思想的代碼操作工,今天和大家剖析一下最常見的fopen、fread函數使用方法,先來看看fileID = fopen(filename,permission,machinefmt,encodingIn)該函數的作用是打開一個文件,我們重點需要看的是參數設置,對我們後續操作的影響
  • 編程小技巧之matlab python畫二項分布的動態圖
    >在數據處理中,matlab和Python是常用的工具,在量化模型中,概率論是一項很重要的基礎,而中心極限定理在概率論中又是一個很重要的理論。對於二項分布而言,當n→∞時,Snmatlab動態圖:python動態圖:
  • 提高matlab代碼運行速度的一點心得(之三)
    但是,在matlab中,同樣的算法、同樣的結構、同樣的流程,如果採用的語句不一樣,在效率上就會大大不同。所以,我認為,使用matlab比使用其他語言更加困難,也顯得matlab更難以掌握。3.不斷優化代碼,例如corrcoef函數,matlab自帶的corrcoef函數求整個矩陣所有列的相關係數,因為我只需要求出某一列跟其他各列的相關係數,所以參照corrcoef函數自己寫了一個,不但把速度提了上去,而且還發現了:repmat(5,100,1)的速度並不比ones(100,1)*5快,另外,別小看一個小矩陣的轉置操作,當循環次數很大的時候,有沒有轉置就相差很遠了。
  • matlab和c語言的區別
    二、C語言簡介C語言是一門通用計算機程式語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的程式語言。C語言對編寫需要進行硬體操作的場合,優於其它高級語言。4、使用指針:可以直接進行靠近硬體的操作,但是C的指針操作不做保護,也給它帶來了很多不安全的因素。C++在這方面做了改進,在保留了指針操作的同時又增強了安全性,受到了一些用戶的支持,但是,由於這些改進增加語言的複雜度,也為另一部分所詬病。