Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >MATLAB GUI的运行原理理解

MATLAB GUI的运行原理理解

作者头像
全栈程序员站长
发布于 2022-09-01 03:12:13
发布于 2022-09-01 03:12:13
1.4K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

背景

为了在MATLAB上演示算法,最近学了一下MATLAB的GUI,学习方法就是一边用一边百度……由于用这种随意的学习方法,这个过程中我也是遇到各种问题,花了不少精力。为了使得这些痛苦的过程不被浪费,这里就总结一下使用MATLAB GUI的知识点,已便今后查阅。

MATLAB GUI的运行原理——创建窗口

在保存GUI的fig文件后,MATLAB会自动生成一个函数,函数名与fig文件名相同。这个函数就是GUI的入口。可以看到个m文件底下自动生成了两个函数:

  • [GUI名]_OpeningFcn
  • [GUI名]_OutputFcn

其中OpeningFcn在程序开始后,界面出来前被运行,我会在这里面执行一些初始化操作。OutputFcn在界面出现后被执行,这个函数返回的值会被作为入口函数的返回值输出。

MATLAB的GUI其实很容易使用,完全按照回调函数的思想去写代码就可以,但是这样往往会遇到一些无法理解的错误,所以我尝试对MATLAB GUI的原理进行了一些研究,看过这篇文章后我在GUI的入口函数设了一个断点,并单步运行,粗略地浏览了一下代码,虽说还有很多地方不理解,但是对GUI的运行方式大体有了一个概念。了解MATLAB GUI的运行原理对以后的debug有好处,所以写下来做总结以及记录。 在入口函数出设断点,开始单步调试,这时函数式没有参数的。可以看到程序最后会调用一个叫gui_mainfcn的函数。 步进这个函数,第一段代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gui_StateFields =  { 
   'gui_Name' 'gui_Singleton' 'gui_OpeningFcn' 'gui_OutputFcn' 'gui_LayoutFcn' 'gui_Callback'};
gui_Mfile = '';

% 获取文件名
for i=1:length(gui_StateFields)
    if ~isfield(gui_State, gui_StateFields{i})
        error(message('MATLAB:guide:StateFieldNotFound', gui_StateFields{ i }, gui_Mfile));
    elseif isequal(gui_StateFields{i}, 'gui_Name')
        gui_Mfile = [gui_State.(gui_StateFields{i}), '.m'];
    end
end

这里获取了GUI项目的文件名,但我往下面看没有发现gui_Mfile被使用,所以认为段代码的作用是检查参数的正确性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
numargin = length(varargin);

if numargin == 0
    % UNTITLED
    % create the GUI only if we are not in the process of loading it
    % already
    gui_Create = true;
elseif local_isInvokeActiveXCallback(gui_State, varargin{:})
    % UNTITLED(ACTIVEX,...)
    vin{
  
  1} = gui_State.gui_Name;
    vin{
  
  2} = [get(varargin{
  
  1}.Peer, 'Tag'), '_', varargin{end}];
    vin{
  
  3} = varargin{
  
  1};
    vin{
  
  4} = varargin{end-1};
    vin{
  
  5} = guidata(varargin{
  
  1}.Peer);
    feval(vin{:});
    return;
elseif local_isInvokeHGCallback(gui_State, varargin{:})
    % UNTITLED('CALLBACK',hObject,eventData,handles,...)
    gui_Create = false;
else
    % UNTITLED(...)
    % create the GUI and hand varargin to the openingfcn
    gui_Create = true;
end

这里的varargin是从GUI入口函数的参数传入的,上面说到入口函数没有 参数,所以numargin 应该等于0,使得gui_Create被设为真。根据注释其实可以猜测这里gui_Create是一个决定了是否创建GUI的标志位。那为什么需要判断这样一个标志位呢?其实通过注释可以猜测,gui_mainfcn这个函数不但负责建立GUI,同时还负责响应来自各个控件的Callback,但是我们姑且不管这个猜测的正确性。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ~gui_Create
    ... %省略中间的代码
