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;

matlab callback 数据传递的更多相关文章

  1. matlab函数调用及数据传递

    http://www.cnblogs.com/duanp/archive/2008/11/29/Matlab-GUIDE.html函数调用 在一个m文件中,可以定义多个函数,但是文件名一定要与第一个函 ...

  2. OpenCV和Matlab 通过XML传递数据

    因为现在下到的数据集大部分都使用了Matlab的Calibration toolbox 进行标定,其结构大部分是.mat结构的,所以它和opencv中数据传递需要一个中间过程,网上也有直接调用matl ...

  3. EXTJS中grid的数据特殊显示,不同窗口的数据传递

    //EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { v ...

  4. 《React-Native系列》RN与native交互与数据传递

    RN怎么与native交互的呢? 下面我们通过一个简单的Demo来实现:RN页面调起Native页面,Native页面选择电话本数据,将数据回传给RN展示. 首先是 Native侧 1.MainAct ...

  5. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  6. Activity系列讲解---数据传递

    在Android中,不同的Activity实例可能运行在一个进程中,也可能运行在不同的进程中.因此需要一种特别的机制帮助我们在Activity之间传递消息.Android中通过Intent对象来表示一 ...

  7. vue2.0 组件之间的数据传递

    组件间的数据传递// 父组件<template><div class="order"><dialog-addpro v-on:closedialog= ...

  8. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  9. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

随机推荐

  1. nodejs 实践:express 最佳实践(七) 改造模块 connect2 解析

    nodejs 实践:express 最佳实践(七) 改造模块 connect2 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的 ...

  2. Unity3d发布apk文件并在Android虚拟机中运行的操作流程

    总的流程分为以下6个步骤: 1.安装java_jdk 2.配置java环境变量 3.更新android的sdk 4.从Unity3d中发布出apk文件 5.创建android虚拟机并运行 6.将apk ...

  3. css文字与文本相关样式

    css文字属性定义文本的字体系列,大小,加粗,风格和变形   font-family          设置字体系列 font-size          设置字体的尺寸 font-style     ...

  4. 问题:java.sql.SQLException: No value specified for parameter 1

    解决方案:没有指定参数 String user = req.getParameter("user"); String pwd = req.getParameter("pw ...

  5. Python+selenium之测试报告(2)

    # -*- coding: utf-8 -*- import HTMLTestReport import HTMLTestRunner import os import sys import time ...

  6. [大坑]Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

    报错tensorflow/stream_executor/cuda/cuda_dnn.cc:338] Could not create cudnn handle: CUDNN_STATUS_INTER ...

  7. (原)IPhone开发时把ToolBar中的元素居中的技巧

    在IPhone应用开发时,经常用到ToolBar,其中的控件通常都是居左,想让它居中就有点困难. 这里介绍一种方法: 将Flexible Space Bar Button Item从库中拖到位于控件左 ...

  8. caffe parse_log.sh

    画loss曲线需要用到此shell脚本 #!/bin/bash # Usage parse_log.sh caffe.log # It creates the following two text f ...

  9. 通过存储过程批量生成spool语句

    过存储过程批量生成spool语句 CREATE OR REPLACE PROCEDURE pro_yx_full_txt IS export_handle UTL_FILE.file_type; v_ ...

  10. jquery Syntax error, unrecognized expression:的解决方法

    原文地址 https://blog.csdn.net/flowingfog/article/details/42739773 问题: 将模板的html内容转换成jquery时报以下错误:Syntax ...