Matlab如何製作GUI
已經有好長一段時間沒有機會靜下心來寫一篇帖子了,應Stefan之邀,今天打算來聊一聊如何製作GUI。
在使用Matlab的過程中,於我而言,最迷人的一點莫過於GUI的開發,這不同於模擬,不同於圖像處理,或是其他,因為模擬的優化是無止盡的,沒有人敢斷言,老子的模型天下第一,沒有人的模型能比我的仿的更准了。這有點像一道語文閱讀理解,作者寫這句話是什麼用意。相比之下,工具開發更像一道數學題,答案是確定的,要麼能實現功能,要麼就是不能實現功能,而其中唯一的不同是,你是如何解這道題的,你又是如何實現這個功能的。
GUI的製作,只要分為兩個部分,第一部分為界面設計,而第二部分為調用函數的定義。根據界面設計方式的不同,在我看來,製作GUI主要分為兩種方式,一種是界面設計可視化,而另一種屬於純m腳本定義GUI界面。
先來看一下第一種方式,界面設計可視化。
這種方式,在網上比較常見,有興趣的朋友可以上網參考一下,也可以考慮參考下方的連接:
界面設計可視化
其中每一個步驟都有詳細的圖文解釋,可以一步步進行練習。
其中最主要的步驟大致如下:
1. 左鍵拖動快捷按鈕進行工具界面設計
2. 雙擊快捷按鈕,進行快捷按鈕的屬性定義
3. 右鍵選擇Editor,定義該快捷按鈕的調用函數。這步驟就涉及到腳本編程
4. 再就是點擊Run,進行調試
這種方式所製作的GUI,存在兩個文件,一個是.fig的界面文件,而另一個是.m的調用函數文件。
對於另一種方式製作GUI,也就是使用純m腳本,通過一個簡單的例子來說明。
曾經我在開發錄製視頻工具時,碰到一個之前沒有接觸過的問題,就是如果在GUI中通過一個按鈕實現視頻錄製的暫停或是終止,這個具體的需求進行細化之後,就是如何在GUI中通過一個按鈕實現while循環的終止。
於是,我就上網搜了一下,其中有一個帖子十分有意思,評論的朋友也提出了幾種比較獨特的想法。有興趣的朋友,可以查看一下這個帖子:
如何在GUI中通過一個按鈕實現while循環的終止
其中有一個大佬給出了目前最為有效的解法,代碼如下,如有侵權,請告知。
運行之後,整體的界面圖如下
代碼中關於需求的功能實現,具體我就不展開介紹了,我就介紹下,這種GUI製作方式的m腳本構成是怎樣的。
1. 首先,整個是一個function的形式,也就是你們所看到的第1行function及第19行end。
2. 第2、3行的參數定義,是根據功能需求所定義的。這裡不再闡述。
3. 第4行是GUI工具界面窗體的定義,其中兩個屬性分別表示位置信息Position以及設定菜單欄不現實。
4. 第5行是text字元串顯示的定義,也就是效果圖中「0」所顯示的地方。這裡使用了uicontrol函數,這個函數在第6、7行的按鈕定義中也使用了。除此以外還能定義其他類似於edit輸入欄、Listbox列表等插件,可以通過上網搜索了解這個函數的具體使用方法。最全面的介紹,莫過於Matlab的help文檔,可以查看下方鏈接
Matlab - Help - uicontrol
5.第9至15行定義了一個調用函數,所對應的,正是圖中start按鈕的功能。這個函數的調用,是在第6行的末尾@call1進行關聯的。
通過一個簡單的小例子,大致介紹了純m腳本製作GUI工具的流程。而這才是GUI工具製作的開始,最有意思的,莫過於通過Matlab實現自己的想法。
既然學會如何開始製作GUI了,那我就分享幾篇我先前所寫的比較有意思的幾個工具,有興趣的朋友不妨去復現一下,我敢保證,你一定會有收穫的。
1. 【一個被斃掉的作品】如何評估一隻股票的買點
2. Matlab如何實現截屏與屏幕錄製
3. Matlab如何大規模修改Simulink模型
4. Matlab如何從曲線圖中提取原始數據
5. Matlab如何動態呈現計算結果
以上
如果你有興趣,歡迎關注我的微信公眾號「打浦橋程序員」,謝謝
推薦閱讀:
※還有沒有類似傅里葉變換那麼有用的正交變換?
※APPs(004)Matlab出圖真的丑嗎?(b)
※matlab中能夠產生4個任意不同數字的命令或者說代碼是什麼。我是初學者,自學,網上也查不到,希望大家幫幫忙?
※The Trinity: MATLAB Mobile, MATLAB Online, and MATLAB Drive
TAG:MATLAB |