MATLAB程序設(shè)計(jì)課件_第1頁
MATLAB程序設(shè)計(jì)課件_第2頁
MATLAB程序設(shè)計(jì)課件_第3頁
MATLAB程序設(shè)計(jì)課件_第4頁
MATLAB程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第3章 MATLAB程序設(shè)計(jì) 3.1 M文件 3.2 數(shù)據(jù)的輸入輸出 3.3 選擇結(jié)構(gòu) 3.4 循環(huán)結(jié)構(gòu) 3.5 函數(shù)文件 3.6 全局變量和局部變量 目錄目錄3.1 M文件編程vM文件的功能和特點(diǎn)MATLAB是解釋性語言是解釋性語言語法簡(jiǎn)單語法簡(jiǎn)單調(diào)試容易調(diào)試容易人機(jī)交互性強(qiáng)人機(jī)交互性強(qiáng)開放性、可擴(kuò)展性強(qiáng)開放性、可擴(kuò)展性強(qiáng)3.1.1 M文件的建立與編輯1.建立新的M文件(1)菜單操作:直接點(diǎn)擊菜單New Script(2)命令操作:在MATLAB命令窗口輸入命令edit。(3)命令窗口的New菜單 Script命令。 2. 編輯已有的M文件open打開M文件 3.1.2 M文件的分類文件的分

2、類分類:命令文件分類:命令文件(Script File/腳本文件腳本文件)函數(shù)文件函數(shù)文件(Function File)1、命令文件命令文件(1)將需要運(yùn)行的命令編輯到一個(gè)命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會(huì)順序執(zhí)行命令文件中的命令。 (2) 對(duì)于一些比較簡(jiǎn)單的問題 ,在指令窗中直接輸入指令計(jì)算. (3)對(duì)于復(fù)雜計(jì)算,采用命令文件最為合適.MATLAB只是按文件所寫的指令執(zhí)行.命令文件命令文件vM命令文件的特點(diǎn)是:命令文件的構(gòu)成比較簡(jiǎn)單,只是一串按用戶意命令文件的構(gòu)成比較簡(jiǎn)單,只是一串按用戶意圖排列而成的(包括控制流和指令在內(nèi)的)圖排列而成的(包括控制流和指令在內(nèi)的

3、)MATLABMATLAB指令集合指令集合M M文件中定義的變量為全局變量文件中定義的變量為全局變量. .命令文件運(yùn)行命令文件運(yùn)行后后 ,所產(chǎn)生的所有變量都駐留在,所產(chǎn)生的所有變量都駐留在 MATLABMATLAB基本基本工作空間(工作空間( workspace workspace)中。只要用戶不使用)中。只要用戶不使用清除指令(清除指令(clearclear),), MATLABMATLAB指令窗不關(guān)閉,指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中這些變量將一直保存在基本工作空間中 例3.1 建立一個(gè)命令文件將變量a,b的值互換,然后運(yùn)行該命令文件。 首先建立命令文件并以文件名e1.m存

4、盤: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中輸入e1,將會(huì)執(zhí)行該命令文件。目錄目錄函數(shù)文件函數(shù)文件v與命令文件不同與命令文件不同 ,函數(shù)文件猶如一個(gè),函數(shù)文件猶如一個(gè)“黑箱黑箱”,把一些數(shù)據(jù)送進(jìn)并經(jīng)加工處理,再把結(jié)果送出來把一些數(shù)據(jù)送進(jìn)并經(jīng)加工處理,再把結(jié)果送出來.vMATLAB提供的函數(shù)指令大部分都是由函數(shù)文件提供的函數(shù)指令大部分都是由函數(shù)文件定義的定義的.用用M文件自定義函數(shù),開頭為文件自定義函數(shù),開頭為: function yname = fname(xname)yname: 因

5、變量名,因變量名,fname: 函數(shù)名,函數(shù)名,xname:自變量名自變量名. 文件名為文件名為fname,即與函數(shù)名相同,即與函數(shù)名相同. 例3.2 建立一個(gè)函數(shù)文件將變量a,b的值互換,然后在命令窗口調(diào)用該函數(shù)文件。 首先建立函數(shù)文件e2.m: function a,b=e2(a,b) % ee2 c=a;a=b;b=c;調(diào)用:a,b=e2(2,3) 然后在MATLAB的命令窗口調(diào)用該函數(shù)文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=e2(x,y)目錄目錄由上例可以看出函數(shù)文件的一般格式為:function 輸出表函數(shù)名(輸入表) 注釋

