用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沒有給出結果。郁悶??磥硎亲约簃aple學的不好。
剛才用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)))