总结

matlab gui

共有六种参数传递方式和范围各不相同。

大家共享吧!

1

。运用

gui

本身的

varain{}

varaout{}

传递参数(注:这种方式仅适用与

gui

间传递数据,

且只适合与主子结构

及从主

gui

调用子

gui

,然后关掉子

gui

,而不适合递进结构,即

一步一步实现的方式

)

输入参数传递:

比如子

GUI

的名称为

subGUI,

设想的参数输入输出为:

[out1, out2] = subGUI(in1, in2)

subGUI

m

文件中(由

GUIDE

自动产生):

1.

第一行的形式为:

function

varargout = subGUI(varargin)

该行不用做任何修改;

varargin

varargout

分别是一个可变长度的

cell

数组

(MATLAB

帮助文件中有说明

)

。输入参数

in1

in2

保存在

varargin

中,输出参数

out1

out2

包含在

varargout

中;

2.

subGUI

OpeningFcn

中,读入参数,并用

guidata

保存,即:

handles.in1 = varargin{1};

handles.in2 = varargin{2};

guidata(hObject, handles);

返回参数的设置:

1.

GUI

子程序的

OpeningFcn

函数的结尾加上

uiwait(handles.figure1);

figure1

subGUI

Tag

2. subGUI

中控制程序结束(如

"OK”

"Cancel"

按钮)的

callback

末尾加上

uiresume(handles.figure1)

,不要将

delete

命令放在这些

callback

中;

3.

在子

GUI

OutputFcn

中设置要传递出去的参数,如

varargout{1} = handles.out1

varargout{2} = handles.out2;

末尾添加

delete(handles.figure1)

;

结束程序。

GUI

OpenFcn

中,如果不加

uiwait

程序会直接运行到下面,执行

OutputFcn

。也就是说程序一运

行,返回值就确定了,再在其它部分对

handles.output

作更改也没有效果了。

加上

uiwait

后,只有执行了

uiresume

后,才会继续执行到

OutputFcn

,在此之前用户有充分的时间设置返回值。

通过以上设置以后,就可以通过

[out1, out2] = subGUI(in1, in2)

的形式调用该子程序。

在一个

GUI

中调用另一个

GUI

时,主

GUI

不需要特别的设置,同调用普通的函数一样。在打开子

GUI

界面的同时,主程序还可以响应其它的控件。不需要担心子

GUI

的返回值被传错了地方。

2.

运用

global

定义全局变量传递参数

(适用于

gui

内控件间以及不同

gui

间)

这种方式恐怕是最简单的方式,是很省心!但是但是,简单的问题就在于有时你会很头疼!因为在每一个要到该全局变量的地方,你都要添一句

gloal x

,还有就是如果你在一个地方修改了

x

的值,那么所有

x

的值就都变了!有的时候恐怕会出现紊乱。另一个更重要的问题在于,套用

C++

的一句话,全局变量破坏了程序的封装性!所以,全局变量

是能少用尽量少用

3.

运用

UserData

传递参数

(

gui

内)

直接通过对象的

userdata

属性进行各个

callback

之间的数据存取操作。首先必须将数据存储到一个特定的对象中,假设对象的句柄值为

ui_handle,

需要存储的值为

value,

则输入以下程序即可:

set('ui_handle','UserData',Value);

此时,

value

数据就存在句柄值为

ui_handle

的对象内,在执行的过程中若要取回变量可以通过以下方式在任意

callback

中获取该数据值

value=get(''ui_handle,'UserData');

虽然使用这种方法简单

,但是每个对象仅能存取一个变量值,因此当同一对象存储两次变量时

,先前的变量值就会被覆盖掉,因此都用

UserData

存储简单与单一的数据

。如下面有两个

gui

函数,

myloadfn

加载

mydata.mat

文件,该文件内存储

XYData

变量,其值为

m*2

的绘图矩阵,加载后将该变量值存储到

当前的窗口的

UserData

属性中。另一个

myplotfcn

函数则是用以获取该

UserData

属性

中存

取的绘图数据,然后绘图。代码如下:

function myloadfcn

load mydata;

set(gcbf,'UserData',XYdata)

