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

    技术2022-05-12  2

     

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


    最新回复(0)