matlab課程設(shè)計(jì)含源代碼_第1頁
matlab課程設(shè)計(jì)含源代碼_第2頁
matlab課程設(shè)計(jì)含源代碼_第3頁
matlab課程設(shè)計(jì)含源代碼_第4頁
matlab課程設(shè)計(jì)含源代碼_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)課程設(shè)計(jì)的意義通常在開發(fā)一個(gè)實(shí)際的應(yīng)用程序時(shí)都會(huì)盡量做到界面友好,最常用的方法就是使用圖形界面,而Matlab是一門面向?qū)ο蟮恼Z言。提供圖形用戶界面的應(yīng)用程序能夠使用的學(xué)習(xí)和使用更為方便容易。用戶不需要知道應(yīng)用程序究竟是怎樣執(zhí)行各種命令的,而只需要了解可見界面組件的使用方法;用戶也不需要知道命令是怎樣執(zhí)行的,只要通過與界面交互就可以是指定的行為得以正確執(zhí)行,這比用在DOS環(huán)境下運(yùn)行的程序交互性友好。在Matlab中,圖形用戶界面是一種包含多種對(duì)象的圖形窗口。用戶必須對(duì)每

2、一種對(duì)象進(jìn)行界面布局和編程,從而使用戶激活GUI每個(gè)對(duì)象時(shí)都能夠執(zhí)行相應(yīng)的行為。另外,用戶必須保存和發(fā)布所創(chuàng)建的GUI,使得GUI能夠真正地得到應(yīng)用。Matlab為用戶開發(fā)圖形界面提供了一個(gè)方便高效的集成開發(fā)環(huán)境:Matlab圖形用戶界面開發(fā)環(huán)境GUIDE。上述所有工作都能夠使用GUIDE方便地實(shí)現(xiàn),GUIDE主要是一個(gè)界面設(shè)計(jì)工具集,Matlab將所有GUIDE支持的用戶控件都集成在這個(gè)環(huán)境中并提供界面外觀、屬性和行為響應(yīng)方式的設(shè)置方法。GUIDE將用戶保存設(shè)計(jì)好的GUIDE界面保存在一個(gè)Fig資源文件中,同時(shí)還能夠生成包含GUI初始化和組件界面布局控制的M文件。這個(gè)M文件為實(shí)現(xiàn)回調(diào)函數(shù)提供

3、了一個(gè)參考框架。這次不到一周課程設(shè)計(jì)使我對(duì)Matlab有了更深刻的認(rèn)識(shí),尤其是編程方面,掌握了一些編程思維,這對(duì)我們以后再學(xué)習(xí)其它語言是有很大的益處的,掌握一種編程思維方式比多學(xué)幾門語言都有用。課程設(shè)計(jì)的要求1.用GUI設(shè)計(jì)一個(gè)計(jì)算器要求至少完成加、減、乘、除功能; 擴(kuò)充:矩陣運(yùn)算(加、減、點(diǎn)乘,點(diǎn)除,乘,除,乘方等)2.設(shè)計(jì)一個(gè)繪圖界面要求能選擇繪制二維曲線,三維曲線,三維網(wǎng)格,三維曲面,柱狀圖,餅圖等功能。要求界面要整齊劃一,富有美感。需求分析和總體設(shè)計(jì)任務(wù)描述1.課程設(shè)計(jì)目標(biāo) 用GUIDE編寫一個(gè)簡(jiǎn)易計(jì)算器和一個(gè)能自動(dòng)畫圖的程序。2.功能描述(1).計(jì)算器能實(shí)現(xiàn)的功能加、減、乘、除、乘方

4、、開方;可以后退、清零;可以更換背景顏色、查看幫助等操作。(2).畫圖程序能實(shí)現(xiàn)的功能可以畫出二維曲線、三維曲線、三維網(wǎng)格、三維曲面、柱狀圖、餅圖;有簡(jiǎn)單菜單(就包括一項(xiàng):文件)。任務(wù)設(shè)計(jì) 1.計(jì)算器(1).運(yùn)行Matlab主程序;(2).新建Gui文件命名為“wodejisuanqi.fig” ;(3).在出現(xiàn)的界面創(chuàng)建需要的文本框(tag為wenben),按鈕:0、1、2、3、4、5、6、7、8、9、CE(清零)、backplace(后退)、+、- 、 *、 、 . ,菜單:(文件,關(guān)閉);背景色(淺紫色,淺綠色,粉紅色,默認(rèn)色);幫助(關(guān)于)。 (4).編寫M文件。2.畫圖(1).運(yùn)行M