function myplotfcn

XYdata=get(gcbf,'UserData');

x=XYData(:,1);

y=XYData(:,2);

plot(x,y);

4.

应用

setappdata getappdata

rmappdata

函数

(gui

间和

gui

内,推荐使用)

使用上面三个函数最有弹性处理数据的传送问题,与

UserData

的方式相类似,但是克服

UserData

的缺点,使一个对象能存取多个变量值。

(1)getappdata

函数

VALUE

getappdata(H,NAME)

(2)setappdata

函数

setappdata(H,NAME,VALUE)

(3)rmappdata

rmappdata(H,NAME)

首先在

matlab

命令窗口输入

magic(3)

数据,因此当前的工作空间就存储了

magic(3)

这组数据了,然后建立一个按钮来获取并显示

magic(3)

数据

>>A=magic(3);

>>setappdata(gcf,'A','A');%save

>>uicontrol(‘String’,'

显示矩阵

A'

'callback','A=getappdata(gcf,'A')');

当在

主子

gui

调用时,可以如下设置

fig1

调用

fig2

时,使用

fig2

指令来打开

fig2,

fig2

m

文件中,在回调函数中用

setappdata(fig1,'A',A)

实现返回

fig1

,并将参数

A

传递给

fig1

然后在

fig1

的使用

A

的地方添加

A=getappdata

(

fig1

‘A’

)

但这种方式的一个问题就是每调用一次,

fig1

的数据就得初始化一次,这是因为

setappdata(fig1,'A',A)

中出现了

fig1

,调用一次

setappdata

就得运行一次

fig1

的缘故,解决方案就是把

setappdata(fig1,'A',A)

改为

setappdata(0,'A',A)

,这样把

A

读入

matlab workspace

,相当于一个全局变量了,但当然比直接用

global

定义全局变量好!

5.

结合

handles

guidata

函数

(

gui

内,不推荐使用,经常出现问题,比如在

handles

中添加了变量对象

Y

后可能就会挤掉

handles

另外一个对象)

他的使用格式如下,如果你在

pushbutton1

中得到一个变

X

,相传出去,那么在

pushbutton1

callback

中,在得到

X

后添加如下代码:

handles.X=X;

guidata(hObject,handles)

(

注意,一定是两行连写)

pushbutton2

中要用到

X

是,在其

callback

先添加

X=handles.X

即可得到

X

的值。

6.

运用

save

load

(

importdata

)传递参数

(gui

内和

gui

间)

将某变量

x

的值先存到磁盘,用的时候在调用。格式如下:

save('*.mat','x'

);用的时候就用

load('*.mat'),

但这样只是把

x

到了

matlab workspace

,不会用显示

,你还要再去查看这个变量名

,

然后才能用,

建议使用

p=importdata('*.mat'),p

是一个结构体,可以随意使用了。

当然,这种方式涉及到磁盘读写,速度当然会有影响

的,一般情况不用,通常用在保存以及导入某个变量时!

