MATLAB | 如何寫一個簡單GUI程序?
title:MATLAB | 如何寫一個簡單GUI程序?
tags:MATLAB;編程;科研
正文:
首先得說明一下,這是個很簡單的MATLAB GUI編程,相當於入門級吧,不過不會講的很繁瑣,因為是基於本專欄主題來講的,所以就是為了科研辦公工作的。
分成以下四個部分來講(可以根據自己的需求選擇跳過):
- 什麼是MATLAB GUI編程?
- MATLAB GUI編程的組成部分。
- 一個簡單GUI程序。
- 如何定義自己專用的GUI程序。
- 分享一堆MATLAB GUI編程教程資料。
1. 什麼是MATLAB GUI編程?
簡單說,GUI代表graphics user interface 一般翻譯為圖形用戶介面或圖形用戶界面。為了實現圖形操作界面的編程都可以叫做GUI編程。比如你寫了個圖形界面操作的計算器,其實這就得用到GUI編程。
所以其實不止MATLAB有GUI編程,很多其他語言也是可以,只要是支持圖形界面都可以。而MATLAB裡面只是提供了比較方便的介面,使得這件事編的很容易。尤其是對廣大並不是很擅長寫程序的理工科學子(相對於程序員來說)。
2. MATLAB GUI編程的組成部分。
這裡我不是想說GUI編程所包含的內容,因為如果那麼講的話,所有包含演算法程序的東西都可以在這裡面說。我只簡單說一下在MATLAB裡面實現一個簡單GUI程序的必須部分。
其實要說就是兩大部分:
第一部分就是圖形件中組成元素的定義,這裡包括你需要的文字、圖形、菜單、控制項等等。
這部分在MATLAB裡面操作十分方便,按照下圖點擊就可以直接創建一個空白的GUI程序:
建完之後如下圖,會發現左邊有很多部件,有時間的朋友可以都用滑鼠點了看看具體的功能,這裡我們待會只會用到幾個小部件就OK了。
每個部件都是可以自由定義編輯的,比如你添加一個可編輯文本部件,然後雙擊進去,就可以編輯文本、字體、顏色等等各種屬性。
第二部分就是腳本中各種函數的操作,以及你自己需要實現的功能的程序。
每個GUI的程序都對應操作它的一個腳本,而在腳本的開頭有一堆函數聲明,或者內置函數之類的,還有一堆注釋。如下圖:
可以理解為每次,MATLAB調用這個GUI程序都是先調用上圖部分的函數,然後上圖裡面的函數再依次調用你自己定義的函數。而上圖程序段裡面的函數定義如下:
到這裡都是不用你自己動手寫的部分,因為這些程序段在你選擇創建空白GUI程序的時候就已經給你建好了。接下來的才是你需要寫的部分。比如我們剛剛創建了一個可編輯文本的部件,那這裡就有關於這個部件的創建函數和回調函數。
這裡包括你在GUI界面裡面自己編輯的那些部件的創建函數,回調函數等。這裡其實可以很複雜,不過我們待會以一個簡單的例子來說明。
3. 一個簡單GUI程序。
接下來我以自己需要用的一個簡單GUI程序為例子來說明如何簡單創建一個MATLAB的GUI程序。
3.1 先要清楚自己的需求,我的目的就是為了做一個簡單的專用計算器,為了算自己實驗經常用的參數。就是輸入幾個量,然後點擊之後自動能得出需要的結果。大概就是如下圖所示:
可以看出來裡面有六個輸入量,然後點擊calculate按鈕之後,可以出來四個輸出量,另外為了方便,還加入了一個清零的按鈕,點擊之後可以將所有的值都清零。
所以基本需求就出來了:一共10個可編輯文本框,2個按鈕,其中點擊1個按鈕,可以實現從6個文本框調用值,然後通過自己定義的算式,計算出來另外4個文本框的輸出值,並且寫入到另外4個文本框里。此外,還有1個按鈕,點擊之後將所有的文本框的值都清零。
3.2 先在GUI定義的fig圖裡將自己需要的部件編輯好,然後點擊保存。
這部分就不細講了,裡面的細節大家可以自己試的。不動的文本,比如就是那寫名稱和單位,直接就是簡單文本就行了,而可編輯文本框,點擊生成之後可以雙擊在每個部件相應的菜單裡面自己定義。比如那個開關比:後面的文本框,雙擊之後的界面如下:
這裡面需要編輯的其實也就那幾個部分。這裡我設置的初始值是點擊Calculate!類型是string,但是後續計算的時候肯定是要轉換的。
3.3 接下來就是回到GUI對應的腳本部分,編寫自定義的函數了。
這裡需要了解幾個概念:回調函數(Callback),獲取輸入函數(get()),設定輸出函數(set())
其實回調函數很好理解, 就是你對這個部件做出了一個動作,然後對你這個動作做出響應的函數,比如對button來說,那就是你每次按這個按鈕,它都會調用並執行這個函數,這點其實跟JavaScript裡面也是一樣的。get()函數和set()函數顧名思義就是獲取和設置當前部件的值,對文本框來說那就是文本框內的文本。
比如我獲取6個文本框的輸入,那就是如下代碼:
相應的經過計算後,設置4個文本框的輸出:
這樣整個都設置完了,就可以運行腳本了,會出來如下fig界面:
最後附上我GUI程序的完整代碼:(由於太長影響閱讀,我直接放.m文件了,獲取方式在文末,關注公眾號yetwanng並回復關鍵字:m文件 ,自動獲取)
4. 如何定義自己專用的GUI程序。
另外還想啰嗦一下如何定義自己專用的GUI程序。
其實,寫一個GUI程序入門是很簡單的,本文涉及的就是一個很簡單的小程序,但是其實GUI可以實現很複雜的功能,想想手機電腦的軟體,其實不就是一個很綜合,很複雜的GUI操作程序嗎?
我們首先要學會分析自己的需求,並且把需求能分解清楚,然後一步步的去實現這些需求。
遇到不懂的,就去查查資料或者google一下,等這些都弄明白了,其實寫代碼就簡單了。
最後就是調試了,有時候會出現一些莫名其妙的錯誤,其實還是一些細枝末節的東西我們沒有搞清楚,比如我這個小程序,我最開始的時候就不知道在計算的時候需要把從文本框的值給進行一下str2double的轉換,就出現錯誤了。
總之,多試試,多搜索,總能解決問題的。
5. MATLAB GUI編程資料分享。
這裡放點福利,就是一些GUI編程的資料。因為直接放鏈接會被和諧,所以放在公眾號了。。。
獲取方式:
關注公眾號:薛定諤不在家(yetwanng)
公眾號後台回復關鍵字:GUI
自動獲取
推薦閱讀: