MATLAB GUI传递有9种方式
1、全局变量;
2、作为函数的参数传递;
3、利用控件的userdata数据;
4、为handles结构体添加新字段;
5、setappdata函数为句柄添加数据;
6、跨空间计算evalin和赋值assignin;
7、将数据保存到文件,需要时读取;
8、带参数调用GUI的M文件;
9、嵌套函数。
1、全局变量
说明:用全局变量传递参数,在每个不同的function中必须先声明一次,如下面的例子中,sin和cos函数中用到x、y时必须加上global语句,使用全局变量时任何地方变量的更改都会引起全局变量的变化,容易造成紊乱,建议少用!
<span style="font-size:18px;"><span style="font-family:Microsoft YaHei;font-size:18px;">function varargout = quanjubianliang(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @quanjubianliang_OpeningFcn, ...
'gui_OutputFcn', @quanjubianliang_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function quanjubianliang_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
global x y1 y2
x=-2*pi:.25:2*pi;
y1=sin(x);
y2=cos(x);
guidata(hObject, handles);
function varargout = quanjubianliang_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function sin_Callback(hObject, eventdata, handles)
global x y1
plot(x,y1,'*R-')
function cos_Callback(hObject, eventdata, handles)
global x y2
plot(x,y2,'sB:')</span></span>
界面如图所示:
图1 采用全局变量传递数据示例-sin_cos函数