matlab gui
研究了好长时间,今天又明白了点,顺便把gui之间的参数传递方法总结下,以长记性。
第一方法就是声明全局变量
global。这是一种很简洁明了的方法。记得最初自己也这么用的。可后来发现它不太好用,区别与VB中的全局变量,因为在任何地方使用全局变量时都需要声明。只有一个全局变量还好,多了就挺麻烦的,而且管理也是问题。所以在需要共享的变量不是太多是可考虑该方法。
利用空间的userdata属性也可以很方便的在各个回调函数之间共享数据,通过set(。。。)和get(。。。)就可以了,这倒十分方便,美中不足的是只能存储数值数据,字符排外。
最后一种就是今天刚弄通的,以前也看过别人用,只是不太理解。使用setappdata()和getappdata()两个函数实行共享。它们的使用和上边的set和get一样,特殊之处在于你可以用setappdata给控件添加新的属性作为你要共享数据的标示,数值型数据、字符数据都可以方便共享。
matlab自定义回调函数语法规则
(2010-05-08
17:24:12)
在进行GUI编程时,是不是经常遇到需要自己定义针对某一对象的回调函数的问题?
首先用set设置回调函数的名称和输入参数,然后定义回调函数,实现想要的功能。
matlab针对回调函数的定义有如下语法规则需要遵守:
如何设置回调函数
如何定义回调函数
set(h, 'StartFcn', 'myfile')
function myfile
set(h, 'StartFcn', @myfile)
function myfile(obj, event)
set(h, 'StartFcn', {'myfile', var1, var2, ...})
function myfile(obj, event, arg1, arg2, ...)
set(h, 'StartFcn', {@myfile, var1, var2, ...})
function myfile(obj, event, arg1, arg2, ...)
1、第一种情况:不需要向回调函数传递任何参数。
2、第二种情况:向回调函数传入调用回调函数的对象的句柄以及event(matlab留待以后使用)的值。
3、第三、四种情况:向回调函数传入调用回调函数的对象的句柄以及用户想要传递的参数(多个)。
因此,在设置和定义对象的回调函数时,要遵循以上的对应规则。
另外,回调函数如果很长就单独写在外面,如果少的话就可以直接写在后面,比如:
f
=figure('position',[400,400,600,400],'toolbar','none','menubar','none');
btn =
uicontrol('parent',f,'position',[20,20,50,20],...
'callback','t
= 1:0.1:20;y = sin(t);plot(t,y);');
写法跟M文件差不多,只是多了引号而已,但要注意,如果语句本身带引号,就要写两个单引号,如'delete(findobj(0,''Type'',''axes''))'