else
    if gui_State.gui_Singleton
        gui_SingletonOpt = 'reuse';
    else
        gui_SingletonOpt = 'new';
    end

    % Check user passing 'visible' P/V pair first so that its value can be
    % used by oepnfig to prevent flickering
    gui_Visible = 'auto';
    gui_VisibleInput = '';
    for index=1:2:length(varargin)
        if length(varargin) == index || ~ischar(varargin{index})
            break;
        end

        % Recognize 'visible' P/V pair
        len1 = min(length('visible'),length(varargin{index}));
        len2 = min(length('off'),length(varargin{index+1}));
        if ischar(varargin{index+1}) && strncmpi(varargin{index},'visible',len1) && len2 > 1
            if strncmpi(varargin{index+1},'off',len2)
                gui_Visible = 'invisible';
                gui_VisibleInput = 'off';
            elseif strncmpi(varargin{index+1},'on',len2)
                gui_Visible = 'visible';
                gui_VisibleInput = 'on';
            end
        end
    end
    ...%省略下面代码,这些代码在下面分块分析
end
%函数返回

由于gui_Create为真,这里if语句的判断结果肯定为假。然后程序首先判断了窗口的Singleton性质和可见性。由于这里程序太长,下面再分块分析。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    % Do feval on layout code in m-file if it exists
    gui_Exported = ~isempty(gui_State.gui_LayoutFcn);
    % this application data is used to indicate the running mode of a GUIDE
    % GUI to distinguish it from the design mode of the GUI in GUIDE. it is
    % only used by actxproxy at this time.   
    %直接把数据保存在UIsetappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]),1);
    if gui_Exported
        gui_hFigure = feval(gui_State.gui_LayoutFcn, gui_SingletonOpt);

        % make figure invisible here so that the visibility of figure is
        % consistent in OpeningFcn in the exported GUI case
        if isempty(gui_VisibleInput)
            gui_VisibleInput = get(gui_hFigure,'Visible');
        end
        set(gui_hFigure,'Visible','off')

        % openfig (called by local_openfig below) does this for guis without
        % the LayoutFcn. Be sure to do it here so guis show up on screen.
        movegui(gui_hFigure,'onscreen');
    else
        gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
        % If the figure has InGUIInitialization it was not completely created
        % on the last pass.  Delete this handle and try again.
        if isappdata(gui_hFigure, 'InGUIInitialization')
            delete(gui_hFigure);
            gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);
        end
    end
    if isappdata(0, genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]))
%       移除相应的变量
        rmappdata(0,genvarname(['OpenGuiWhenRunning_', gui_State.gui_Name]));
    end

这段语句判断了输入的参数是否存在回调函数gui_LayoutFcn,如果存在就用这个回调函数来创建窗口gui_hFigure,否则就通过函数local_openfig创建一个窗口,并且设置相应的可见性。一般运行到这里可见性都会被设为’off’,或者’auto’,通过继续追踪local_openfig函数,可以发现可见性与窗口的Singleton性质有关,但如果Singleton性质为假,则仍是不可见的。也就是说,在创建GUI的时候,到这里界面仍然不会出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    % Set flag to indicate starting GUI initialization
    setappdata(gui_hFigure,'InGUIInitialization',1);

    % Fetch GUIDE Application options
    gui_Options = getappdata(gui_hFigure,'GUIDEOptions');
    % Singleton setting in the GUI M-file takes priority if different
    gui_Options.singleton = gui_State.gui_Singleton;

    if ~isappdata(gui_hFigure,'GUIOnScreen')
        % Adjust background color
        if gui_Options.syscolorfig
            set(gui_hFigure,'Color', get(0,'DefaultUicontrolBackgroundColor'));
        end

        % Generate HANDLES structure and store with GUIDATA. If there is
        % user set GUI data already, keep that also.
        data = guidata(gui_hFigure);
        handles = guihandles(gui_hFigure);
        if ~isempty(handles)
            if isempty(data)
                data = handles;
            else
                names = fieldnames(handles);
                for k=1:length(names)
                    data.(char(names(k)))=handles.(char(names(k)));
                end
            end
        end
        guidata(gui_hFigure, data);
    end

