版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、四川理工學(xué)院數(shù)學(xué)系 柏宏斌 制作 版權(quán)所有2008年11月Matlab 軟件應(yīng)用與開(kāi)發(fā)1沐風(fēng)書(shū)屋e第3章 MATLAB程序設(shè)計(jì)3.1 M文件3.2 程序控制結(jié)構(gòu)3.3 函數(shù)文件3.4 程序舉例3.5 程序調(diào)試2沐風(fēng)書(shū)屋e3.1 M文件3.1.1 M文件概述 用MATLAB語(yǔ)言編寫(xiě)的程序,稱(chēng)為M文件。M文件可以根據(jù)調(diào)用方式的不同分為兩類(lèi): 命令(腳本)文件(Scripts File) 函數(shù)文件(Function File)。3沐風(fēng)書(shū)屋e在主程序里調(diào)用子程序function main()f=input(Input Fahrenheit temperature:)t=f222c(f)function
2、 c=f222c(f)%fath to temp%fdghdgh%dfgdg%djglkdjlgkdjflgkjd%sdfgdgc=5*(f-32)/9;4沐風(fēng)書(shū)屋e例3-1 分別建立命令文件和函數(shù)文件,將華氏溫度f(wàn)轉(zhuǎn)換為攝氏溫度c。程序1: 首先建立命令文件并以文件名f2c.m存盤(pán)。clear; %清除工作空間中的變量f=input(Input Fahrenheit temperature:);c=5*(f-32)/9 然后在MATLAB的命令窗口中輸入f2c,將會(huì)執(zhí)行該命令文件,執(zhí)行情況為:Input Fahrenheit temperature:73c = 22.77785沐風(fēng)書(shū)屋e程序
3、2: 首先建立函數(shù)文件f2c.m。function c=f2c(f)%fath to temp%fdghdgh%dfgdgc=5*(f-32)/9; 然后在MATLAB的命令窗口調(diào)用該函數(shù)文件。clear;y=input(Input Fahrenheit temperature:);x=f2c(y) 輸出情況為:Input Fahrenheit temperature:70c = 21.1111x = 21.11116沐風(fēng)書(shū)屋e3.1.2 M文件的建立與打開(kāi) M文件是一個(gè)文本文件,它可以用任何編輯程序來(lái)建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。1建立新的M文件 建立
4、新的M文件,啟動(dòng)MATLAB文本編輯器有3種方法: (1) 菜單操作: 從MATLAB主窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令,屏幕上將出現(xiàn)MATLAB 文本編輯器窗口。 (2) 命令操作: 在MATLAB命令窗口輸入命令edit,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。 (3) 命令按鈕操作: 單擊MATLAB主窗口工具欄上的New M-File命令按鈕,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤(pán)。7沐風(fēng)書(shū)屋e2打開(kāi)已有的M文件 打開(kāi)已有的M文件,也有3種方法: (1) 菜單操作:從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現(xiàn)O
5、pen對(duì)話(huà)框,在Open對(duì)話(huà)框中選中所需打開(kāi)的M文件。在文檔窗口可以對(duì)打開(kāi)的M文件進(jìn)行編輯修改,編輯完成后,將M文件存盤(pán)。 (2) 命令操作:在MATLAB命令窗口輸入命令:edit 文件名,則打開(kāi)指定的M文件。 (3) 命令按鈕操作:單擊MATLAB主窗口工具欄上的Open File命令按鈕,再?gòu)膹棾龅膶?duì)話(huà)框中選擇所需打開(kāi)的M文件。8沐風(fēng)書(shū)屋e3.2 程序控制結(jié)構(gòu)3.2.1 順序結(jié)構(gòu)1數(shù)據(jù)的輸入 從鍵盤(pán)輸入數(shù)據(jù),則可以使用input函數(shù)來(lái)進(jìn)行,該函數(shù)的調(diào)用格式為: A=input(提示信息,選項(xiàng)); 其中提示信息為一個(gè)字符串,用于提示用戶(hù)輸入什么樣的數(shù)據(jù)。 如果在input函數(shù)調(diào)用時(shí)采用s選
6、項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令: xm=input(Whats your name?,s);9沐風(fēng)書(shū)屋e2數(shù)據(jù)的輸出 MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為 disp(輸出項(xiàng)) 其中輸出項(xiàng)既可以為字符串,也可以為矩陣。10沐風(fēng)書(shū)屋e 例3-2 輸入x,y的值,并將它們的值互換后輸出。 程序如下: x=input(Input x please.); y=input(Input y please.); z=x; x=y; y=z; disp(x); disp(y);11沐風(fēng)書(shū)屋e例3-3 求一元二次方程ax2 +bx+c=0的根。程序
7、如下: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);12沐風(fēng)書(shū)屋e3程序的暫停 暫停程序的執(zhí)行可以使用pause函數(shù),其調(diào)用格式為: pause(n) %延遲n秒 pause %省略延遲時(shí)間,直接使用,則將暫停程序,直到用戶(hù)按任一鍵后程序繼續(xù)執(zhí)行。 若要強(qiáng)行中止程序的運(yùn)行可使用如下命令: Ctrl+C13沐風(fēng)書(shū)屋e3.2.2 選擇結(jié)構(gòu)1if語(yǔ)句 在MATLAB中,if語(yǔ)句有3種格式。 (
8、1) 單分支if語(yǔ)句: if 條件 語(yǔ)句組 end 當(dāng)條件成立時(shí),則執(zhí)行語(yǔ)句組,執(zhí)行完之后繼續(xù)執(zhí)行if語(yǔ)句的后繼語(yǔ)句,若條件不成立,則直接執(zhí)行if語(yǔ)句的后繼語(yǔ)句。14沐風(fēng)書(shū)屋e (2) 雙分支if語(yǔ)句: if 條件 語(yǔ)句組1 else 語(yǔ)句組2 end 當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2,語(yǔ)句組1或語(yǔ)句組2執(zhí)行后,再執(zhí)行if語(yǔ)句的后繼語(yǔ)句。15沐風(fēng)書(shū)屋e 例3-4 計(jì)算分段函數(shù)的值。 程序如下:x=input(請(qǐng)輸入x的值:);if x=A & c=a& c=0& c=9 disp(abs(c)-abs(0); else disp(c); end18沐風(fēng)書(shū)屋e2switch語(yǔ)句 sw
9、itch語(yǔ)句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語(yǔ)句,其語(yǔ)句格式為: switch 表達(dá)式 case 表達(dá)式1 語(yǔ)句組1 case 表達(dá)式2 語(yǔ)句組2 case 表達(dá)式m 語(yǔ)句組m otherwise 語(yǔ)句組n end 當(dāng)表達(dá)式的值等于表達(dá)式1的值時(shí),執(zhí)行語(yǔ)句組1,當(dāng)表達(dá)式的值等于表達(dá)式2的值時(shí),執(zhí)行語(yǔ)句組2,當(dāng)表達(dá)式的值等于表達(dá)式m的值時(shí),執(zhí)行語(yǔ)句組m,當(dāng)表達(dá)式的值不等于case所列的表達(dá)式的值時(shí),執(zhí)行語(yǔ)句組n。當(dāng)任意一個(gè)分支的語(yǔ)句執(zhí)行完后,直接執(zhí)行switch語(yǔ)句的下一句。19沐風(fēng)書(shū)屋e例3-6 某商場(chǎng)對(duì)顧客所購(gòu)買(mǎi)的商品實(shí)行打折銷(xiāo)售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來(lái)表示): price20
10、0 沒(méi)有折扣 200price500 3%折扣 500price1000 5%折扣 1000price2500 8%折扣 2500price sans = 39 48 57 6628沐風(fēng)書(shū)屋e2while語(yǔ)句 while語(yǔ)句的一般格式為: while (條件) 循環(huán)體語(yǔ)句 end 其執(zhí)行過(guò)程為:若條件成立,則執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。29沐風(fēng)書(shū)屋e 例3-11 從鍵盤(pán)輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們之和。程序如下:Sum=0;Cnt=0;Val=input(Enter a number (end in 0):);while (Val
11、=0) Sum=Sum+Val; Cnt=Cnt+1; Val=input(Enter a number (end in 0):);endif (Cnt 0) Sum Mean=Sum/Cntend30沐風(fēng)書(shū)屋e3break語(yǔ)句和continue語(yǔ)句 與循環(huán)結(jié)構(gòu)相關(guān)的語(yǔ)句還有break語(yǔ)句和continue語(yǔ)句。它們一般與if語(yǔ)句配合使用。 break語(yǔ)句用于終止循環(huán)的執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語(yǔ)句時(shí),程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語(yǔ)句的下一語(yǔ)句。 continue語(yǔ)句控制跳過(guò)循環(huán)體中的某些語(yǔ)句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語(yǔ)句時(shí),程序?qū)⑻^(guò)循環(huán)體中所有剩下的語(yǔ)句,繼續(xù)下一次循環(huán)。31沐風(fēng)書(shū)屋e例3-1
12、2 求100,200之間第一個(gè)能被21整除的整數(shù)。程序如下:for n=100:200if rem(n,21)=0 continueendbreakendn32沐風(fēng)書(shū)屋e4循環(huán)的嵌套 如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱(chēng)為循環(huán)的嵌套,或稱(chēng)為多重循環(huán)結(jié)構(gòu)。 例3-13 若一個(gè)數(shù)等于它的各個(gè)真因子之和,則稱(chēng)該數(shù)為完數(shù),如6=1+2+3,所以6是完數(shù)。求1,500之間的全部完數(shù)。for m=1:500 s=0; for k=1:m/2 if rem(m,k)=0 s=s+k; end end if m=s disp(m); endend33沐風(fēng)書(shū)屋e 3.3 函數(shù)文件3.3.1 函數(shù)文件
13、的基本結(jié)構(gòu) 函數(shù)文件由function語(yǔ)句引導(dǎo),其基本結(jié)構(gòu)為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說(shuō)明部分(不能有空行) 函數(shù)體語(yǔ)句 其中以function開(kāi)頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。 函數(shù)名的命名規(guī)則與變量名相同,由字母開(kāi)頭,包括字母、數(shù)字、下劃線(xiàn),變量的長(zhǎng)度不能超過(guò)系統(tǒng)函數(shù)namelengthmax 所規(guī)定的值(63)。名字不能與MATLAB預(yù)留關(guān)鍵字同(用iskeyword可列出所有的關(guān)鍵字) 輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于一個(gè)時(shí),則應(yīng)該用方括號(hào)括起來(lái)。34沐風(fēng)書(shū)屋e 例3-14 編寫(xiě)函數(shù)文件求半徑為r的圓的面
14、積和周長(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)%2006年3月15日編s=pi*r*r;p=2*pi*r;35沐風(fēng)書(shū)屋e3.3.2 函數(shù)調(diào)用 函數(shù)調(diào)用的一般格式是: 輸出實(shí)參表=函數(shù)名(輸入實(shí)參表) 要注意的是,函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)的順序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參的順序、個(gè)數(shù)一致,否則會(huì)出錯(cuò)。 函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。36沐風(fēng)書(shū)屋e 例3-15 利用函數(shù)
15、文件,實(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);rhothe 在MATLAB中,函數(shù)可以嵌套調(diào)用,即一個(gè)函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自身。 一個(gè)函數(shù)調(diào)用它自身稱(chēng)為函數(shù)的遞歸調(diào)用。37沐風(fēng)書(shū)屋e 上面問(wèn)題也可以在如下test.m函數(shù)文件里調(diào)用子程序:funct
16、ion rho,the=testx=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rho;the; function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);38沐風(fēng)書(shū)屋e 例3-16 利用函數(shù)的遞歸調(diào)用,求n!。 n!本身就是以遞歸的形式定義的: 顯然,求n!需要求(n-1)!,這時(shí)可采用遞歸調(diào)用。遞歸調(diào)用函數(shù)文件factor.m如下:function f=factor(n)if n=1 f=1;else f=factor(n-1)*n;
17、 %遞歸調(diào)用求(n-1)!end39沐風(fēng)書(shū)屋e3.3.3 函數(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)行處理。40沐風(fēng)書(shū)屋e 例3-17 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*c)/2;end 命令文件
18、mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3)41沐風(fēng)書(shū)屋e3.3.4 全局變量與局部變量 全局變量用global命令定義,格式為: global 變量名例3-18 全局變量應(yīng)用示例。 先建立函數(shù)文件wadd.m,該函數(shù)將輸入的參數(shù)加權(quán)相加。function f=wadd(x,y)global ALPHA BETAf=ALPHA*x+BETA*y; 在命令窗口中輸入:global ALPHA BETAALPHA=1;BETA=2;s=wadd(1,2)42沐風(fēng)書(shū)屋e3.4 程序舉例例3-19 猜數(shù)游戲。首先由計(jì)算機(jī)產(chǎn)生1,100之間的
19、隨機(jī)整數(shù),然后由用戶(hù)猜測(cè)所產(chǎn)生的隨機(jī)數(shù)。根據(jù)用戶(hù)猜測(cè)的情況給出不同提示,如猜測(cè)的數(shù)大于產(chǎn)生的數(shù),則顯示“High”,小于則顯示“Low”,等于則顯示“You won”,同時(shí)退出游戲。用戶(hù)最多可以猜7次。43沐風(fēng)書(shū)屋e猜數(shù)游戲源代碼x=fix(1+rand(1)*(100-1); for i=1:7 y=input(請(qǐng)輸入你猜的數(shù):); if y=x disp(You won) break; elseif yx disp(high) if i=7 disp(Game over!); end endend44沐風(fēng)書(shū)屋e例3-20 Fibonacci數(shù)列定義如下:f1=1f2=1fn=fn-1+fn
20、-2 (n2)求Fibonacci數(shù)列的第20項(xiàng)。45沐風(fēng)書(shū)屋eFibonacci數(shù)列源程序1:fibo_1.mfunction fn=fibo_1(n)if n=1 fn=1;elseif n=2 fn=1;else fn=fibo_1(n-1)+fibo_1(n-2);end46沐風(fēng)書(shū)屋eFibonacci數(shù)列源程序1:fibo_2.mfunction fn=fibo_2(n)fn(1)=1;fn(2)=1;for i=3:n fn(i)=fn(i-1)+fn(i-2);end47沐風(fēng)書(shū)屋eFibonacci數(shù)列求解主程序:Fibo_test.mn=input(請(qǐng)輸入要求的Fibonacci數(shù)列
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026中國(guó)貿(mào)促會(huì)直屬單位招聘工作人員10人備考題庫(kù)及參考答案詳解一套
- 2026年土壤穩(wěn)定性與邊坡滑坡機(jī)理研究
- 2026年過(guò)往成功案例對(duì)新項(xiàng)目勘察的啟示
- 2026年太陽(yáng)能熱水器中的流體力學(xué)分析
- 2026廣東省中醫(yī)院貴州醫(yī)院招聘13人備考題庫(kù)附參考答案詳解(能力提升)
- 2025年環(huán)保領(lǐng)域碳交易市場(chǎng)分析報(bào)告
- 2026一季度重慶市屬事業(yè)單位考核招聘310備考題庫(kù)帶答案詳解(a卷)
- 2026一季度重慶市屬事業(yè)單位公開(kāi)招聘242人備考題庫(kù)帶答案詳解(b卷)
- 2026年投資者關(guān)系投資并購(gòu)框架協(xié)議
- 貴州省黔東南州2026屆高三上數(shù)學(xué)期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 質(zhì)量環(huán)境及職業(yè)健康安全三體系風(fēng)險(xiǎn)和機(jī)遇識(shí)別評(píng)價(jià)分析及控制措施表(包含氣候變化)
- 四川省石室中學(xué)2025-2026學(xué)年高一上數(shù)學(xué)期末教學(xué)質(zhì)量檢測(cè)試題含解析
- 二年級(jí)數(shù)學(xué)計(jì)算題專(zhuān)項(xiàng)練習(xí)1000題匯編集錦
- (完整版)小學(xué)一年級(jí)20以?xún)?nèi)加減法混合運(yùn)算3000題(每頁(yè)100題-已排版)
- GB/T 46509-2025玩具中揮發(fā)性有機(jī)化合物釋放量的測(cè)定
- 總公司與分公司承包協(xié)議6篇
- 鋼結(jié)構(gòu)防火涂料應(yīng)用技術(shù)規(guī)程TCECS 24-2020
- 煉鋼生產(chǎn)線(xiàn)自動(dòng)化控制系統(tǒng)建設(shè)方案
- 塔吊安裝安全培訓(xùn)教育課件
- 民事答辯狀(信用卡糾紛)樣式
- 設(shè)備安裝施工應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論