6、說明部分 函數(shù)體語句函數(shù)文件的第一行必須是以關(guān)鍵字function開始,表明該文件是函數(shù)文件輸入表是以逗號(hào)相分隔的形參輸出表是函數(shù)的返回值如果返回值只有一個(gè)方括號(hào)可以省略;如果返回值不止一個(gè),輸出表中的各個(gè)變量要以逗號(hào)隔開標(biāo)準(zhǔn)的函數(shù)文件基本結(jié)構(gòu)標(biāo)準(zhǔn)的函數(shù)文件基本結(jié)構(gòu) (1)函數(shù)定義行(關(guān)鍵字)函數(shù)定義行(關(guān)鍵字function)functionout1,out2,. = filename(in1,in2,.)輸入和輸出(返回)的參數(shù)個(gè)數(shù)分別由輸入和輸出(返回)的參數(shù)個(gè)數(shù)分別由nargin和和nargout兩個(gè)兩個(gè)MATLAB保留的變量來給出。保留的變量來給出。 標(biāo)準(zhǔn)的函數(shù)文件基本結(jié)構(gòu)標(biāo)準(zhǔn)的函數(shù)

7、文件基本結(jié)構(gòu) (2)第一行幫助行,即)第一行幫助行,即H1行以(行以(%)開頭,作為)開頭,作為lookfor指令搜索的行,可以使程式易于了解與管指令搜索的行,可以使程式易于了解與管理。特別要說明的是,第一注解行通常用來簡(jiǎn)短說理。特別要說明的是,第一注解行通常用來簡(jiǎn)短說明此明此M檔案的功能,以便檔案的功能,以便lookfor能以關(guān)鍵字比對(duì)能以關(guān)鍵字比對(duì)的方式來找出此的方式來找出此M檔案。檔案。 舉例來說,舉例來說,e2.m的第一注解行包含的第一注解行包含ee2這個(gè)這個(gè)字,因此如果鍵入字,因此如果鍵入lookfor ee2,MATLAB即可列即可列出所有在第一注解行包含出所有在第一注解行包含ee

8、2的的M檔案,因而檔案,因而e2.m也會(huì)被列名在內(nèi)。也會(huì)被列名在內(nèi)。 (3)函數(shù)體說明及有關(guān)注解)函數(shù)體說明及有關(guān)注解,以(以(%)開頭,)開頭,用以說明函數(shù)的作用及有關(guān)內(nèi)容用以說明函數(shù)的作用及有關(guān)內(nèi)容(4)函數(shù)體語句)函數(shù)體語句函數(shù)體內(nèi)使用的除返回和輸入變量這些在函數(shù)體內(nèi)使用的除返回和輸入變量這些在function語句中直接引用的變量以外的所語句中直接引用的變量以外的所有變量都是有變量都是局部變量局部變量,即在該函數(shù)返回之,即在該函數(shù)返回之后,這些變量會(huì)自動(dòng)在后,這些變量會(huì)自動(dòng)在MATLAB的工作空的工作空間中清除掉。如果希望這些中間變量成為間中清除掉。如果希望這些中間變量成為在整個(gè)程序中都

9、起作用的變量,則可以將在整個(gè)程序中都起作用的變量,則可以將它們?cè)O(shè)置為它們?cè)O(shè)置為全局變量全局變量. 例3.3 編寫函數(shù)文件求半徑為r的圓的面積和周長(zhǎng)。 函數(shù)文件如下: function s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圓半徑圓半徑 %s 圓面積圓面積 %p 圓周長(zhǎng)圓周長(zhǎng) s=pi*r*r; p=2*pi*r; 將以上函數(shù)文件以文件名fcircle.m存入c:matlabr11work下,然后在MATLAB命令窗口調(diào)用該函數(shù): s,p=fcircle(10)目錄目錄s

10、 = 13823/44 p = 7100/113 例3.4 建立一個(gè)自變量為m, n的函數(shù),用其構(gòu)造mn矩陣,其元素隨機(jī)取均勻分布在09中的整數(shù): function a=randint(m,n) a=floor(10*rand(m,n);以上兩句存為M文件randint.m. 用法: A=randint(2,3) %z則A為23矩陣,其元素為隨機(jī)取自09中的整數(shù). 函數(shù)M文件中的變量為局部變量,要想在Command Window 或其他M文件中可調(diào)用,必須在這些地方把此變量說明為global: 例如,global a; 注意,M文件必須存放在MATLAB的搜索路徑中才可被調(diào)用. 函數(shù)調(diào)用 函數(shù)

11、調(diào)用的一般格式是: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表)例3.5 利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(,)之間的轉(zhuǎn)換。 函數(shù)文件tran.m: function rho,theta=tran(x,y) rho=sqrt(x*x+y*y); theta=atan(y/x); 調(diào)用tran.m的命令文件main1.m: x=input(Please input x=:); y=input(Please input y=:); rho,the=tran(x,y); rho the目錄目錄 例3.6 利用函數(shù)的遞歸調(diào)用,求n!。 遞歸調(diào)用函數(shù)文件factor.m: function f=fact