这里对窗口的背景色和handles进行了初始化,使用过MATLAB GUI的话可以知道,handles是GUI中的一个与窗口绑定的结构体,用来保存各控件对象和用户数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
% Apply input P/V pairs other than 'visible'
    for index=1:2:length(varargin)
        if length(varargin) == index || ~ischar(varargin{index})
            break;
        end

        len1 = min(length('visible'),length(varargin{index}));
        if ~strncmpi(varargin{index},'visible',len1)
            try set(gui_hFigure, varargin{index}, varargin{index+1}), catch break, end
        end
    end

    % If handle visibility is set to 'callback', turn it on until finished
    % with OpeningFcn
    gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
    if strcmp(gui_HandleVisibility, 'callback')
        set(gui_hFigure,'HandleVisibility', 'on');
    end

%    开始运行gui_OpeningFcn
    feval(gui_State.gui_OpeningFcn, gui_hFigure, [], guidata(gui_hFigure), varargin{:});

这里先设置了窗口的句柄的可见性,然后开始运行GUI函数m文件下自动生成的一个子函数gui_OpeningFcn。所以从这里可以看出,这个函数是GUI中第一个被调用的函数,且在GUI显示之前就执行了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
        % Handle the default callbacks of predefined toolbar tools in this
        % GUI, if any
        guidemfile('restoreToolbarToolPredefinedCallback',gui_hFigure); 

        % Update handle visibility
        set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);

        % Call openfig again to pick up the saved visibility or apply the
        % one passed in from the P/V pairs
%         设置fig的可见性?
        if ~gui_Exported
            gui_hFigure = local_openfig(gui_State.gui_Name, 'reuse',gui_Visible);
        elseif ~isempty(gui_VisibleInput)
            set(gui_hFigure,'Visible',gui_VisibleInput);
        end
        if strcmpi(get(gui_hFigure, 'Visible'), 'on')
            figure(gui_hFigure);

            if gui_Options.singleton
                setappdata(gui_hFigure,'GUIOnScreen', 1);
            end
        end

        % Done with GUI initialization
        if isappdata(gui_hFigure,'InGUIInitialization')
            rmappdata(gui_hFigure,'InGUIInitialization');
        end

经过这里窗口被设为了可见。可以看到local_openfig函数这是第二次出现了,上一次出现这个函数时窗口并没有可见,这一次却被设为了可见,我没有仔细研究这个函数里面的原理,因为我认为不需要研究它内部的原理就能够大致理解整个GUI的运行方式了,所以没有花再多的时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  % If handle visibility is set to 'callback', turn it on until
        % finished with OutputFcn
        gui_HandleVisibility = get(gui_hFigure,'HandleVisibility');
        if strcmp(gui_HandleVisibility, 'callback')
            set(gui_hFigure,'HandleVisibility', 'on');
        end
        gui_Handles = guidata(gui_hFigure);
    else
        gui_Handles = [];
    end

    if nargout
        [varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
    else
        feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);
    end

    if isscalar(gui_hFigure) && ishghandle(gui_hFigure)
        set(gui_hFigure,'HandleVisibility', gui_HandleVisibility);
    end

最后这里设置了下窗口句柄的可见性,重点是并且调用了gui_OutputFcn。gui_mainfcn函数运行到这里就返回了。

MATLAB GUI的运行原理——回调函数

当在GUI中加入控件后,可以引入回调函数,回调函数也就是等使用者按下相应按键时执行的函数。回调函数的调用看起来很神奇,其实很容易理解。在窗口创建起来后,在GUI入口函数处和回调函数处设置一个断点,然后点击一个按钮,你会发现程序会在这个断点处停下来,而不会直接去到回调函数。一开始我觉得很奇怪,为什么程序会莫名其妙地跑到了入口函数那里去,后面无意看到GUI控件回调函数的格式

