matlab交互式程序设计示例:GUI界面编程1
2015-01-29 09:23
489 查看
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及 数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。
MATLAB guide工具箱
1
我们要进行的程序是彩色图像处理试验示例,用这个程序来练习我们的gui前台设计。
程序功能介绍:具有彩色图像处理及保存和音乐播放功能效果如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=677c1d8d2ff5e0feee1889016c6134e5/6609c93d70cf3bc7085edf78d300baa1cc112ac3.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=5449e1f8123853438ccf8721a312b01f/8435e5dde71190ef17a5804bcc1b9d16fcfa60c3.jpg)
2
在MATLAB的命令窗口中输入guide命令,打开guidequick start窗口,选择create new gui 点ok 生成新的fig文件如下图:
![](http://c.hiphotos.baidu.com/exp/w=500/sign=75590800442309f7e76fad12420f0c39/11385343fbf2b211a90098dac88065380cd78e73.jpg)
![](http://c.hiphotos.baidu.com/exp/w=500/sign=33b3e031d343ad4ba62e46c0b2035a89/8ad4b31c8701a18b6d560fdb9c2f07082938fee1.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=d5461e752d2eb938ec6d7af2e56385fe/d058ccbf6c81800a9879949ab33533fa838b4781.jpg)
3
右点窗口 ,打开属性设置修改figur窗口名字,点name项就可以改 我们改为xiaobotest.fig,而后我们在窗口中拖进来,和几个按纽用于交互程序的事件触发,做成前台如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=1b11ae30a6c27d1ea5263bc42bd4adaf/f636afc379310a557c37c260b54543a982261016.jpg)
![](http://h.hiphotos.baidu.com/exp/w=500/sign=2dad8cbaaad3fd1f3609a23a004f25ce/50da81cb39dbb6fdfd40fab20b24ab18972b370e.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1863fd9b8594a4c20a23e72b3ef51bac/79f0f736afc37931c4be9abde9c4b74542a9114b.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=42570b9bba0e7bec23da03e11f2fb9fa/9358d109b3de9c82aa0ee61b6e81800a19d8433e.jpg)
4
前台部分 接下来我们还要进行窗口菜单的制作,点tools选择menu editor
![](http://d.hiphotos.baidu.com/exp/w=500/sign=dd2c3171af6eddc426e7b4fb09dab6a2/eac4b74543a982261c2434b38882b9014b90ebb9.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=ab27b386700e0cf3a0f74efb3a47f23d/9213b07eca80653837a2ba8795dda144ac3482dd.jpg)
接上面的操作出现一个窗口 点new menu ,选中这个项 接着再点new menu就可以为它加目录项了 ,选中untiled1 可以看到它的属性 可以修改了label 是用于显示文字说明用的 tag相当于句柄一样用于操作的 下面我们改打开表项的 tag 值为open 如下图
![](http://c.hiphotos.baidu.com/exp/w=500/sign=2da1e5bf9f16fdfad86cc6ee848e8cea/4034970a304e251f1f84fa6ca586c9177f3e5336.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=3b5221e2f01fbe091c5ec3145b610c30/902397dda144ad34191b9913d2a20cf430ad85f9.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=4b42dba7938fa0ec7fc7640d1696594a/359b033b5bb5c9ea3c5c1a77d739b6003bf3b3f2.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=f041aabc347adab43dd01b43bbd5b36b/58ee3d6d55fbb2fb4b4e41864d4a20a44623dc38.jpg)
![](http://e.hiphotos.baidu.com/exp/w=500/sign=de25fc060ef431adbcd243397b37ac0f/2cf5e0fe9925bc3130f2180c5cdf8db1ca1370f2.jpg)
经过上面的几步操作 就完成菜单制作,功能上就具有 打开文件 保存 音乐播放 停止等如下图
![](http://f.hiphotos.baidu.com/exp/w=500/sign=206bfd6ca586c91708035239f93c70c6/962bd40735fae6cdce28b2f50db30f2443a70f81.jpg)
下面进行各各菜单项的事件操作,点view就可以打开callback函数
function openfile_Callback(hObject, eventdata, handles)这个就是打开操作对应的函数 我们加入如下代码
![](http://f.hiphotos.baidu.com/exp/w=500/sign=4acbf8a337fae6cd0cb4ab613fb20f9e/3812b31bb051f8195bf81aded8b44aed2f73e741.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=04ef6979a344ad342ebf8787e0a30c08/b58f8c5494eef01fafe5d351e2fe9925bd317db5.jpg)
后的各各操作如同上面一样 加入一下代码 分别为保存rgb操作图片和hsi操作图片
function savergb_Callback(hObject, eventdata, handles)
function savehsi_Callback(hObject, eventdata, handles)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1cda557df0d3572c66e29cdcba126352/1b4c510fd9f9d72a76521289d62a2834349bbb6b.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=9499b534f403738dde4a0c22831ab073/622762d0f703918f8d74f75e533d269758eec4f9.jpg)
对于按纽操作,例如 rgb直方图操作 我们把放到rgb直方图上点右键如下图代码如下
function pushbuttonrgb_Callback(hObject, eventdata, handles)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=bc14c1a7718da9774e2f862b8050f872/63d0f703918fa0ecfe7e6699249759ee3c6ddbed.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=44d550f5f1deb48ffb69a1dec01e3aef/241f95cad1c8a7867038809a6509c93d70cf5010.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=2c9dcf78d300baa1ba2c47bb7711b9b1/d833c895d143ad4b62b3445480025aafa50f0680.jpg)
技术细节说明:
其中实现菜单可选不可选用的是
set(handles.savefile,'Enable','off');
set(handles.savergb,'Enable','off');
set(handles.savehsi,'Enable','off');
set(handles.saveph,'Enable','off');
set(handles.savejr,'Enable','off');
其中savefile是保存菜单的tag值,比如我们操作了直方图就可以在显示后执行如下代码
set(handles.savefile,'Enable','on');
set(handles.savergb,'Enable','on');
这样就可以实现菜单的冗余操作了
全部操作后的效果如下图:
![](http://f.hiphotos.baidu.com/exp/w=500/sign=7c630ac957fbb2fb342b58127f4b2043/b7003af33a87e95010a7f1f812385343faf2b4f5.jpg)
特别说明:在菜单选项中加入音乐播放功能
打开制作好的音乐功能菜单的并修改callback函数
function start_Callback(hObject, eventdata, handles)
% hObject handle to start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[y,Fs,bits] = wavread('dl.wav'); %获取音乐数据
ao = analogoutput('winsound'); %建立硬件对象
addchannel(ao,[1 2]); %创建声音输出通道
set(ao,'SampleRate',Fs) %设置采样率
data1 =y(:,1); %双声道
data2 =y(:,2);
putdata(ao,[data1 data2]); %往声卡堆音乐数据
%输出音乐数据
setappdata(handles.figure1,'ao',ao);
start(ao);
% --------------------------------------------------------------------
function pause_Callback(hObject, eventdata, handles)
% hObject handle to pause (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
ao=getappdata(handles.figure1,'ao');
stop(ao);
运行的界面如下图:可以选择停止播放,或者在音乐放完后可以再点播放接着听音乐,放松工作时间啊
菜单项目的功能有打开,和保存两个打开是打开图片,保存是保存你处理的各种图像,没有打开图像前保存菜单是不可选的,这四种处理没有相应的处理时也是不可选的如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=d851378040a7d933bfa8e4739d4ad194/dbb44aed2e738bd464febfa5a38b87d6267ff943.jpg)
![](http://e.hiphotos.baidu.com/exp/w=500/sign=b8bd677b8fb1cb133e693c13ed5556da/bba1cd11728b47103507f158c1cec3fdfc03237d.jpg)
点RGB直方图均衡button可以看到显示到了相应位置上,此时保存菜单里的保存RGB直方图均衡图像可以选择
![](http://g.hiphotos.baidu.com/exp/w=500/sign=48b437170d2442a7ae0efda5e142ad95/377adab44aed2e735d318bb88501a18b86d6fa4e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=3940cbbbbc096b6381195e503c328733/96dda144ad34598281b1e9060ef431adcbef846e.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=46ceeca337fae6cd0cb4ab613fb20f9e/3812b31bb051f81957fd0eded8b44aed2f73e74e.jpg)
程序完整的运行效果如下图,保存hsi直方图到桌面操作
![](http://e.hiphotos.baidu.com/exp/w=500/sign=858e859ab33533faf5b6932e98d2fdca/0ff41bd5ad6eddc4cd8cb86f3bdbb6fd5266333e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=0a1594efd31373f0f53f6f9f940e4b8b/8601a18b87d6277f45793eac2a381f30e924fc3f.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=bc1f1451e2fe9925cb0c695004a95ee4/c83d70cf3bc79f3d7eeae8a4b8a1cd11728b291e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=d7560d0c5cdf8db1bc2e7c643922dddb/d000baa1cd11728bcc2680b6cafcc3cec3fd2c1e.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=b0b8355033adcbef01347e069cae2e0e/e1fe9925bc315c6054b2677b8fb1cb134954777a.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1daff04e17ce36d3a20483300af23a24/b90e7bec54e736d16934809c99504fc2d562697a.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=8b3f52c7f4246b607b0eb274dbf91a35/ac345982b2b7d0a239c20809c9ef76094b369a1e.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=68beed9b8594a4c20a23e72b3ef51bac/79f0f736afc37931b4638abde9c4b74543a9111e.jpg)
图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。
工具/原料
MATLAB guide工具箱
方法/步骤
1我们要进行的程序是彩色图像处理试验示例,用这个程序来练习我们的gui前台设计。
程序功能介绍:具有彩色图像处理及保存和音乐播放功能效果如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=677c1d8d2ff5e0feee1889016c6134e5/6609c93d70cf3bc7085edf78d300baa1cc112ac3.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=5449e1f8123853438ccf8721a312b01f/8435e5dde71190ef17a5804bcc1b9d16fcfa60c3.jpg)
2
在MATLAB的命令窗口中输入guide命令,打开guidequick start窗口,选择create new gui 点ok 生成新的fig文件如下图:
![](http://c.hiphotos.baidu.com/exp/w=500/sign=75590800442309f7e76fad12420f0c39/11385343fbf2b211a90098dac88065380cd78e73.jpg)
![](http://c.hiphotos.baidu.com/exp/w=500/sign=33b3e031d343ad4ba62e46c0b2035a89/8ad4b31c8701a18b6d560fdb9c2f07082938fee1.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=d5461e752d2eb938ec6d7af2e56385fe/d058ccbf6c81800a9879949ab33533fa838b4781.jpg)
3
右点窗口 ,打开属性设置修改figur窗口名字,点name项就可以改 我们改为xiaobotest.fig,而后我们在窗口中拖进来,和几个按纽用于交互程序的事件触发,做成前台如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=1b11ae30a6c27d1ea5263bc42bd4adaf/f636afc379310a557c37c260b54543a982261016.jpg)
![](http://h.hiphotos.baidu.com/exp/w=500/sign=2dad8cbaaad3fd1f3609a23a004f25ce/50da81cb39dbb6fdfd40fab20b24ab18972b370e.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1863fd9b8594a4c20a23e72b3ef51bac/79f0f736afc37931c4be9abde9c4b74542a9114b.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=42570b9bba0e7bec23da03e11f2fb9fa/9358d109b3de9c82aa0ee61b6e81800a19d8433e.jpg)
4
前台部分 接下来我们还要进行窗口菜单的制作,点tools选择menu editor
![](http://d.hiphotos.baidu.com/exp/w=500/sign=dd2c3171af6eddc426e7b4fb09dab6a2/eac4b74543a982261c2434b38882b9014b90ebb9.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=ab27b386700e0cf3a0f74efb3a47f23d/9213b07eca80653837a2ba8795dda144ac3482dd.jpg)
接上面的操作出现一个窗口 点new menu ,选中这个项 接着再点new menu就可以为它加目录项了 ,选中untiled1 可以看到它的属性 可以修改了label 是用于显示文字说明用的 tag相当于句柄一样用于操作的 下面我们改打开表项的 tag 值为open 如下图
![](http://c.hiphotos.baidu.com/exp/w=500/sign=2da1e5bf9f16fdfad86cc6ee848e8cea/4034970a304e251f1f84fa6ca586c9177f3e5336.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=3b5221e2f01fbe091c5ec3145b610c30/902397dda144ad34191b9913d2a20cf430ad85f9.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=4b42dba7938fa0ec7fc7640d1696594a/359b033b5bb5c9ea3c5c1a77d739b6003bf3b3f2.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=f041aabc347adab43dd01b43bbd5b36b/58ee3d6d55fbb2fb4b4e41864d4a20a44623dc38.jpg)
![](http://e.hiphotos.baidu.com/exp/w=500/sign=de25fc060ef431adbcd243397b37ac0f/2cf5e0fe9925bc3130f2180c5cdf8db1ca1370f2.jpg)
经过上面的几步操作 就完成菜单制作,功能上就具有 打开文件 保存 音乐播放 停止等如下图
![](http://f.hiphotos.baidu.com/exp/w=500/sign=206bfd6ca586c91708035239f93c70c6/962bd40735fae6cdce28b2f50db30f2443a70f81.jpg)
下面进行各各菜单项的事件操作,点view就可以打开callback函数
function openfile_Callback(hObject, eventdata, handles)这个就是打开操作对应的函数 我们加入如下代码
![](http://f.hiphotos.baidu.com/exp/w=500/sign=4acbf8a337fae6cd0cb4ab613fb20f9e/3812b31bb051f8195bf81aded8b44aed2f73e741.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=04ef6979a344ad342ebf8787e0a30c08/b58f8c5494eef01fafe5d351e2fe9925bd317db5.jpg)
后的各各操作如同上面一样 加入一下代码 分别为保存rgb操作图片和hsi操作图片
function savergb_Callback(hObject, eventdata, handles)
function savehsi_Callback(hObject, eventdata, handles)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1cda557df0d3572c66e29cdcba126352/1b4c510fd9f9d72a76521289d62a2834349bbb6b.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=9499b534f403738dde4a0c22831ab073/622762d0f703918f8d74f75e533d269758eec4f9.jpg)
对于按纽操作,例如 rgb直方图操作 我们把放到rgb直方图上点右键如下图代码如下
function pushbuttonrgb_Callback(hObject, eventdata, handles)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=bc14c1a7718da9774e2f862b8050f872/63d0f703918fa0ecfe7e6699249759ee3c6ddbed.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=44d550f5f1deb48ffb69a1dec01e3aef/241f95cad1c8a7867038809a6509c93d70cf5010.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=2c9dcf78d300baa1ba2c47bb7711b9b1/d833c895d143ad4b62b3445480025aafa50f0680.jpg)
技术细节说明:
其中实现菜单可选不可选用的是
set(handles.savefile,'Enable','off');
set(handles.savergb,'Enable','off');
set(handles.savehsi,'Enable','off');
set(handles.saveph,'Enable','off');
set(handles.savejr,'Enable','off');
其中savefile是保存菜单的tag值,比如我们操作了直方图就可以在显示后执行如下代码
set(handles.savefile,'Enable','on');
set(handles.savergb,'Enable','on');
这样就可以实现菜单的冗余操作了
全部操作后的效果如下图:
![](http://f.hiphotos.baidu.com/exp/w=500/sign=7c630ac957fbb2fb342b58127f4b2043/b7003af33a87e95010a7f1f812385343faf2b4f5.jpg)
特别说明:在菜单选项中加入音乐播放功能
打开制作好的音乐功能菜单的并修改callback函数
function start_Callback(hObject, eventdata, handles)
% hObject handle to start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[y,Fs,bits] = wavread('dl.wav'); %获取音乐数据
ao = analogoutput('winsound'); %建立硬件对象
addchannel(ao,[1 2]); %创建声音输出通道
set(ao,'SampleRate',Fs) %设置采样率
data1 =y(:,1); %双声道
data2 =y(:,2);
putdata(ao,[data1 data2]); %往声卡堆音乐数据
%输出音乐数据
setappdata(handles.figure1,'ao',ao);
start(ao);
% --------------------------------------------------------------------
function pause_Callback(hObject, eventdata, handles)
% hObject handle to pause (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
ao=getappdata(handles.figure1,'ao');
stop(ao);
运行的界面如下图:可以选择停止播放,或者在音乐放完后可以再点播放接着听音乐,放松工作时间啊
菜单项目的功能有打开,和保存两个打开是打开图片,保存是保存你处理的各种图像,没有打开图像前保存菜单是不可选的,这四种处理没有相应的处理时也是不可选的如下图
![](http://h.hiphotos.baidu.com/exp/w=500/sign=d851378040a7d933bfa8e4739d4ad194/dbb44aed2e738bd464febfa5a38b87d6267ff943.jpg)
![](http://e.hiphotos.baidu.com/exp/w=500/sign=b8bd677b8fb1cb133e693c13ed5556da/bba1cd11728b47103507f158c1cec3fdfc03237d.jpg)
点RGB直方图均衡button可以看到显示到了相应位置上,此时保存菜单里的保存RGB直方图均衡图像可以选择
![](http://g.hiphotos.baidu.com/exp/w=500/sign=48b437170d2442a7ae0efda5e142ad95/377adab44aed2e735d318bb88501a18b86d6fa4e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=3940cbbbbc096b6381195e503c328733/96dda144ad34598281b1e9060ef431adcbef846e.jpg)
![](http://b.hiphotos.baidu.com/exp/w=500/sign=46ceeca337fae6cd0cb4ab613fb20f9e/3812b31bb051f81957fd0eded8b44aed2f73e74e.jpg)
程序完整的运行效果如下图,保存hsi直方图到桌面操作
![](http://e.hiphotos.baidu.com/exp/w=500/sign=858e859ab33533faf5b6932e98d2fdca/0ff41bd5ad6eddc4cd8cb86f3bdbb6fd5266333e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=0a1594efd31373f0f53f6f9f940e4b8b/8601a18b87d6277f45793eac2a381f30e924fc3f.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=bc1f1451e2fe9925cb0c695004a95ee4/c83d70cf3bc79f3d7eeae8a4b8a1cd11728b291e.jpg)
![](http://d.hiphotos.baidu.com/exp/w=500/sign=d7560d0c5cdf8db1bc2e7c643922dddb/d000baa1cd11728bcc2680b6cafcc3cec3fd2c1e.jpg)
![](http://a.hiphotos.baidu.com/exp/w=500/sign=b0b8355033adcbef01347e069cae2e0e/e1fe9925bc315c6054b2677b8fb1cb134954777a.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=1daff04e17ce36d3a20483300af23a24/b90e7bec54e736d16934809c99504fc2d562697a.jpg)
![](http://f.hiphotos.baidu.com/exp/w=500/sign=8b3f52c7f4246b607b0eb274dbf91a35/ac345982b2b7d0a239c20809c9ef76094b369a1e.jpg)
![](http://g.hiphotos.baidu.com/exp/w=500/sign=68beed9b8594a4c20a23e72b3ef51bac/79f0f736afc37931b4638abde9c4b74543a9111e.jpg)
相关文章推荐
- matlab GUI界面编程总结
- Matlab------------GUI编程:gui程序设计与发布
- matlab GUI界面编程总结
- matlab GUI界面编程总结
- Matlab学习笔记 (一)GUI用户图形界面编程
- Matlab---GUI界面编程2(m文件纯代码实现)
- matlab GUI界面编程总结
- MATLAB界面编程
- Matlab------------GUI编程:gui编程数据传递
- Matlab------------GUI编程:控制运算精度
- Genesis2000 GUI界面编程基础
- Matlab GUIDE使用总结--Matlab GUI界面
- Matlab GUI界面
- MATLAB GUI界面之间的数据传递
- MATLAB的GUI 程序设计
- DirectUI Skin++界面解决方案 界面设计 界面开发 软件UI界面开发 软件UI界面美术设计 界面编程 界面教程 Skin VC VB C# .net pb delphi c builder GUI
- 做一个实例,搞定MATLAB界面编程
- Matlab-------------Gui编程点击x时提示
- zz MATLAB 与 C 语言混合编程接口:MEX 函数最简单示例之一
- Matlab GUIDE使用总结--Matlab GUI界面