matlab callback 数据传递
2024-09-07 20:53:56
M文件中内的每个Callback都可以视为一个独立的可执行的接口,因此,任一个Callback触发后所执行的运算值若要在其他Callback中使用,就无法与MATLAB工作空间内的变量继续执行操作,也就是说每个Callback之间无法直接做沟通操作,因此变量的传递会有问题。主要的几种数据传递方式主要有: (1)宣告为全局变量 将欲传递的变量在传递双方的Callback位置中都设置为全局变量,就可以直接在任一方的Callback中调用。这种方式是最简单的操作方式,但是当GUI全局变量太多时,在执行上就可能造成混乱。 (2)应用对象的userdata属性 通过对象的userdata属性可以直接进行各个Callback之间的数据存取操作。首先必须先将数据存储到一个特定的对象中,假设该对象的句柄值为uihandle,需要存储的数据为value,将输入以下程序即可: set('uihandle','UserData',value); 此时,value数据已经存储到句柄为uihandle的对象内,在执行过程中若要取回该变量就可以通过以下方式在任一Callback中获取该值。 value=get('uihandle','UserData'); 使用这种方式在操作上固然简单方便,但是每一个对象仅能存取一个变量值,因此当同一对像存储两次变量时,先前的变量值就会被覆盖掉,这样对于复杂的操作会造成诸多不便,因此一般都是用Userdata存取简单的数据。 (3)应用setappdata,getappdata与rmappdata 使用setappdata,getappdata与rmappdata函数进行数据传递是最用弹性的,此种方式在使用上非常类似UserData属性的操作,但它克服了UserData的缺点,是一个对象可以存取多个变量,因此会比UserData属性在操作上更具有弹性和数据安全性。 用法如下: setappdata(uihandle,'VariableName',vaule); value=getappdata(uihandle,'VariableName'); rmappdata(uihandle,'VariableName'); 另外一种用法是结合handles结构与guidata函数,虽然在操作上非常简单,但是当变量过多时会使GUI在程序上变得比较复杂,日后程序排错时可能比较费时,因此不推荐使用。 使用方式如下: 如果在对象的Callback中存取变量值到VARdata字段中,使用如下程序: handles.VARdata=A;%将A存放到handles的VARdata字段中去 guidata(hObject,handles);%将新的handles值存储起来 如果在另一个Callback中使用变量A,使用如下程序: A=handles.VARdata; |
最新文章
- angularjs 过滤器详解
- Atitit.识别损坏的图像
- POJ 1328 Radar Installation 贪心 难度:1
- hdu 2372 El Dorado (dp)
- 【Away3D代码解读】(五):动画模块及骨骼动画
- 使用AlertDialog创建对话框的大致步骤
- hdu 4736 This Is The Job The Bear Finds(2013年成都ACM网络赛)
- hdu Max Sum Plus Plus(dp+滚动数组)
- Java中参数传递问题
- AngularJS进阶(五)Angular实现下拉菜单多选
- 蚂蚁 uva 10881
- Django 登录验证-自动重定向到登录页
- poj 2406 求字符串中重复子串的个数
- 16 多校8 Rikka with Parenthesis II
- 1.angular之Hello World
- yii中缓存(cache)详解
- POJ 1679 The Unique MST (次小生成树kruskal算法)
- Hibernate中常见的异常处理
- 【leetcode 简单】 第七十五题 第一个错误的版本
- 栈的应用实例——中缀表达式转换为后缀表达式
热门文章
- 字典(dict),增删改查,嵌套
- ae(ArcEngine) java swing开发入门系列(2):ae的类型转换和Proxy类说明
- WinForm 窗体
- HDU 3709 Balanced Number (数位DP)
- ActiveX、OLE和COM/DCOM
- BZOJ 4070:[APIO2015]雅加达的摩天楼 最短路
- XML(可拓展标记语言)
- 从SAP客户主数据里直接创建商机(Opportunity)
- Spring归纳
- RenderBody,RenderPage和RenderSection