標籤:

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 |