Matlab GUI的数据传递——运用GUI本身的varargin和varargout传递参数
1.GUI数据传递指的是GUI各控件之间以及不用的GUI之间,这种方式只适用于GUI与GUI之间的数据传递。
2.关于varargin与varargout的概念
varargin是存储输入参数的可变长cell型数组;
varargout是存储输出参数的可变长cell型数组。
是matlab的输入输出参数数目可变的一种编程模式。
3.通常当我们使用varargin与varargout进行gui间数据传递的时候,利用guidata读取varargin和varargout数据并保存的,即
1.输入参数的设置
%例如当我们需要进行主子结构的GUI数据传递的时候,假设GUI和其子GUI之间进行数据传递。
%其中GUI是主GUI,subGUI是子GUI,其中设想输入输出的参数为
[out1,out2]=subGUI(in1,in2)
%通常在使用GUI设计subGUI时,在其本身m文件中第一行是这种形式
function varargout=subGUI(varargin)
%该行不用做任何修改。之后利用guidata进行数据保存
handles.in1=varargin{1};
handles.in2=varargin{2};
guidata(hObject,handles);
2.输出参数的设置
%在主GUI的Openingfun函数中添加如下代码
[out1 out2]=subGUI(in1,in2)%用于调用子GUI
uiwait(handles.figure1);&figure1是subGUI的tag,为了等待调用子gui的过程,从而获得子gui的输出参数out1和out2.
4.一些说明

在MATLAB GUI中,数据分两种:GUI data和application data。 两种数据的存取机制是相同的,但是GUI data使用起来比较方便。 每一个GUI 图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构,这个数据结构中容纳图形界面内所有控件(按钮、列表框、编辑框等)的句柄,相当于一个大的“容器”,里面存放了figure内所有控件的句柄。同时,handles结构也可以被figure内所有控件的回调函数访问,因为回调函数的输入参数中都有handles结构。此外,在控件的回调函数内可以把数据存储到handles结构中。 handles结构数据的取得和存储是通过guidata函数来实现的。 例如:在编辑框edit的回调函数内想获得编辑框的句柄,hObject可以,也可以用handles.edit,这两个值是一样的,没有区别,只不过获得控件句柄的方式不同而已:hObject是调用回调函数时直接传过来的,handles.edit是从handles结构中取得的。但是,在控件的CreateFcn函数中如果想访问控件,必须用hObject,而不能用handles.edit,因为这时控件还没被创建,其句柄还没有加入到handles结构中。 |