




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第3章MATLAB程序設(shè)計(jì) 【本章學(xué)習(xí)目標(biāo)】 掌握建立和執(zhí)行M文件的方法。 掌握利用if語(yǔ)句、switch語(yǔ)句實(shí)現(xiàn)選擇結(jié)構(gòu)的方法。 掌握利用for語(yǔ)句、while語(yǔ)句實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的方法。 熟悉利用向量運(yùn)算來(lái)代替循環(huán)操作的方法。 掌握定義和調(diào)用MATLAB函數(shù)的方法。3.1 M文件 交互式的命令執(zhí)行方式 M文件的程序執(zhí)行方式3.1.1 M文件的建立與打開(kāi)1建立新的M文件(1)命令按鈕操作。(2)菜單操作。(3)命令操作。2打開(kāi)已有的M文件 3.1.2 M文件的分類(lèi)M文件可以根據(jù)調(diào)用方式的不同分為兩類(lèi):命令文件(Script File)和函數(shù)文件(Function File)。(1)命令文件沒(méi)有輸
2、入?yún)?shù),也不返回輸出參數(shù),而函數(shù)文件可以帶輸入?yún)?shù),也可返回輸出參數(shù)。(2)命令文件對(duì)MATLAB工作空間中的變量進(jìn)行操作,文件中所有命令的執(zhí)行結(jié)果也完全返回到工作空間中,而函數(shù)文件中定義的變量為局部變量,當(dāng)函數(shù)文件執(zhí)行完畢時(shí),這些變量被清除。(3)命令文件可以直接運(yùn)行,在MATLAB命令窗口輸入命令文件的名字,就會(huì)順序執(zhí)行命令文件中的命令,而函數(shù)文件不能直接運(yùn)行,而要以函數(shù)調(diào)用的方式來(lái)調(diào)用它?!纠?.1】建立一個(gè)M文件,其功能是:用兩個(gè)實(shí)變量R、M生成復(fù)變量RM,然后運(yùn)行該M文件。程序1:建立一個(gè)命令文件。建立命令文件setcomp.mclear;R=1,2,3;4,5,6;M=11,12,
3、13;14,15,16;RM=R+i*M然后在MATLAB的命令窗口中輸入setcomp,將會(huì)執(zhí)行該命令文件,輸出為RM = 1.0000 +11.0000i 2.0000 +12.0000i 3.0000 +13.0000i 4.0000 +14.0000i 5.0000 +15.0000i 6.0000 +16.0000i3.2 程序控制結(jié)構(gòu)3.2.1 順序結(jié)構(gòu)順序結(jié)構(gòu)是指按照程序中語(yǔ)句的排列順序依次執(zhí)行,一般涉及數(shù)據(jù)的輸入、數(shù)據(jù)的計(jì)算或處理、數(shù)據(jù)的輸出等內(nèi)容。1數(shù)據(jù)的輸入從鍵盤(pán)輸入數(shù)據(jù),則可以使用input函數(shù)來(lái)進(jìn)行,該函數(shù)的調(diào)用格式為A=input(提示信息,選項(xiàng));其中,“提示信息”
4、為一個(gè)字符串,用于提示用戶(hù)輸入什么樣的數(shù)據(jù)。例如,從鍵盤(pán)輸入A矩陣,可以采用下面的命令來(lái)完成:A=input(輸入A矩陣:);如果在input函數(shù)調(diào)用時(shí)采用s選項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:xm=input(Whats your name?,s);2數(shù)據(jù)的輸出MATLAB提供的命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為disp(輸出項(xiàng))其中,輸出項(xiàng)既可以為字符串,也可以為矩陣。例如:A=Hello,World!;disp(A)【例3.2】求一元二次方程ax2 + bx+ c = 0的根。由于MATLAB能進(jìn)行復(fù)數(shù)運(yùn)算,所以不需要判斷方程的判別式,而直
5、接根據(jù)求根公式求根。程序如下: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);3程序的暫停當(dāng)程序運(yùn)行時(shí),為了查看程序的中間結(jié)果或者觀看輸出的圖形,有時(shí)需要暫停程序的執(zhí)行。這時(shí)可以使用pause函數(shù),其調(diào)用格式為pause(延遲秒數(shù))如果省略延遲時(shí)間,則將暫停程序,直到用戶(hù)按任一鍵后程序繼續(xù)執(zhí)行。若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C組合鍵。3.2.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)是根據(jù)給定的條件成立
6、或不成立,分別執(zhí)行不同的語(yǔ)句。1if語(yǔ)句(1)單分支if語(yǔ)句:if 條件 語(yǔ)句塊end當(dāng)條件成立時(shí),則執(zhí)行語(yǔ)句組,執(zhí)行完之后繼續(xù)執(zhí)行if語(yǔ)句的后繼語(yǔ)句,若條件不成立,則直接執(zhí)行if語(yǔ)句的后繼語(yǔ)句。(2)雙分支if語(yǔ)句:if 條件 語(yǔ)句塊1else 語(yǔ)句塊2end當(dāng)條件成立時(shí),執(zhí)行語(yǔ)句組1,否則執(zhí)行語(yǔ)句組2,語(yǔ)句組1或語(yǔ)句組2執(zhí)行后,再執(zhí)行if語(yǔ)句的后繼語(yǔ)句?!纠?.3】計(jì)算分段函數(shù) :程序如下:x=input(請(qǐng)輸入x的值:);if x=A & c=a& c=0& c=9 disp(str2num(c)2);else disp(c);end2switch語(yǔ)句switch
7、語(yǔ)句根據(jù)表達(dá)式的取值不同,分別執(zhí)行不同的語(yǔ)句,其語(yǔ)句格式為switch 表達(dá)式 case 結(jié)果表1 語(yǔ)句塊1 case 結(jié)果表2 語(yǔ)句塊2 case 結(jié)果表n 語(yǔ)句塊n otherwise 語(yǔ)句塊n+1 end 圖2.3 switch語(yǔ)句的執(zhí)行過(guò)程switch子句后面的表達(dá)式應(yīng)為一個(gè)標(biāo)量或一個(gè)字符串,case子句后面的結(jié)果不僅可以為一個(gè)標(biāo)量或一個(gè)字符串,而且還可以為一個(gè)將多個(gè)結(jié)果用大括號(hào)括起來(lái)的單元數(shù)據(jù)(Cell)。如果case子句后面的結(jié)果為一個(gè)單元數(shù)據(jù),則表達(dá)式的值等于該單元數(shù)據(jù)中的某個(gè)元素時(shí),執(zhí)行相應(yīng)的語(yǔ)句組。 【例3.5】將例3.4改用switch語(yǔ)句實(shí)現(xiàn)。c=input(請(qǐng)輸入一個(gè)字
8、符:,s);cc=abs(c);switch(cc) case num2cell(abs(A):abs(Z) disp(lower(c); case num2cell(abs(a):abs(z) disp(upper(c); case num2cell(abs(0):abs(9) disp(abs(c)-abs(0)2); otherwise disp(c);endnum2cell函數(shù)是將數(shù)值矩陣轉(zhuǎn)化為單元矩陣,num2cell(1:5)等價(jià)于1,2,3,4,5。3try語(yǔ)句try語(yǔ)句是一種試探性執(zhí)行語(yǔ)句,為開(kāi)發(fā)人員提供了一種捕獲錯(cuò)誤的機(jī)制,其語(yǔ)句格式為try 語(yǔ)句塊1catch 語(yǔ)句塊2en
9、dtry語(yǔ)句先試探性執(zhí)行語(yǔ)句塊1,如果語(yǔ)句塊1在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語(yǔ)句塊2?!纠?.6】矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會(huì)出錯(cuò)。先求兩矩陣的乘積,若出錯(cuò),則自動(dòng)轉(zhuǎn)去求兩矩陣的點(diǎn)乘。A=input(請(qǐng)輸入A矩陣:);B=input(請(qǐng)輸入B矩陣:);lasterr(); %清除原有的錯(cuò)誤信息try C=A*B;catch C=A.*B;endCdisp(lasterr) %顯示出錯(cuò)原因3.2.3 循環(huán)結(jié)構(gòu)循環(huán)是指按照給定的條件,重復(fù)執(zhí)行指定的語(yǔ)句。1for語(yǔ)句圖3.4 for語(yǔ)句執(zhí)行過(guò)程for語(yǔ)句的格式為for 循環(huán)變量=表達(dá)式1:表達(dá)
10、式2:表達(dá)式3 循環(huán)體語(yǔ)句end其中,表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)變量的終值。步長(zhǎng)為1時(shí),表達(dá)式2可以省略。【例3.7】一個(gè)3位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱(chēng)該數(shù)為水仙花數(shù)。輸出全部水仙花數(shù)。程序如下:shu=; %用于存放結(jié)果,先賦空值for m=100:999 m1=fix(m/100); %求m的百位數(shù)字 m2=rem(fix(m/10),10); %求m的十位數(shù)字 m3=rem(m,10); %求m的個(gè)位數(shù)字 if m=m1*m1*m1+m2*m2*m2+m3*m3*m3 shu=shu,m; %存入結(jié)果 endendshufor語(yǔ)句的循環(huán)
11、變量可以是一個(gè)列向量。for語(yǔ)句更一般的格式為for 循環(huán)變量=矩陣表達(dá)式 循環(huán)體語(yǔ)句end執(zhí)行過(guò)程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句,直至各列元素處理完畢?!纠?.9】寫(xiě)出下列程序的執(zhí)行結(jié)果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a s=s+k;enddisp(s);該程序的功能是求矩陣各行元素之和,執(zhí)行結(jié)果是: 39 48 57 662while語(yǔ)句while語(yǔ)句的一般格式為while(條件) 循環(huán)體語(yǔ)句end【例3.10】求使 最小的n。程序如下:y=0;n=0;while (y1 & n1) | (m
12、=1 & n=1) error(Input must be a vector)ends=sum(v); %求向量和m=s/length(v); %求向量平均值將以上函數(shù)文件以文件名fvector.m存盤(pán),然后在MATLAB命令窗口調(diào)用該函數(shù):s,p=fvector(1:10)(2)注釋說(shuō)明包括如下3部分內(nèi)容。緊隨函數(shù)文件引導(dǎo)行之后以%開(kāi)頭的第一注釋行。這一行一般包括大寫(xiě)的函數(shù)文件名和函數(shù)功能簡(jiǎn)要描述,供lookfor關(guān)鍵詞查詢(xún)和help在線幫助用。第一注釋行及之后連續(xù)的注釋行。通常包括函數(shù)輸入輸出參數(shù)的含義及調(diào)用格式說(shuō)明等信息,構(gòu)成全部在線幫助文本。與在線幫助文本相隔一空行的注釋行。包
13、括函數(shù)文件編寫(xiě)和修改的信息,如作者、修改日期、版本等內(nèi)容,用于軟件檔案管理。采用help命令或lookfor命令可以顯示出注釋說(shuō)明部分的內(nèi)容,其功能和一般MATLAB函數(shù)的幫助信息是一致的。利用help命令可查詢(xún)fvector函數(shù)的注釋說(shuō)明:help fvector再用lookfor命令在第一注釋行查詢(xún)指定的關(guān)鍵詞:lookfor fvector(3)如果在函數(shù)文件中插入了return語(yǔ)句,則執(zhí)行到該語(yǔ)句就結(jié)束函數(shù)的執(zhí)行,程序流程轉(zhuǎn)至調(diào)用該函數(shù)的位置。3.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ù)一致,否
14、則會(huì)出錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能?!纠?.14】利用函數(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=atan2(y,x);調(diào)用tran.m的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe【例3.15】利用函數(shù)的遞歸調(diào)用,求n!。n!本身就是以遞歸的形式定義的:顯然,求n!需要求(
15、n1)!,這時(shí)可采用遞歸調(diào)用。遞歸調(diào)用函數(shù)文件factor.m如下:function f=factor(n)if n,利用命令操作方式來(lái)實(shí)現(xiàn)程序調(diào)試。3.4.2 MATLAB調(diào)試菜單1控制單步運(yùn)行(1)Step:?jiǎn)尾竭\(yùn)行。每單擊一次,程序運(yùn)行一次,但不進(jìn)入函數(shù)。(2)Step In:?jiǎn)尾竭\(yùn)行。遇到函數(shù)時(shí)進(jìn)入函數(shù)內(nèi),仍單步運(yùn)行。(3)Step Out:停止單步運(yùn)行。如果是在函數(shù)中,跳出函數(shù);如果不在函數(shù)中,直接運(yùn)行到下一個(gè)斷點(diǎn)處。(4)Go Until Cursor:直接運(yùn)行到光標(biāo)所在的位置。2斷點(diǎn)操作(1)Set/Clear Breakpoint:設(shè)置或清除斷點(diǎn)。(2)Set/Modify Conditional Breakpoint:設(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 耳目一新2025年主管護(hù)師考試試題及答案
- 主管護(hù)師考試經(jīng)驗(yàn)交流試題及答案
- 實(shí)戰(zhàn)模擬執(zhí)業(yè)藥師考試練習(xí)試題及答案
- 護(hù)理專(zhuān)業(yè)新舊考點(diǎn)對(duì)比研究試題及答案
- 自考行政管理社會(huì)評(píng)估試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試國(guó)際標(biāo)準(zhǔn)對(duì)比試題及答案
- 護(hù)理學(xué)科綜合素養(yǎng)考核題及答案2025年
- 行政管理專(zhuān)科公共服務(wù)監(jiān)測(cè)試題及答案
- 護(hù)理服務(wù)質(zhì)量提升試題及答案總結(jié)
- 行政管理培訓(xùn)考試試題發(fā)布及答案
- (二模)2025年汕頭市高三普通高考第二次模擬考試英語(yǔ)試卷(含答案)
- 山東2025年山東省公共衛(wèi)生臨床中心招聘博士人才60筆試歷年參考題庫(kù)附帶答案詳解
- 2024年臺(tái)州市委統(tǒng)戰(zhàn)部下屬事業(yè)單位選聘筆試真題
- 山西太原事業(yè)單位考試《行測(cè)》模擬題帶答案2024年
- 2025年中考英語(yǔ)第一次模擬考試(蘇州卷)(原卷版)
- 福州一號(hào)線盾構(gòu)法地鐵工程整體施工組織設(shè)計(jì)
- 公務(wù)員考試-經(jīng)濟(jì)基礎(chǔ)知識(shí)模擬題-計(jì)量經(jīng)濟(jì)學(xué)-協(xié)整與誤差修正模型
- 資源與運(yùn)營(yíng)管理-第一次形考任務(wù)-國(guó)開(kāi)-參考資料
- 五年級(jí)下冊(cè)數(shù)學(xué)教案 - 8.1《復(fù)式條形統(tǒng)計(jì)圖》 北師大版
- 2025年二建《建筑工程管理與實(shí)務(wù)》考前必刷必練題庫(kù)500題(含真題、重點(diǎn)題)
- 2025云南師范大學(xué)輔導(dǎo)員考試題庫(kù)
評(píng)論
0/150
提交評(píng)論