@(hObject,eventdata)guitest(‘start_preview_Callback’,hObject,eventdata,guidata(hObject))

其中,这里guitest就是我的入口函数名,显然,这里是把回调函数以参数的形式传递给了入口函数,一并传递过去的还有当前控件的句柄。 通过单步调试可以发现程序仍然步进了gui_mainfcn函数,但是此时的参数与先前的不一样了,程序把入口函数接受的参数传送给该函数。步进gui_mainfcn函数后,如上文所述,程序会先判断参数的类型,发现该参数类型是回调函数的话,将gui_Create设为假,程序就不会再建立一个窗口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if ~gui_Create
    % In design time, we need to mark all components possibly created in
    % the coming callback evaluation as non-serializable. This way, they
    % will not be brought into GUIDE and not be saved in the figure file
    % when running/saving the GUI from GUIDE.
    designEval = false;
    if (numargin>1 && ishghandle(varargin{
  
  2}))
        fig = varargin{
  
  2};
        while ~isempty(fig) && ~ishghandle(fig,'figure')
            fig = get(fig,'parent');
        end

        designEval = isappdata(0,'CreatingGUIDEFigure') || (isscalar(fig)&&isprop(fig,'GUIDEFigure'));
    end

    if designEval
        beforeChildren = findall(fig);
    end

    % evaluate the callback now
    varargin{
  
  1} = gui_State.gui_Callback;
    if nargout
        [varargout{
  
  1:nargout}] = feval(varargin{:});
    else       
        feval(varargin{:});
    end

    % Set serializable of objects created in the above callback to off in
    % design time. Need to check whether figure handle is still valid in
    % case the figure is deleted during the callback dispatching.
    if designEval && ishghandle(fig)
        set(setdiff(findall(fig),beforeChildren), 'Serializable','off');
    end
else
...
end
%程序返回

程序先是获取了调用回调函数的源控件的顶级父容器,也就是窗口。然后通过函数句柄调用了相应的回调函数,在接收到回调函数的返回值后,把它送回给入口函数,再由入口函数进行输出。

后记

