一个例子

在MATLAB GUI编程中,经常需要处理按钮回调函数之间的一些逻辑。比如,一个处理数据的界面,需要先通过按钮,选定数据文件、确定并导入一些数据到程序中,才能点击下一个按钮“查看数据”,而如果直接点击“查看数据”,那么程序需要提示“未导入数据”。

在这种情况下,除了可以使用判断存放数据变量是否为空、或者检验文件路径等方法,来判断是否确实导入了数据,也可以在按钮回调函数上关联全局变量——一些标记位Flag。

上面的例子中,设定“导入”标记位一开始为0,选定完数据之后,点击“导入数据”按钮、且成功导入的时候,将“导入”标记位置为1,而“查看数据”按钮有一个对于“导入”标记位的判断,如果为1,才能继续进行操作。

全局变量的定义

在MATLAB命令行输入“guide”,点击,新建一个空白的GUI并保存,在MATLAB 2016a版本下,该空白的界面对应的代码应当为74行左右。

在这个代码中找到functionMain_OpeningFcn(hObject, eventdata, handles, varargin)这个函数,这里就是定义GUI全局变量的位置。(蓝色部分,与该GUI的命名有关,只需要记住,这个函数的名字叫OpeningFcn,即打开界面就会执行的函数)

在该函数的最后,定义全局变量,语法规则如下:

global 变量1 变量2 变量3 ...... 变量n; #使用关键字global声明,且变量中间没有逗号

变量1 = 1;

变量2 = 2;

......

变量n = n; #变量的赋值,有分号

举一个例子:

function Main_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to Main (see VARARGIN)

% Choose default command line output for Main

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes Main wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = Main_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% 最后这三个Flag,是全局变量

global Flag_trainimport Flag_testimport Flag_train;

Flag_trainimport=0;

Flag_testimport=0;

Flag_train=0;

这样,就实现了在进入GUI界面的时候,就已经初始化好了几个全局变量。

如果定义的全局变量,在整个GUI界面的程序执行流程中,都是有可能用到的,那么强烈建议按照这个例子,写在Opening Fcn下,不要再新建函数了,很容易出错。

使用按钮的回调函数更改全局变量

当拖动GUI组件(比如一个按钮)放到界面上并保存以后,程序中会生成对应的回调函数代码。在这些回调函数中,可以更改之前定义的GUI全局变量。

语法规则如下:

global 全局变量1 全局变量2 ...... 全局变量n; #中间没有逗号

全局变量1 = 新的数值;

......

在使用全局变量的函数中,使用到的变量必须在该函数中使用global重新定义一遍。当然,在该函数中,未使用到的全局变量可以不用定义。定义之后,使用赋值语句就可以更改它的值。

使用上面的例子,我们对于上面代码中定义的三个Flag进行修改:

% --- Executes on button press in Yes1.

function Yes1_Callback(hObject, eventdata, handles)

global Flag_trainimport;

filename1=get(handles.import_train,'String');

if(strcmp(filename1,'等待导入数据...'))

Flag_trainimport=0;

msgbox('未选择文件或无效的类型');

else

Flag_trainimport=1;

set(handles.msg,'String','成功导入训练数据');

end

我们可以看到,对于该回调函数使用到的全局变量Flag_trainimport,需要再一次声明,之后再if-else从句中,完成了对于其值的更改。

参考资料

https://www.ilovematlab.cn/thread-456538-1-1.html

