MATLAB的GUI参数传递方式总结

MATLAB GUI传递方式:

1、全局变量;
2、作为函数的参数传递;
3、利用控件的userdata数据;
4、为handles结构体添加新字段;
5、setappdata函数为句柄添加数据;
6、跨空间计算evalin和赋值assignin;
7、将数据保存到文件,需要时读取;
8、带参数调用GUI的M文件;
9、嵌套函数(不适用于GUIDE中,只适用纯命令式的GUI)。

一、全局变量

运动global定义全局变量传递参数,使用于GUI内控件以及不同GUI间
使用过程中注意:在每一个要用到全局变量的地方,都要添一句global x类似的语句;而且,只要在一个地方修改了x的值,那么所有x的值就都变了。
全局变量破坏了程序的封装性。全局变量,能少用则少用。
案例:
一个界面上存在两个按钮,按钮1用来画sin(x),按钮2用来画cos(x)。
在GUI的OpeningFcn函数:
global x y1 y2
x=0:.1:2*pi;
y1=sin(x);
y2=cos(x);

在pushbutton1_Callback函数:
global x y1
plot(x,y1)

在pushbutton2_Callback函数:
global x y2
plot(x,y2)
利用global来实现

二、运用GUI本身的varargin{}、varargout{}传递参数

该方式仅适用于GUI间传递数据,且只适用于主子结构,即从主GUI调用子GUI,然后关掉子GUI,不适用于递进结构,即一步一步实现的方式。
案例:
要求:① 双击主界面的选项,将该选项文本传递到次界面的可编辑文本框中显示出来,并隐藏主界面;② 单击次界面的返回按钮,隐藏次界面,显示主界面。
主界面
次界面
采用输入参数传递数据:可实现功能,但是具体的细节不太明白。
1)双击主界面,将选中的选项文本传给次界面。(主界面函数内更改)

function listbox1_Callback(hObject, eventdata, handles)
if isequal(get(gcf,'SelectionType'),'open')  %鼠标双击
    n=get(hObject,'value');         % 获取所选中选项的索引号
    str_all=get(hObject,'string'); % 得到列表框中的所有文本
    str=str_all(n);                        % 获得所选文本值
    set(gcf,'Visible','off');             % 隐藏主界面
    h=U3('strInfo',str); 
    set(h,'Visible','on');
end

2)将主界面得到的信息,显示在次界面的文本框内。(次界面函数内更改)

function U3_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% OpeningFcn函数的输入参数个数为5时,varargin为1×2的单元数组---这是什么原因呢?
if (nargin==5)&&(strcmp(varargin{1},'strInfo
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值