用MATLAB的GUIDE进行图像界面的编程是非常简单的。在这里唐僧几句,学习MATLAB最好的资料是MATLAB自带的帮助文档。这个,王星焱跟我说过好多次了,其实其他的好多软件都是这样的。不过我的自学能力差一些。在去年暑假在合肥电院实习的时候,手边什么书都没有,没有办法,只好硬着头皮看MATLAB帮助文档。虽然是e文的,但是还是能看懂的,在金山词霸的帮助下。
所以,关于GUI的入门,就交给MATLAB的帮助文档了。下面说说更进一步的东西,面向的读者,是已经入门的。关于GUI,我认为,如果变出一个能用的像样的东西,一是菜单,二是控件。
菜单很简单,就是弄清除菜单之间的关系就可以了。我没有做过菜单,但是相信用到的时候肯定会做。
控件的使用,主要是用好CreateFcn,Callback。用好这两个,一般的程序就能编了。CreateFcn中的语句就是在程序运行时,就立即执行的script。如果是编很简单的,不需要复杂可控的交互的程序,这个就够了。但是如果说是希望界面可控,那么最好用callback。在相应控件下,添加相应的script就可以实现比较复杂的功能了。下面,举几个我整理的常用的控件的callback:
1可编辑文本框:
读入数据:
val=str2num(get(handles.edit1,'string'));
显示数据:
set(handles.edit1,'string',num2str(get(handles.slider1,'value')));
这条命令,把滑块的值显示出来。如果想显示其他变量,把num2str(get(handles.slider1,'value'))改成该变量即可。
2滑条:
set(handles.slider1,'value',val)
这条命令把变量val的值显示出来。
注意滑条需要设定min和max两个属性。
3button,这个最常用,在button的callback中直接写入程序即可。
昨天晚上,北大的辛诚让我帮他算道积分,用matlab进行数值积分,其实也挺方便的。
第一句命令:syms a b x
第二句命令:int(x^a*exp(-x)*(cos(b*x)-sin(b*x))/b,x,0,inf)
然后就会得到结果。想用maple验证一下,结果maple没有给出结果。郁闷。看来是自己maple学的不好。
刚才用maple算出来了,呵呵,用命令int(x^a*exp(-x)*(cos(b*x)-sin(b*x))/b,x=0..infinity);看来还是自己学艺不精啊!在数值方面,还是maple强那么一点点,呵呵。
积分结果是:
2^a*b^(-a-2)*(Pi^(1/2)*GAMMA(1/2+1/2*a)*(1/b^2+1)^(-1/2*a-1/2)*cos(2*(1/2+1/2*a)*arctan(1/b))/GAMMA(-1/2*a)-2*Pi^(1/2)*(1/b^2+1)^(-1-1/2*a)*cos(a*arctan(1/b))*GAMMA(1+1/2*a)/(b*(1+a)*GAMMA(-1/2*a-1/2))-2*Pi^(1/2)*(1/b^2+1)^(-1-1/2*a)*sin(a*arctan(1/b))*GAMMA(1+1/2*a)/((1+a)*GAMMA(-1/2*a-1/2)))-2^a*b^(-a-2)*(Pi^(1/2)*GAMMA(1+1/2*a)*(1/b^2+1)^(-1/2*a-1/2)*cos(2*(1/2+1/2*a)*arctan(1/b))/GAMMA(-1/2*a+1/2)-2*Pi^(1/2)*(1/b^2+1)^(-1-1/2*a)*cos(a*arctan(1/b))*GAMMA(3/2+1/2*a)/(b*(1+a)*GAMMA(-1/2*a))-2*Pi^(1/2)*(1/b^2+1)^(-1-1/2*a)*sin(a*arctan(1/b))*GAMMA(3/2+1/2*a)/((1+a)*GAMMA(-1/2*a)))