5、atlab主程序;(2).新建Gui文件并命名為“huatu.fig”;(3).再出現(xiàn)的界面創(chuàng)建需要的坐標(biāo)系(tag為zuobiaoxi),按鈕:二維曲線、三位曲線、三維網(wǎng)格、三維曲面、柱狀圖、餅狀圖;(4).將它們的tag都設(shè)為它們的漢語拼音;(5).編寫M文件。第3章 編碼代碼編寫步驟計(jì)算器.主函數(shù) 在主函數(shù)fanction wodejisuanqi-OpeningFcn中編寫主函數(shù)代碼。先申請(qǐng)一個(gè)全局變量s ,用于判斷文本框里的字符串是不是有:+、- 、 *、,如果有的話,就把s置為1,否則,置為0。再獲得文本框中字符串的句柄,并賦給變量h。申請(qǐng)全局變量p,為了判斷響應(yīng)等號(hào)時(shí)文本框里的運(yùn)

6、算符號(hào),其中令p=是沒有實(shí)際意義的,只是為了判斷運(yùn)算符不是加減乘除中的任一個(gè)。代碼如下:global s ;h=get(handles.wenben,string);switch(h) case+,-,*, s=1; otherwise s=0;endglobal p;p=;.數(shù)字函數(shù)在這個(gè)函數(shù)里主要是判斷文本框里是不是有加減乘除符號(hào),如果有的話,就把文本框中的字符串設(shè)置為數(shù)字,否則,再判斷是不是0,是的話,就把文本框中的值置為數(shù)字,不是的話,就把數(shù)字連接到文本框中的字符串上。代碼如下(以0為例):global s;hh=handles.wenben; %把文本框的句柄賦給hhif(s=1)