使用gui来初始化参数matlab,MATLAB GUI参数传递方式相关推荐

  1. matlab能做什么设计,MATLAB中GUI设计领悟

    最近在给宝钢做一个基于MATLAB平台的操作界面,用到了有关GUI的东西.为此特地学习了一下有关知识,在论坛里逛来逛去,也没有发现非常有价值的东西,反而让自己更加的郁闷和烦乱,后来又狠下心来耐心的看了 ...

  2. matlab中gui的设计,[转]MATLAB中GUI设计领悟

    来源:隐藏 -------------------------全文分割线---------------------------------------------------------------- ...

  3. matlab设计GUI可视化界面全方位解析

    如何使用matlab设计GUI及导出 一.GUI的基础知识 开始生成GUI界面 回调函数 Handles结构体 GUI中的参数传递 二.控件介绍 一.普通按钮 二.可编辑文本(edit)和静态文本(t ...

  4. MATLAB图像去噪GUI设计

    ​ 一.应用背景 在信息化的社会里,图像在信息传播中所起的作用越来越大.所以,消除在图像采集和传输过程中而产生的噪声,保证图像受污染度最小,成了数字图像处理领域里的重要部分. 二.研究内容 本文主要研 ...

  5. 圆形上下挤压 matlab,基于Matlab的GUI设计双螺杆挤压机系统仿真软件

    基于Matlab的GUI设计双螺杆 挤压机系统仿真软件 王玉德,张文孝,韩翠玲 (1.大连水产学院,辽宁大连116023;2.山东省机电学校,山东兖州272105) 1 1 2 DesignofSim ...

  6. matlab中GUI的属性检查器中的XLimMode是什么_OpenBCI_GUI部件指南

    什么是图形用户界面? GUI小部件是适合OpenBCI GUI界面窗格的小工具.GUI小部件的示例包括时间序列.FFT小部件.网络小部件等. 在每个小部件的左上角,都有一个下拉菜单,列出了所有可用的小 ...

  7. matlab伺服驱动,基于MATLAB的GUI设计伺服驱动系统仿真软件

    0引言计算机仿真技术是设计.研究和开发现代机械电子设备的新型手段,具有巨大的优越性,目前我们在机床伺服系统的工程设计中已广泛采用了这项技术.当前较流行的是采用MATLAB软件包进行设计,该软件包对控制 ...

  8. MATLAB软件GUI应用程序

    12.1图形用户界面(GUI)介绍 图形用户界面是为用户和程序之间提供信息交流的一种方式,用户可以通过鼠标.键盘等输入设备即可对计算机中复杂的问题进行处理.用户只需要通过界面交互就可以正确的执行,而无 ...

  9. 基于MATLAB软件GUI界面的可编程电音合成器软件

    基于MATLAB软件GUI界面的可编程电音合成器软件 1 总体设计 1.1 设计思路 1.2 软件运行 2 软件功能说明 2.1 软件界面 2.1.1 菜单栏 2.1.2 工具栏 2.1.3 MySy ...

  10. 基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

    摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化.文章详细介绍了YOLOv4的 ...

最新文章

  1. 如何使用github托管项目---快速入门(菜鸟教程)
  2. 【Android 安全】DEX 加密 ( 代理 Application 开发 | multiple-dex-core 依赖库开发 | 配置元数据 | 获取 apk 文件并准备相关目录 )
  3. C语言经典算法五个人问岁数!——————【Badboy】
  4. css 单行文本溢出显示省略号
  5. 寻找最大的K个数,Top K问题的堆实现
  6. 阿里如何应对亿级高并发大流量?如何保障高可用和稳定性!
  7. NFC 验证平台搭建
  8. Python timeit模块的使用
  9. 佛山ABB服务器维修,佛山南海ABB软启动器报故障服务点
  10. java 解析大xml文件_java-通过网络解析大型XML文件
  11. 基于Python的淘宝用户行为数据分析
  12. Go语言 linux下开发 IDE -SpaceVim\NeoVim
  13. 【Photoshop 教程系列第 2 篇】如何将 PS 中字体单位由点改为像素
  14. js判断字符串下划线个数
  15. 2019郑州大学计算机专业分数线,2019年郑州大学优势专业排名及分数线
  16. 【Unity3D】UGUI之Toggle
  17. 近两年学习Python的人越来越多,Python就业形势很好?
  18. 软件项目中的决策分析_软件工程中的决策管理
  19. 使用代码访问EOS智能合约
  20. 北方民族大学计算机科学与导论试题,2016秋计算机导论(北方民族大学 张春梅)...

热门文章

  1. word计算机公式怎么算,word怎么实现自动计算公式
  2. fcm算法的MATLAB实现
  3. DDR2 DDR3 PCBlayout规则
  4. 强大视频电影播放软件——乐鱼影音盒!
  5. 计算机一级网页制作教程视频教程,网页制作入门教程(一)
  6. 计算机触摸板设置方法,笔记本触摸板设置,小编教你笔记本触摸板怎么设置
  7. JS判断当前浏览器是否为IE内核
  8. 博士申请 | 英国格拉斯哥大学赵德宗教授课题组招收无人驾驶方向全奖博士生...
  9. SAP ABAP 字符串替换
  10. 微信3D小游戏已达数百款,这里肯定有你没玩过的小游戏!