matlab gui初始化全局变量,MATLAB GUI 全局变量的定义和使用回调函数的更改相关推荐

  1. matlab转换为exe文件,matlab GUI编程及转换为独立运行的exe文件

    入门视频:https://www.bilibili.com/video/av20999810?from=search&seid=13641596054754955985 1.打开matlab ...

  2. matlab的gui是什么,matlab GUI工作原理

    例如,用GUIDE创建名为ceshi的GUI程序,其m文件的主函数有如下形式.那么,打开该GUI时,它到底是怎么运行的呢?以下略作小结,欢迎大家补充 function varargout =ceshi ...

  3. 使用MATLAB GUI创建图形用户界面GUI

    MATLAB是众多理工科学生及工程师经常使用的一款数学软件,除了可以实现数据处理,矩阵运算.函数绘制等功能外,MATLAB还可以实现图形用户界面的设计. 下面介绍如何让小白也能用GUI创建最基本的用户 ...

  4. matlab 二值化_基于MATLAB的指纹识别系统[GUI界面+万字技术文档+语音播报]

    一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...

  5. matlab gui教程 计算器,matlab gui编写的计算器程序

    首先应设计好计算器的GUI界面 如下图所示,然后分别设置'数据1'.'数据2'.'计算结果'的tag值为num1.num2和shuchu 当然你要是愿意也可以定义加减乘除按钮的tag属性,tag属性值 ...

  6. matlab gui 制动程序设计,Matlab的GUI程序设计程序.doc

    第五章 Matlab的GUI程序设计 用代码来制作GUI界面 例5.4对于传递函数为的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面.本例演示: (A)图形界面的大致生成过程: (B) ...

  7. matlAB gui 变成c,matlab改变GUI和figure左上角图标的方法,并生成exe文件

    1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加 h = handles.figure1; %返回其句柄 newIcon = javax.swing.I ...

  8. 用matlab做音乐仿真,Matlab课程设计报告--MATLAB GUI的音乐键盘仿真

    Matlab课程设计报告--MATLAB GUI的音乐键盘仿真 1 MATLAB MATLAB 实践实践 课程设计课程设计 目目 录录 1.1.设计目的设计目的3 3 2.2.题目分析题目分析3 3 ...

  9. 基于Matlab人脸识别签到系统(GUI界面)

    文件大小:5.3M 代码行数:298行(主程序) 开发环境:Matlab2016.2017.2018.2020.2021 点击下载:点击下载 简要概述:基于Matlab人脸识别签到系统(GUI界面) ...

  10. MATLAB App Designer生成独立GUI(可执行exe)并添加依赖项

    文章目录 写在前面 生成步骤 设置编译器 编写GUI 生成exe 常踩的坑 写在前面 近期,由于朋友需求以及科研任务要求,我研究了一下MATLAB GUI设计,写了两个小程序.一个是读取excel部门 ...

最新文章

  1. 我的android绘图学习笔记(二)
  2. github开源项目分享
  3. 补充上次的将父类作为方法的返回类型
  4. easyui左侧导航菜单右侧载入百度地图项目框架
  5. 数据500%暴涨的神秘公式,顶级增长黑客如何实现用户指数级增长
  6. mongodb lbs java_LBS JAVA Spring mongoDB
  7. Ajax跨域请求解决方案——jsonp
  8. sqlmap的简单用法
  9. macOS Docker 上安装、启动 MySQL
  10. 简单 常用的git命令
  11. CPU监控工具(CPU使用率及CPU温度监控)
  12. Blender 快捷键总结,一些子问题
  13. 新年新气象,牛年更牛,开始新的征程
  14. php5.6安装zendopcache加速
  15. KubeEdge Node not ready
  16. 如何搭建自己的cdn
  17. C++类的多种构造函数
  18. Winsoft ComPort for Android Prolific-SEO狼术
  19. 【密码学/信息安全】#3 古典密码(含代码)
  20. 计算机中正数与负数的存储方式

热门文章

  1. 【软件安装】TeXLive 2022安装(Latex下载,安装,测试,升级)教程
  2. 全国所有火车站(12306官方客运营业站站点)很全!!
  3. 写了三年程序,我25了.
  4. 计算机组成原理 罗克露 pdf,罗克露计算机组成原理课件(一).pdf
  5. idea p3c 自定义_扩展阿里p3c实现自定义代码规范检查
  6. js替换字符串中的${xxx}
  7. 新手入门C语言易错点
  8. 虚幻4UE4使用PS4 DualShock4手柄ProController Switch手柄
  9. android adb 环境变量配置,Windows如何配置Android的ADB环境变量
  10. 小马哥讲Spring核心编程思想 第十周 Spring资源管理