7、set(hh,string,0); s=0; %把s再次置為0,為了下次判斷不出錯(cuò)elseif(s=0) h=get(hh,string); switch(h) %在判斷h是否為0 case 0; set(hh,string,0); otherwise t=strcat(h,0); %把0連接到原有的字符后面 set(hh,string,t); endend.小數(shù)點(diǎn)函數(shù) 判斷原來文本框里有幾個(gè)小數(shù)點(diǎn),如果有的話,就保持不變,否則,加上小數(shù)點(diǎn)。判斷方法是用strfind函數(shù),測(cè)試其返回的矩陣大小。代碼如下: hh=handles.wenben; a=get(hh,string); set(hh,

8、string,.); b=get(hh,string); c=strcat(a,.); p,q=size(m); %測(cè)試矩陣m if q=1 set(hh,string,a); else set(hh,string,c);end運(yùn)算符號(hào)(以加號(hào)為例)函數(shù)申請(qǐng)全局變量p,s,v1,p用于響應(yīng)等號(hào)時(shí)判斷,s用于判斷按加好時(shí)文本框里是不是有加減乘除,如果沒有就把文本框里的字符串轉(zhuǎn)換成數(shù)字,并賦給全局變量v1。代碼如下:hh=handles.wenben;p=+;global s;if(s=0) global v1; %按加號(hào)之前的數(shù)值 v1=str2num(get(hh,string); s=1;e

9、nd.根號(hào)和冪(以根號(hào)為例)函數(shù)申請(qǐng)全局變量s,如果s=0,即文本框里沒有加減乘除符號(hào),就把文本框里的字符串轉(zhuǎn)換成數(shù)字并開方。代碼如下:hh=handles.wenben;global s;if (s=0)r=sqrt(str2num(get(hh,String);set(hh,String,num2str(r);end(6).等號(hào)函數(shù) 這是整個(gè)程序中最重要的一個(gè)函數(shù),申請(qǐng)全局變量p,判斷p的值,并作出相應(yīng)的處理。代碼如下:hh=handles.wenben;global v1;global v2;global v3;global v4;global v5;global v6;v5=str2n

10、um(get(hh,string);global p;switch(p) case+; r=v1+v5 set(hh,string,num2str(r); v1=0; p= ; case-; r=v2-v5; set(hh,string,num2str(r); v2=0; p= ; case*; r=v3*v5; set(hh,string,num2str(r); v3=0; p= ; case/; r=v4/v5; set(hh,string,num2str(r); v4=0; p= ; case; r=v6v5; set(hh,string,num2str(r); v5=0; p= ; o

11、therwise b=(get(hh,string) set(hh,string,b) end菜單函數(shù)(以顏色中的粉紅色為例)設(shè)置面板(tag為pane)的background屬性。代碼如下:set(handles.pane,backgroundcolor,0.992 0.51 0.627);set(handles.biaoti,backgroundcolor,0.992 0.51 0.627);畫圖程序 (1).畫圖按鈕函數(shù)(以二維曲線函數(shù)為例)代碼如下:x=0:0.1:2*pi;y=0:0.1:2*pi;y=sin(x);plot(handles.zuobiao,x,y). 菜單函數(shù) 文件

12、中的關(guān)閉函數(shù),代碼如下:function guanbi_Callback(hObject, eventdata, handles)close;遇到問題及解決方案 1 、在計(jì)算器方面,剛做完時(shí)漏洞比較多,最嚴(yán)重的是小數(shù)點(diǎn)可以連續(xù)輸入,很不方便。解決方法是:用strfind函數(shù)查看文本框里有幾個(gè)小數(shù)點(diǎn),如果已經(jīng)有一個(gè)了,再按小數(shù)點(diǎn)就保持不變。另外一個(gè)漏洞是按過運(yùn)算符號(hào)后一個(gè)數(shù)不等于一個(gè)數(shù),比如:輸入1,按等號(hào),會(huì)出來一個(gè)3,經(jīng)過長(zhǎng)時(shí)間分析得知,這是由于在按運(yùn)算符號(hào)時(shí),系統(tǒng)記錄了文本框里的數(shù)但沒有清空,才會(huì)出現(xiàn)這種問題。解決方法是再申請(qǐng)一個(gè)不同于加減乘除的另一個(gè)符號(hào),并將按過運(yùn)算符后記錄的數(shù)值置0,

13、問題解決,很高興。 2 、在畫圖程序中基本上沒什么難度,就是有的圖形不能在規(guī)定的坐標(biāo)系中出現(xiàn)。解決方法,先獲得坐標(biāo)系的句柄,在畫圖,問題解決。三 程序運(yùn)行結(jié)果1 、計(jì)算器程序畫圖程序.初始界面 (2).按二維曲線按鈕后的界面按三維曲線按鈕后的界面按三維曲面后的界面.按三維網(wǎng)格按鈕后的界面.按柱形圖按鈕后的界面(7).按餅圖按鈕后的界面第4章 感想認(rèn)識(shí)經(jīng)過不到一周的matlab課程設(shè)計(jì)使我感覺到,學(xué)習(xí)一學(xué)期的知識(shí)還是有些不連貫,造成編程時(shí),沒有思路,有不會(huì)的只好去網(wǎng)上查詢,有時(shí)候會(huì)因?yàn)槟硞€(gè)帖子是我茅塞頓開,從而有了思路,完成了課程設(shè)計(jì)的任務(wù)。Matlab Gui是很有用的東西,比我們學(xué)的C語言界

14、面好看,又有實(shí)用價(jià)值。以后我還要學(xué)習(xí)matlab,為了迎接考試也是為了自己以后能夠用到。附錄(源代碼)計(jì)算器function varargout = wodejisuanqi(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, wodejisuanqi_OpeningFcn, . gui_OutputFcn, wodejisuanqi_OutputFcn, . gui_LayoutFcn, , . gui_Call

15、back, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before wodejisuanqi is made visible.function wode

16、jisuanqi_OpeningFcn(hObject, eventdata, handles, varargin)global s;h=get(handles.wenben,string);switch(h) case+,-,*, s=1; otherwise s=0;endglobal p;p=;handles.output = hObject;guidata(hObject, handles);% function varargout = wodejisuanqi_OutputFcn(hObject, eventdata, handles) varargout1 = handles.ou

17、tput; % - Outputs from this function are returned to the command line.function wenben_Callback(hObject, eventdata, handles)% - Executes during object creation, after setting all properties.function wenben_CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,def

18、aultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end% - Executes on button press in point.function point_Callback(hObject, eventdata, handles)hh=handles.wenben;a=get(hh,string);set(hh,string,.);b=get(hh,string);c=strcat(a,b);m=strfind(a,.);p,q=size(m);if q=1 set(hh,string,a);else set

19、(hh,string,c);end% - Executes on button press in zero.function zero_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,0); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,0); otherwise t=strcat(h,0); set(hh,string,t); endend% - Executes on button

20、press in one.function one_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,1); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,1); otherwise t=strcat(h,1); set(hh,string,t); endend% - Executes on button press in two.function two_Callback(hObject

21、, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,2); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,2); otherwise t=strcat(h,2); set(hh,string,t); endend% - Executes on button press in three.function three_Callback(hObject, eventdata, handles)global s;hh=handl

22、es.wenben;if(s=1) set(hh,string,3); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,3); otherwise t=strcat(h,3); set(hh,string,t); endend% - Executes on button press in four.function four_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,4); s=0;

23、elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,4); otherwise t=strcat(h,4); set(hh,string,t); endend% - Executes on button press in five.function five_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,5); s=0;elseif(s=0) h=get(hh,string); switch(h)

24、case 0; set(hh,string,5); otherwise t=strcat(h,5); set(hh,string,t); endend% - Executes on button press in six.function six_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,6); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,6); otherwise t=strc

