創建空白的GUI
在MATLAB命令行中輸入guide
新建GUI,選擇Blank GUI (Default),點擊確定后就生成了一個空白的GUI制作界面,如下圖所示
圖1
制作GUI的具體過程
簡單加法器
將可編輯文本拖入界面中
雙擊可編輯文本,在String欄中可以修改相應的文字,Tag欄是相當於給每個文本的一個標記,在后面的輸入輸出環節作用非常大。
將靜態文本拖入界面中,雙擊它,同樣可以在String欄中修改文本內容;同理,將按鈕拖入界面中,修改其String為運行,它的作用相當於運行程序的開關。
點擊菜單欄中的對齊對象,選中界面中的相應組件,調整布局得到如下結果
圖2
前兩個可編輯文本為輸入,后一個為輸出,選中運行,單擊鼠標右鍵,選擇查看回調里的Callback,在 pushbuttonX_Callback函數下編寫如下語句(這里X表示你具體在運行的Tag中設置的是多少)
global a1;
global a2;
global a3;
a1 = str2double(get(handles.edit1,'String'));
a2 = str2double(get(handles.edit2,'String'));
a3 = a1 + a2;
set(handles.edit3,'String',a3);
1
2
3
4
5
6
7
在GUI界面中點擊菜單欄的運行圖形,在前兩個可編輯文本中輸入數據,點擊運行,得到結果如下
圖3
PS:
1、其實GUI制作並不復雜,理論上你編寫的任何m程序都可以打包成一個GUI,只需要你解決輸入參數以及結果輸出的問題。
2、在編寫程序時,發現在某個函數A下定義一個全局變量s,想在另一個函數B下使用它,必須在函數B下重新s為全局變量(下文將會繼續提到)。
導入EXCEl數據
MATLAB是一款處理數據的利器,在實際過程中,可能需要向GUI中導入數據,下面將詳細介紹:
需要導入的數據如圖:
圖4
將按鈕拖入界面中,修改String為導入數據,選中它,單擊鼠標右鍵→查看回調→Callback,在pushbuttonX_Callback函數中編寫如下語句。
global sj;
[fname_od,pname_od] = uigetfile('.xlsx','請選擇您想導入的數據’);
if fname_od == 0
return
end
str = fullfile(pname_od,fname_od);
[num,txt,sj] = xlsread(str);
%下面語句的作用是刪除數據第一行
sj(1,:) = [];
sj = cell2mat(sj);
%導入進來的是一個元胞數組,需要轉換成矩陣
1
2
3
4
5
6
7
8
9
10
11
上述代碼中,可以根據自己的實際需求做出相應修改,如文件格式為xls,則在uigetfile中可將xlsx改為xls
GUI中顯示上述數據
在GUI界面中拖入表,此時它的Tag應該是uitable1,選中它,單擊鼠標右鍵→查看回調→CreateFcn
在uitableX_CreateFcn函數輸入如下程序:
DATA = {0,0,0,0,0,0}
%表格的初始值
set(hObject,'ColumnName',{'語文','數學','英語','物理’,'化學’,'生物'},'data',DATA,...
'ColumnEditable',true);
%設置表格的欄目名
1
2
3
4
5
在GUI界面中,點擊菜單欄中的運行圖形,調整布局后,得到如圖結果:
圖5
選中運行按鈕,點擊鼠標右鍵→查看回調→Callback,繼續在pushbuttonX_Callback函數下編寫如下語句
global sj;
%此處就是上文中提到的再一次定義全局變量
set(handles.uitable1,'data',sj);
1
2
3
在GUI界面中,點擊運行圖形,在可編輯文本中輸入數據,單擊導入數據按鈕,彈出的界面如圖
圖6
選擇上述數據的EXCEL文件,再點擊運行按鈕,可以得到如下結果
圖7
上面的步驟雖然只是講述了如何將數據導入GUI,並通過GUI將原數據導出,但是通過上述方法,你可以對導入的數據進行相關處理后,根據實際的需要將結果輸出。
彈出式菜單的簡要介紹
下拉菜單是GUI中常見的組件,下面對其使用方法進行相關介紹
將彈出式菜單拖入GUI界面,雙擊它,在String欄中點擊小正方形,在里面輸入你需要的內容,如圖
圖8
選中彈出式菜單→查看回調→Callback,在popupmenuX_Callback函數中輸入如下代碼
global a4;
val = get(handles.popupmenu1,'value');
switch val
case 1
a4 = 0;
case 2
a4 = 5;
case 3
a4 = 9;
case 4
a4 = 15;
end
1
2
3
4
5
6
7
8
9
10
11
12
選中運行→查看回調→Callback,在 pushbuttonX_Callback函數下編寫如下語句
global a1;
global a2;
global a3;
global a4;
a1 = str2double(get(handles.edit1,'String'));
a2 = str2double(get(handles.edit2,'String'));
a3 = a1 + a2 + a4;
set(handles.edit3,'String',a3);
global sj;
set(handles.uitable1,'data',sj);
1
2
3
4
5
6
7
8
9
10
11
12
在GUI菜單欄中點擊運行圖形,在下拉菜單中選擇你所要的數據
在文本中輸入數據,並按照上述過程導入你想要處理的數據,點擊運行按鈕,得到如下結果
圖9
結束語
上述內容是自己在做項目的時候,查閱相關資料所總結出來的一些經驗。由於能力有限,上述內容難免會有疏漏和錯誤,歡迎各位大佬批評指正。
---------------------