分析到这里,虽然整个程序之中还有一些一笔带过的地方,但是不阻碍对整个GUI大体流程的认识。在MATLAB的GUI中,我还有一个比较好奇的点是回调函数的中断,在GUI中当一个回调函数没有执行完毕另一个回调函数就已经被触发的时候,根据设置,如果前一个回调函数中有drawnow、uiwait等函数,在执行这些函数的时候前一个回调函数会被中断,然后程序会开始执行另一个回调函数,而前一个回调函数会被暂停,但不会中止,也就是说后面被触发的回调函数执行完毕后,前一个回调函数会在被打断的地方继续执行。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143761.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Matlab GUI界面设计
点击确定,得到两个文件,一个是.m文件,另一个是.fig文件,需要说明的是,.m文件用于编辑GUI中控件所需要的回调代码,.fig文件可以用鼠标拖拽等比较简单的操作进行初始的界面设计。
全栈程序员站长
2022/08/10
1.2K0
Matlab GUI界面设计
基于MATLAB的飞机襟副翼运动建模分析【GUI开发】
首先,深入了解了飞机襟副翼运动原理,构建了该运动机构简图,并计算其运动自由度,并利用解析方法,建立襟副翼运动学方程。最后,基于MATLAB对飞机襟副翼进行运动仿真。
巴山学长
2021/05/31
6640
基于MATLAB的飞机襟副翼运动建模分析【GUI开发】
MATLAB GUI实现计算器(设计)「建议收藏」
如图所示,新建两个即可,左边作为输入屏,右边作为输入结果的显示屏 双击该框,弹出一个窗口,窗口下拉,里面有该显示框的属性
全栈程序员站长
2022/08/15
2.1K0
MATLAB GUI实现计算器(设计)「建议收藏」
MATLAB GUI表格(uitable)的增删操作
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136639.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
2.9K0
MATLAB GUI表格(uitable)的增删操作
MATLAB GUI界面编程——一些细节问题「建议收藏」
本篇博文主要对自己在进行MATLAB GUI设计时遇到的一些细节问题进行总结,点击下面目录中的相关问题,可以直接跳转至相应位置。另外,需要声明的是,我所使用的MATLAB版本——MATLAB R2017a。
全栈程序员站长
2022/07/01
6.2K0
MATLAB GUI界面编程——一些细节问题「建议收藏」
Matlab系列之GUI设计实例2
有了实例1的学习,大家也掌握基本的使用了,本篇再详细介绍一个GUI的设计,再分享一些网上找到的别人设计的GUI小游戏~
狂人V
2021/07/23
1.4K0
Matlab系列之GUI设计实例2
用MATLAB GUI做一个简单的绩点计算界面
本文主要记录如何用MATLAB自带的GUI功能做一个绩点计算界面。并以此来简单介绍一下MATLAB GUI的使用过程。完整代码见:https://github.com/ZhouJiaHuan/compute-GPA-master
全栈程序员站长
2022/09/06
1.2K0
用MATLAB GUI做一个简单的绩点计算界面
Matlab GUI上位机界面实现串口通信
Matlab GUI因项目需求,不得不学的又杂又浅,趁着还没彻底忘记,写下来一些关键注意点。
全栈程序员站长
2022/08/28
2.4K0
Matlab GUI上位机界面实现串口通信
MATLAB GUI编程总结
一、控件风格和外观 (1)BackgroundColor:设置控件背景颜色,使用[R G B]或颜色定义。 (2)CData:在控件上显示的真彩色图像,使用矩阵表示。 (3)ForegroundColor:文本颜色。 (4)String属性:控件上的文本,以及列表框和弹出菜单的选项。 (5)Visible:控件是否可见。
全栈程序员站长
2022/08/11
2.2K0
GUIDE例 开发简单计算器
之前简单介绍了GUIDE的大致情况,受小可爱反应,本期推出一个容易理解的例子----计算器。过程如下:
巴山学长
2019/07/15
4950
GUIDE例    开发简单计算器
MATLAB GUI设计快速入门实例「建议收藏」
时间:2019.11.27 目的: 课题需要设计一个界面 为了实现课题的一个功能,需要设计一个图形界面,因此使用matlab GUIDE进行设计,但前期没有接触过,因此通过实例练习,理解MATLAB gui设计相关知识。
全栈程序员站长
2022/08/26
1.1K0
MATLAB GUI设计快速入门实例「建议收藏」
Matlab基础题总结和习题提示
安装与使用说明:https://blog.csdn.net/zhangrelay/article/details/79622079
zhangrelay
2019/01/23
1.1K0
MATLAB GUI图形界面设计一个学生管理系统
设计一个简单的学生成绩管理程序,包含如下功能: 1、可创建不少于100名学生成员; 2、每名成员的记录包括:学号、姓名、专业和5门课程的成绩;  3、能够实现添加、删除、修改学生成员;(增加非法字符警告) 4、能够实现添加、删除、修改学生成员的课程成绩;(增加非法字符警告) 5、分别计算每一门课程的平均成绩; 6、每一门课程单独排序,输出由高到低的课程、姓名、成绩信息。 7、提供图形界面实现上述功能,界面包含  系统登录界面  添加、删除、修改界面  被选中学生信息显示界面(基本信息,课程成绩,平均成绩)  被选中课程信息显示界面(排序后的课程成绩,学生基本信息) 参考博客:用MATLAB GUI做一个简单的绩点计算界面
全栈程序员站长
2022/09/01
1.6K0
MATLAB GUI图形界面设计一个学生管理系统
为matlab GUI添加背景图片
为GUI添加一个背景图片,不仅可以让我们的界面变得漂亮大气上档次,而且软件对与用户的交互更加友好。用C或者C++写过软件界面的人都知道,这件事情可以轻而易举的办到,那么问题来了,怎么为matlab的GUI添加一个背景图片呢?其实这个操作也很简单,但是如果是第一次做这个,可能需要折腾好久。在这里我希望跟大家分享一下这个小技巧,避免大家遇到同样的问题再走弯路。欢迎交流! 首先简单说一下matlab制作GUI的方法,其实这里有2种方法,这里说一种比较简单的方法,即利用matlab的GUI工具进行,特别对于大型软件开发来说,这种方法是很方便的。在matlab命令行里面输入guide,打开向导,界面如下图所示。
全栈程序员站长
2022/07/01
4.6K0
为matlab GUI添加背景图片
以自相关性为例详解matlab GUI纯代码开发
今天,小编将带你做一个GUI小程序,用于“相关性图像自动绘制”,学习全文后,相信你能够入门Matlab GUI纯代码编程。首先,让我们看一下程序长什么样子。
巴山学长
2021/04/22
8501
以自相关性为例详解matlab GUI纯代码开发
MATLAB GUI显示图片的方法
  在MATLAB的命令行中显示图片或者数据,十分简单,仅通过imshow,plot或者imagesc等函数即可。   而在MATLAB GUI中显示图片,通常需要借助Axes控件来实现。相比而言,多一些操作。
