matlab gui初始化全局变量,MATLAB GUI 全局变量的定义和使用回调函数的更改
一个例子
在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 全局变量的定义和使用回调函数的更改相关推荐
- matlab转换为exe文件,matlab GUI编程及转换为独立运行的exe文件
入门视频:https://www.bilibili.com/video/av20999810?from=search&seid=13641596054754955985 1.打开matlab ...
- matlab的gui是什么,matlab GUI工作原理
例如,用GUIDE创建名为ceshi的GUI程序,其m文件的主函数有如下形式.那么,打开该GUI时,它到底是怎么运行的呢?以下略作小结,欢迎大家补充 function varargout =ceshi ...
- 使用MATLAB GUI创建图形用户界面GUI
MATLAB是众多理工科学生及工程师经常使用的一款数学软件,除了可以实现数据处理,矩阵运算.函数绘制等功能外,MATLAB还可以实现图形用户界面的设计. 下面介绍如何让小白也能用GUI创建最基本的用户 ...
- matlab 二值化_基于MATLAB的指纹识别系统[GUI界面+万字技术文档+语音播报]
一.课题介绍 本设计为基于MATLAB的指纹识别系统.本设计系统主要对指纹图像进行三方面处理:图像预处理.特征提取和特征匹配.图像预处理包括四个步骤:图像灰度化.滤波增强.二值化.细化,对指纹图像进行 ...
- matlab gui教程 计算器,matlab gui编写的计算器程序
首先应设计好计算器的GUI界面 如下图所示,然后分别设置'数据1'.'数据2'.'计算结果'的tag值为num1.num2和shuchu 当然你要是愿意也可以定义加减乘除按钮的tag属性,tag属性值 ...
- matlab gui 制动程序设计,Matlab的GUI程序设计程序.doc
第五章 Matlab的GUI程序设计 用代码来制作GUI界面 例5.4对于传递函数为的归一化二阶系统,制作一个能绘制该系统单位阶跃响应的图形用户界面.本例演示: (A)图形界面的大致生成过程: (B) ...
- matlAB gui 变成c,matlab改变GUI和figure左上角图标的方法,并生成exe文件
1. GUI左上角图标的更改,假设GUI的Tag为figure1,在其OpeningFcn里添加 h = handles.figure1; %返回其句柄 newIcon = javax.swing.I ...
- 用matlab做音乐仿真,Matlab课程设计报告--MATLAB GUI的音乐键盘仿真
Matlab课程设计报告--MATLAB GUI的音乐键盘仿真 1 MATLAB MATLAB 实践实践 课程设计课程设计 目目 录录 1.1.设计目的设计目的3 3 2.2.题目分析题目分析3 3 ...
- 基于Matlab人脸识别签到系统(GUI界面)
文件大小:5.3M 代码行数:298行(主程序) 开发环境:Matlab2016.2017.2018.2020.2021 点击下载:点击下载 简要概述:基于Matlab人脸识别签到系统(GUI界面) ...
- MATLAB App Designer生成独立GUI(可执行exe)并添加依赖项
文章目录 写在前面 生成步骤 设置编译器 编写GUI 生成exe 常踩的坑 写在前面 近期,由于朋友需求以及科研任务要求,我研究了一下MATLAB GUI设计,写了两个小程序.一个是读取excel部门 ...
最新文章
- 我的android绘图学习笔记(二)
- github开源项目分享
- 补充上次的将父类作为方法的返回类型
- easyui左侧导航菜单右侧载入百度地图项目框架
- 数据500%暴涨的神秘公式,顶级增长黑客如何实现用户指数级增长
- mongodb lbs java_LBS JAVA Spring mongoDB
- Ajax跨域请求解决方案——jsonp
- sqlmap的简单用法
- macOS Docker 上安装、启动 MySQL
- 简单 常用的git命令
- CPU监控工具(CPU使用率及CPU温度监控)
- Blender 快捷键总结,一些子问题
- 新年新气象,牛年更牛,开始新的征程
- php5.6安装zendopcache加速
- KubeEdge Node not ready
- 如何搭建自己的cdn
- C++类的多种构造函数
- Winsoft ComPort for Android Prolific-SEO狼术
- 【密码学/信息安全】#3 古典密码(含代码)
- 计算机中正数与负数的存储方式
热门文章
- 【软件安装】TeXLive 2022安装(Latex下载,安装,测试,升级)教程
- 全国所有火车站(12306官方客运营业站站点)很全!!
- 写了三年程序,我25了.
- 计算机组成原理 罗克露 pdf,罗克露计算机组成原理课件(一).pdf
- idea p3c 自定义_扩展阿里p3c实现自定义代码规范检查
- js替换字符串中的${xxx}
- 新手入门C语言易错点
- 虚幻4UE4使用PS4 DualShock4手柄ProController Switch手柄
- android adb 环境变量配置,Windows如何配置Android的ADB环境变量
- 小马哥讲Spring核心编程思想 第十周 Spring资源管理