欢迎来到天天文库
浏览记录
ID:11921987
大小:81.50 KB
页数:30页
时间:2018-07-14
《独立的回调函数76795》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、独立的回调函数76795文档的质量,源自对文档的精心挑选!独立的回调函数 建立GUI函数的一个有效方法是编写独立的回调函数,专门执行一个或多个回调。函数使用的对象句柄和其它变量可以作为参量传递,必要时回调函数可返回值。 考虑先前的一个例子,建立一个方位角的滑标,以脚本文件来实现。%setview.mscriptfilevw=get(gca,'View');Hc_az=uicontrol(gcf,'Style','slider',...'Position',[10514020],...'Min',-90,'Max',90,'V
2、alue',vw(1),...'Callback',[...'set(Hc_cur,'String',num2str(get(Hc_az,'Value'))),'...'set(gca,'View',[get(Hc_az,'Value')vw(2)])']);Hc_min=uicontrol(gcf,'style','text',...'Position',[10254020],...'String',num2str(get(Hc_az,'Min')));Hc_max=uicontrol(gcf,'Style','text',.
3、..'Position',[110254020],...'String',num2str(get(Hc_az,'Max')));Hc_cur=uicontrol(gcf,'Style','text',...'Position',[60254020],...'String',num2str(get(Hc_az,'Value')));下面是同样的例子。作为一个函数,采用'Tag'属性来辨别控制框,并使用独立的M文件来执行回调。funtionsetview()vw=get(gca,'View');Hc_az=uicontrol(gcf
4、,'Style','Slider',...'Position',[10514020],...'Min',-90,'Max',90,'Value',vw(1),...'Tag','Azslider',...'Callback','svcback');Hc_min=uicontrol(gcf,'style','text,...'Position',[10254020],...'String',num2str(get(Hc_az,'Min')));Hc_max=uicontrol(gcf,'Style','text',...'Posi
5、tion',[110254020],...'String',num2str(get(Hc_az,'Max')));Hc_cur=uicontrol(gcf,'Style','text',...'Position',[60254020],...'Tag','Azcur',...'String',num2str(get(Hc_az,'Value')));回调函数本身如下:functionsvcback()vw=get(gca,'View');Hc_az=findobj(gcf,'Tag','AZslider');Hc_cur=fin
6、dobj(gcf,'Tag','AZcur');str=num2str(get(Hc_az,'Value'));newview=[get(Hc_az,'Value')vw(2)];set(Hc_cur,'String',str)set(gca,'View',newview)上面的例子并不节省很多代码,但却得到了用函数而不用脚本文件的优点:回调函数可以利用临时变量,而不使命令窗口工作空间拥挤;不需要eval所需的引号和字符串;在回调函数中命令的句法变得十分简单。使用独立回调函数技术,越复杂的回调(函数)越简单。 独立回调函数的缺
7、点是:需要很大数目的M文件以实现一个含有若干控制框和菜单项的GUI函数,所有这些M文件必须在MATLAB路径中可得,且每一个文件又必须要有一个不同的文件名。在对文件名大小有限制且对大小写不敏感的平台上,如MS-windows,文件冲突的机会就增加了。而且回调函数只能被GUI函数调用而不能被用户调用。递归函数调用 利用单独的M文件并递归地调用该文件,既可以避免多个M文件的复杂性,又可以利用函数的优点。使用开关switches或ifelseif语句,可将回调函数装入调用函数内。通常这样一种函数调用的结构为functiongui
8、func(switch)。其中switch确定执行哪一个函数开关的参量,它可以是字符串'startup','close','sectolor'等等,也可以是代码或数字。如switch是字符串,则可如下面所示的M文件片段那样将开关编程。ifnargin<1,swi
此文档下载收益归作者所有