全栈程序员站长
2022/07/01
4.7K0
MATLAB GUI显示图片的方法
matlab GUI基础1
GUI编程开发 1.句柄图形 是一种面向对象的绘图系统。这些细节一般隐藏在图形M文件的内部,用户通过句柄图形可以定制图形的许多特性,这是使用高级绘图函数无法实现的。利用句柄图形可以创建图形用户界面。 2.图形句柄 matlab在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄。句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。 计算机屏幕作为根对象(root)由系统自动建立,其句柄值为0,而图形窗口对象的句柄值为一正整数,并显示在该窗口的标题栏。其他图形对象的句柄为浮点数。 m
瓜大三哥
2018/02/26
1.2K0
matlab GUI基础1
matlab GUI基础2
GUIDE编程开发 matlab可视化姐买你的设计,一般有两种方法,一是直接通过编辑M脚本文件产生GUI,二是通过MATLAB图形用户界面开发环境GUIDE来建立界面。GUIDE是matlab为编写GUI界面提供的集成开发工具,提供了姐买你的外观、属性和回调函数等。GUIDE将用户保存好的GUI界面保存在一个FIG资源文件中,同时还能够产生GUI初始化和组件界面布局控制代码的M文件,这个M文件为实现回调函数提供了一个参考框架。 一.GUI对象的常用属性 1.控件风格和外观 backgroundColor:设
瓜大三哥
2018/02/26
1.2K0
matlab GUI基础2
Matlab系列之函数参数
不知道你们是否有等待今天这篇的到来,这篇其中要讲到的函数参数,是个好东西,但是感觉初学的时候总会有点懵逼,希望你们能理解讲的东西,如果不理解,那就多看几遍吧,我也是这么学过来的,最近也在接受一下非电子类的培训,也是艰难的不行,感觉是真的去搬砖了一样,不过还是蛮有意思的,
狂人V
2020/07/14
8420
Matlab系列之函数参数
纯代码实现matlabのGUI界面搭建
图形用户界面 (Graphical User Interface,简称 GUI),是有别于纯代码执行,GUI能够繁琐的代码浓缩到一块简洁的界面上,用户只需要输输参数、点点鼠标就能得到自己想要的结果,具有极强的交互性和友好性。之前介绍了一个通过matlab的GUIDE工具箱来开发一个简单计算的实例 (GUIDE例 开发简单计算器),使用工具箱来开发GUI界面的有点是显而易见的,所见即所得。可有时候并不需要开发一个界面内容极其丰富的程序,只是做一个简单的交互界面,这时候使用工具箱多少显得有些大材小用。
巴山学长
2019/07/15
1.6K0
纯代码实现matlabのGUI界面搭建
相关推荐
Matlab GUI界面设计
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验