matlab中setappdata和getappdata两个函数的实例如下:
----------------------------
SETAPPDATA(H, NAME, VALUE) sets application-defined data for
the object withhandle H. The application-defineddata,
which is createdif it does not already exist, is
assigned a NAMEand a VALUE. VALUE may be anything.
See alsogetappdata, rmappdata, isappdata.
----------------------------
H设置为0,表示matlab的全局句柄,而不是某个窗口或者控件的句柄。
value为,你需要传递的数据变量,我们喜欢用结构变量。
name为当前figB的窗体标识,也就是窗体的tag。
例如在figB里面
spec_data.length = 20;
spec_data.weight = 200;
setappdata(0,'figB',spec_data); %保存
以上代码放在figB里面需要保存设置参数的callback里面
然后在figB的
output 那个callback
function varargout = figB_OutputFcn(hObject, eventdata,handles)
% Get default command line output from handles structure
%**********************return global varible
%varargout{1} = handles.output;
uiwait(gcf);
h=getappdata(0,'figB');
varargout{1}=h;
实际上,它们操作的是任意图形对象的一个隐藏属性'ApplicationData',这个属性在PropertyInspector或用get(hObject)是看不见的,MATLAB把所谓的application-defineddata作为struct型保存在其中,个人感觉这个属性与'UserData'其实是一样的。 上网搜了一段找出隐藏属性的程序如下,不知道这种程序段是什么人写出来的,深为敬仰,其中的关键字在help中查都查不到 %------------------------------------------ 获得MATLAB的隐藏特性的方法: % eg, get a figures undocs % … start with yet another undoc set(0,’hideundocumented’,'off’); f=get(gcf); set(0,’hideundocumented’,'on’); g=get(gcf); ff=fieldnames(f); gf=fieldnames(g); df=ismember(ff,gf); ff(~df) 大家试一下,可以发现Matlab很多的隐藏特性,很不错哟!!!!!!!! 例如图形所隐藏的特色包括 ‘ActivePositionProperty’ ‘ALimInclude’ ‘ApplicationData’ ‘CLimInclude’ ‘CurrentKey’ ‘CurrentMenu’ ‘CurrentModifier’ ‘HelpFcn’ ‘HelpTopicKey’ ‘HelpTopicMap’ ‘OuterPosition’ ‘PrintTemplate’ ‘Serializable’ ‘ToolBar’ ‘WaitStatus’ ‘XLimInclude’ ‘YLimInclude’ ‘ZLimInclude’ 这些属性都被Mathworks公司发布Matlab的时候所隐藏了,比如OuterPosition属性对于定义窗口的大小就非常方便。setappdata(h,'name',value)为句柄h所指示的对象定义应用程序数据。数据的名称为name,数据的值为value。value可以是任何类型的数据。%创建窗口对象,返回句柄h >>h=gcf; >>value=magic(5) value= 17241815《Simulink与信号处理》 23571416 46132022 Matlab中文论坛 101219213 11182529《Simulink与信号处理》 %定义应用程序数据appdata_1,其值为value >>setappdata(h,'appdata_1',value) |
#SinaEditor_Temp_FontName通过output里面的缺省变量varargout输出来。
在figA里面
就那样用
ret=figB;