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); |