注册 登录
编程论坛 Matlab

[分享]MATLAB GUI编程中几个有用的程序段

Genial 发布于 2006-03-31 20:31, 12176 次点击

昨天找其他资料看到的,尽管简单,觉得不错,分享给各位
不好意思没记下网址,对该内容总结者表示感谢

MATLAB GUI编程中几个有用的程序段

1 启动

% 获取当前文件所在路径

currPath = fileparts(mfilename('fullpath'));

% 切换工作路径到当前位置

cd(currPath);

% 判断所用操作系统

if computer == 'PCWIN'

% MATLAB版本号

v = version;

if v(1)~='7'

warndlg ('Only run in matlab 7.x(R14.x)');

return

else

% 添加当前路径下的所有子目录

addpath(genpath(pwd));

addpath(genpath(currPath));

end

end

2 GUI中使用Axes控件

% 1.删除所有画线及对应图例

% 查找Axes控件中的画线

sameLines = findobj('type','line');

% 逐一删除这些画线

for i = 1 :length(sameLines)

delete(sameLines(i))

end

% 获取Axes控件中的图例(由于画线全部被删除,因此为空)

lgStr = get(legend(handles.ResultsAxes), 'String');

% 重新设置图例(为空)

legend(handles.ResultsAxes,lgStr);

% 2.添加画线

% 获取原来的图例

lgStr = get(handles.hLegend, 'String');

% 设置下一个画线为添加方式

set(handles.ResultsAxes, 'Nextplot', 'add');

% 指定要画线的Axes

axes(handles.ResultsAxes);

% 画线

plot(distance_target, '-r')

% 添加图例

handles.hLegend = legend(handles.ResultsAxes, lgStr,'目标距离');

% 3.删除某一画线

% 所删除画线对应的数据为distance_target,获取它的句柄

sameLines = findobj('type','line','YData', distance_target);

% 删除画线

if ~isempty(sameLines)

delete(sameLines);

end

% 获取原有的图例

lgStr = get(legend(handles.ResultsAxes), 'String');

% 从原有图例中删除对应图例

legend(handles.ResultsAxes, setdiff(lgStr, {'目标距离'}));

3 GUI中使用Excel表格(Activex控件Microsoft Office Spreedsheet

% 获取现在使用的spreedsheet的句柄

ActiveSheet = get(handles.activex1,'ActiveSheet');

% 现在使用的spreedsheet的现在使用工作薄

ActiveWorkbook = get(handles.activex1,'ActiveWorkbook');

% 现在使用的表

eSheets = handles.activex1.ActiveWorkbook.Sheets;

% 使用表的第一个子表

eSheet1 = eSheets.get('Item', 1);

% 激活该表

eSheet1.Activate;

% 获取当前单元格的句柄

ActiveCell = get(handles.activex1, 'ActiveCell');

% 选择坐标为A1的单元格

Select(Range(ActiveSheet,'A1'));

% 获取当前单元格的句柄

ActiveCell = get(handles.activex1, 'ActiveCell');

% 设置当前单元格中的内容

set(ActiveCell, 'Value', '仿真结果报告');

4 Axes控件设置图片

% 所有设置的Axes控件

axes(handles.MyLog);

% 读取图片数据

Image_tip1=imread('Setting/mylog.jpg');

% 显示图片

image(Image_tip1);

22 回复
#2
abingchem2006-04-01 23:28
恩,好东西,收了:)
#3
hanghan66592006-04-10 10:38
有没有好一点的程序实例呀
#4
renmeng2006-04-30 23:40

谢了

#5
chunxueaomei2006-05-10 17:41
谢谢!
#6
chunxueaomei2006-05-10 17:42
很有用的!
#7
chunxueaomei2006-05-10 17:51
我想知道gui进行函数回调时的相关语法!刚入门,一点思路都没有!
可否有高人帮助一下!
最好举个小例子说明!谢谢!
#8
chunxueaomei2006-05-10 17:55
能否提供一个数字识别的gui主窗体啊?太郁闷了!作了窗体,回调函数不知怎么写!谢谢帮忙!
#9
pcb2006-05-29 11:30

有没有关于从 装载数据,并用该数据在设计的GUI界面绘图的例子啊,谢谢
如果有的话,麻烦发我邮箱谢谢了
yqlwyqlw@yahoo.com.cn

#10
shanlog2006-07-05 09:24
谢谢,真棒!
#11
fylddy2006-09-08 10:23
好东西!谢谢!!
#12
jcfan2006-09-26 22:06
好东西!谢谢!!
#13
polyteck2006-10-23 16:07
#14
liuhaixiao2007-01-07 00:26

% 指定要画线的Axes

axes(handles.ResultsAxes);

楼主能解释一下这个嘛?我设置了几个坐标系,怎样指定其中一个在其上画图呢?

#15
hahaworld2007-01-08 21:07
#16
leki2007-04-15 10:00
这个我有了,不过还是支持一下
#17
zp_xm2007-05-25 21:16
好东西  爱司你了
#18
llxz1032008-05-09 10:52
有没有关于GUI方面的例子?比如界面链接,点击一个界面上的按钮,可以进入下一个界面的
#19
jcf2008-07-15 17:25
xie xie ti gong !!
#20
yuqian198611152008-08-21 10:57
谢谢 很好 很有用的
#21
liushikuan2008-11-18 18:09
谢谢
1