25、at(h,6); set(hh,string,t); endend% - Executes on button press in seven.function seven_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,7); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,7); otherwise t=strcat(h,7); set(hh,string,t); endend% - E

26、xecutes on button press in eight.function eight_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,8); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,8); otherwise t=strcat(h,8); set(hh,string,t); endend% - Executes on button press in nine.functi

27、on nine_Callback(hObject, eventdata, handles)global s;hh=handles.wenben;if(s=1) set(hh,string,9); s=0;elseif(s=0) h=get(hh,string); switch(h) case 0; set(hh,string,9); otherwise t=strcat(h,9); set(hh,string,t); endend% -function wenjian_Callback(hObject, eventdata, handles)% -function guanbi_Callbac

28、k(hObject, eventdata, handles)close;% -function qianlvse_Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.6 0.902 0.608);set(handles.biaoti,backgroundcolor,0.6 0.902 0.608);% -function beijingse_Callback(hObject, eventdata, handles)% -function moren_Callback(hObject, eventdata

29、, handles)set(handles.pane,backgroundcolor,0.502, 0.502 1.0);set(handles.biaoti,backgroundcolor,0.502, 0.502 1.0);% -function qianzise_Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.855 0.561 0.937);set(handles.biaoti,backgroundcolor,0.855 0.561 0.937);% -function fenhongse_

30、Callback(hObject, eventdata, handles)set(handles.pane,backgroundcolor,0.992 0.51 0.627);set(handles.biaoti,backgroundcolor,0.992 0.51 0.627);% -function bangzhu_Callback(hObject, eventdata, handles)% -function guanyu_Callback(hObject, eventdata, handles)msgbox( ,warn);global p;p=;% - Executes on but

31、ton press in jia.function jia_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=+;global s;if(s=0) global v1; v1=str2num(get(hh,string); s=1;end% - Executes on button press in jian.function jian_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=-;global s;if(s=0) glob

32、al v2; v2=str2num(get(hh,string); s=1;end% - Executes on button press in cheng.function cheng_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=*;global s;if(s=0) global v3; v3=str2num(get(hh,string); s=1;end% - Executes on button press in chu.function chu_Callback(hObject, eventdata

33、, handles)global p;hh=handles.wenben;p=/;global s;if(s=0) global v4; v4=str2num(get(hh,string); s=1;end% - Executes on button press in gen.function gen_Callback(hObject, eventdata, handles)hh=handles.wenben;global s;if (s=0)r=sqrt(str2num(get(hh,String);set(hh,String,num2str(r);end% - Executes on bu

34、tton press in mi.function mi_Callback(hObject, eventdata, handles)global p;hh=handles.wenben;p=;global s;if(s=0) global v6; v6=str2num(get(hh,string); s=1;end% - Executes on button press in deng.function deng_Callback(hObject, eventdata, handles)hh=handles.wenben;global v1;global v2;global v3;global

35、 v4;global v5;global v6;v5=str2num(get(hh,string);global p;switch(p) case+; r=v1+v5 set(hh,string,num2str(r); v1=0; p= ; case-; r=v2-v5; set(hh,string,num2str(r); v2=0; p= ; case*; r=v3*v5; set(hh,string,num2str(r); v3=0; p= ; case/; r=v4/v5; set(hh,string,num2str(r); v4=0; p= ; case; r=v6v5; set(hh

36、,string,num2str(r); v5=0; p= ; otherwise b=(get(hh,string) set(hh,string,b) end% - Executes on button press in ce.function ce_Callback(hObject, eventdata, handles)hh=handles.wenben;set(hh,string,0);% - Executes on button press in pushbutton20.function pushbutton20_Callback(hObject, eventdata, handle

37、s)% - Executes on button press in pushbutton22.function pushbutton22_Callback(hObject, eventdata, handles)% - Executes on button press in backplace.function backplace_Callback(hObject, eventdata, handles)hh=get(handles.wenben,String);t=length(hh);set(handles.wenben,String,hh(1:t-1); % - Executes dur

38、ing object creation, after setting all properties.function pane_CreateFcn(hObject, eventdata, handles)畫圖function varargout = huatu(varargin)% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, huatu_Openi

39、ngFcn, . gui_OutputFcn, huatu_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before huatu is made visible.function huatu_OpeningFcn(hObject, eventdata, handles, varargin)% Choose default command line output for huatuhandles.output = hObject;% Update handles structureguidata(hObject, handles);% - Outputs from this function are returned to the c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論