12、or(n) if n main2Please input n=:5s = 153 函數(shù)所傳遞參數(shù)的可調(diào)性 在調(diào)用函數(shù)時(shí),MATLAB用兩個(gè)永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)。只要在函數(shù)文件中包含這兩個(gè)變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。目錄目錄 例3.7 nargin用法示例。 函數(shù)文件examp.m: function fout=examp(a,b,c) if nargin=1 fout=a; elseif nargin=2 fout=a+b; elseif nargin=3 fout=(a*b

13、*c)/2; end 命令文件mydemo.m: x=1:3;y=1;2;3; examp(x) examp(x,y) examp(x,y,3)目錄目錄 mydemoans = 1 2 3ans = 2 4 6ans = 213.2 數(shù)據(jù)的輸入輸出3.2.1 input函數(shù) 調(diào)用格式為: A=input(提示信息,選項(xiàng)); 其中,提示信息為一個(gè)字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。 如果在input函數(shù)調(diào)用時(shí)采用s選項(xiàng),則允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令: xm=input(Whats your name?,s) Whats your name?xiaoweixm

14、= xiaowei目錄目錄 3.2.2 disp函數(shù) 調(diào)用格式為 disp(輸出項(xiàng)) 其中輸出項(xiàng)既可以為字符串,也可以為矩陣。 注意:用disp函數(shù)顯示矩陣時(shí)將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的空行。目錄目錄 例3.4 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input(a=?); b=input(b=?); c=input(c=?); d=b*b-4*a*c; x=(-b+sqrt(d)/(2*a),(-b-sqrt(d)/(2*a); disp(x1=,num2str(x(1),x2=,num2str(x(2)目錄目錄disp(x) 顯示顯示x的內(nèi)

15、容,與的內(nèi)容,與x 的區(qū)別是:的區(qū)別是:前者僅顯示前者僅顯示x的內(nèi)容,后者多個(gè)的內(nèi)容,后者多個(gè)x=.a=? 3b=? 4c=? 9x1=-0.66667+1.5986i,x2=-0.66667-1.5986i 3.2.3 pause函數(shù) 其調(diào)用格式為: pause(延遲秒數(shù)) 如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。 若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。目錄目錄MATLAB流程控制流程控制v循環(huán)語句循環(huán)語句 for, whilev條件轉(zhuǎn)移條件轉(zhuǎn)移 if end, if elseif else endv開關(guān)語句開關(guān)語句 switch case

16、v注釋語句注釋語句 %v中斷語句中斷語句 breakv暫停語句暫停語句 pausev回顯語句回顯語句 echo on/off 3.3 選擇結(jié)構(gòu) 3.3.1 if語句 在在MATLAB中,中,if語句有語句有3種格式。種格式。 1.單分支單分支if語句語句 語句格式為:語句格式為: if 條件 語句組 end 當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之當(dāng)條件成立時(shí),則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行后繼續(xù)執(zhí)行if語句的后繼語句,若條件不成立,語句的后繼語句,若條件不成立,則直接執(zhí)行則直接執(zhí)行if語句的后繼語句。語句的后繼語句。目錄目錄 2.雙分支if語句 語句格式為: if 條件 語句組1 else 語

17、句組2 end 當(dāng)條件成立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。目錄目錄 例3.4計(jì)算分段函數(shù)值目錄目錄2cos(1)1,10,10 xxxyx xx x程序如下: x=input(請(qǐng)輸入請(qǐng)輸入x的值的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y請(qǐng)輸入請(qǐng)輸入x的值的值:y = 47.189312 3.多分支if語句語句格式為:if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句組m else 語句組m+1end目錄目錄 例3.

18、5 輸入一個(gè)字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。目錄目錄 c=input(請(qǐng)輸入一個(gè)字符,s); if c=A & c=a& c=0& c *Inner matrix dimensions must agree. 3.4 循環(huán)結(jié)構(gòu) 3.4.1 for語句基本格式基本格式for 循環(huán)變量起始值:步長(zhǎng):終止值循環(huán)變量起始值:步長(zhǎng):終止值 循環(huán)體循環(huán)體end步長(zhǎng)缺省值為步長(zhǎng)缺省值為1 1,可以在正實(shí)數(shù)或負(fù)實(shí)數(shù)范圍內(nèi),可以在正實(shí)數(shù)或負(fù)實(shí)數(shù)范圍內(nèi)任意指定。對(duì)于正數(shù),循環(huán)變量的值大于終止任意指

19、定。對(duì)于正數(shù),循環(huán)變量的值大于終止值時(shí),循環(huán)結(jié)束;對(duì)于負(fù)數(shù),循環(huán)變量的值小值時(shí),循環(huán)結(jié)束;對(duì)于負(fù)數(shù),循環(huán)變量的值小于終止值時(shí),循環(huán)結(jié)束。循環(huán)結(jié)構(gòu)可以嵌套使于終止值時(shí),循環(huán)結(jié)束。循環(huán)結(jié)構(gòu)可以嵌套使用。用。目錄目錄 for i=1:5for i=1:5 for j=1:5 for j=1:5 a(i,j)=1/(i+j-1); a(i,j)=1/(i+j-1); end endendenda=a= 1.0000 0.5000 0.3333 0.2500 0.2000 1.0000 0.5000 0.3333 0.2500 0.2000 0.5000 0.3333 0.2500 0.2000 0.1

20、6670.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 0.2000 0.1667 0.1429 0.1250 0.1111 例例3.8 已知求已知求y的表達(dá)式,的表達(dá)式, 當(dāng)當(dāng)n=100時(shí),求時(shí),求y的值。的值。 目錄目錄在實(shí)際

21、在實(shí)際MATLAB編程中,為提高程序的執(zhí)行速度,常編程中,為提高程序的執(zhí)行速度,常用向量運(yùn)算來代替循環(huán)操作:用向量運(yùn)算來代替循環(huán)操作: n=100; i=1:n; f=1./i.2; y=sum(f)11/ /niyi i程序如下:程序如下: y=0;n=100; for i=1:n y=y+1/i/i; end yy = 2047/1252 例3.9 求定積分 。程序如下: a=0;b=3*pi;n=1000; h=(b-a)/n; x=a:h:b; f=exp(-0.5*x).*sin(x+pi/6); for i=1:n s(i)= (f(i)+f(i+1)*h/2; end s=sum

22、(s) 目錄目錄1320()sin()6xexdx 事實(shí)上,MATLAB提供了有關(guān)數(shù)值積分的標(biāo)準(zhǔn)函數(shù),實(shí)際應(yīng)用中可直接調(diào)用這些函數(shù)求數(shù)值積分。s = 754/837 for語句更一般的格式:語句更一般的格式:for 循環(huán)變量=矩陣表達(dá)式 循環(huán)體語句 end 執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。實(shí)際上,“表達(dá)式1:表達(dá)式2:表達(dá)式3”是一個(gè)僅為一行的矩陣(行向量),因而列向量是單個(gè)數(shù)據(jù)。目錄目錄 例3.10 已知5個(gè)學(xué)生4門功課的成績(jī),求每名學(xué)生的總成績(jī)。程序如下:s=0;a=65,76,56,78;98,83,74,85;76,67,78,79

23、;98,58,42,73;67,89,76,87for k=a s=s+k;enddisp(s);目錄目錄a = 65 76 56 78 98 83 74 85 76 67 78 79 98 58 42 73 67 89 76 87 275 340 300 271 319 3.4.2 while語句 while語句一般用于不能事先確定循環(huán)次數(shù)的情況 while語句的一般格式為: while (條件) 循環(huán)體語句 end 其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)(如圖3.5所示)。目錄目錄While循環(huán)和循環(huán)和for循環(huán)的區(qū)別在于,循環(huán)的區(qū)別在于

24、,while循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的循環(huán)體被執(zhí)行的次數(shù)不是確定的,而的循環(huán)體被執(zhí)行的次數(shù)不是確定的,而for結(jié)構(gòu)中循結(jié)構(gòu)中循環(huán)體的執(zhí)行次數(shù)是確定的。環(huán)體的執(zhí)行次數(shù)是確定的。例 用循環(huán)求解例 用循環(huán)求解 最小的 m用用while循環(huán)語句編寫一個(gè)計(jì)算循環(huán)語句編寫一個(gè)計(jì)算1000以內(nèi)以內(nèi)的的Fibonacci數(shù):數(shù): f=1 1; i=1; while f(i)+f(i+1)1000 f(i+2)=f(i)+f(i+1); i=i+1; end f= 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 例例3.11 產(chǎn)生一個(gè)長(zhǎng)度為的調(diào)和數(shù)列。產(chǎn)生一個(gè)長(zhǎng)度為的調(diào)和數(shù)列。 程序如下:程序如下: X=zeros(1,6); i=1; while i=6 X(i)=1/i; i=i+1; end format rat %使用分?jǐn)?shù)表示數(shù)值使用分?jǐn)?shù)表示數(shù)值 disp(X)目錄目錄Columns 1 through 5 1 1/2 1/3 1/4 1/5 Column 6 1/6 與循環(huán)結(jié)構(gòu)相關(guān)的還有一個(gè)break語句,當(dāng)

溫馨提示

  • 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)論