第3章 基本編程_第1頁(yè)
第3章 基本編程_第2頁(yè)
第3章 基本編程_第3頁(yè)
第3章 基本編程_第4頁(yè)
第3章 基本編程_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(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章 基本編程教學(xué)目標(biāo)l熟悉熟悉 MATLAB 的編程環(huán)境的編程環(huán)境l掌握掌握 MATLAB 的變量類型的變量類型l掌握掌握 MATLAB 中的流程控制語(yǔ)句中的流程控制語(yǔ)句l了解了解 MATLAB 中的錯(cuò)誤處理中的錯(cuò)誤處理l了解了解 MATLAB 程序調(diào)試方法程序調(diào)試方法l了解了解 MATLAB 代碼優(yōu)化方法代碼優(yōu)化方法教學(xué)內(nèi)容lM文本文件介紹文本文件介紹 l函數(shù)流程控制函數(shù)流程控制 l函數(shù)變量函數(shù)變量 lMATLAB 編程錯(cuò)誤處理編程錯(cuò)誤處理 l調(diào)試程序調(diào)試程序 l優(yōu)化程序優(yōu)化程序 M文本文件介紹l選擇HOME | New | Script選項(xiàng)進(jìn)入文本編輯器界面建立新的M文件M文本文件介

2、紹(1)在軟件操作界面選擇HOME|Open(2)在命令窗口中輸入edit+文件名lMATLAB中有大量的函數(shù),包括: 內(nèi)建函數(shù)(C語(yǔ)言編寫) 自帶函數(shù)(M文件)編輯已有的M文件M文件的分類函數(shù)functions腳本script 函數(shù)式M文件和腳本式M文件都是以.m作為擴(kuò)展名的文本文件,在文本編輯器中創(chuàng)建文件。二者在語(yǔ)法和使用上略有區(qū)別。腳本l腳本式 M文件可包含MATLAB的各種命令,類似DOS系統(tǒng)中的批處理文件l腳本文件的運(yùn)行:(1)EDITOR|RUN(2)在命令窗口中直接鍵入該M文件的文件名(3)運(yùn)行腳本文件時(shí),需要將腳本所在的目錄設(shè)置為當(dāng)前工作目錄。腳本例:建立例:建立一個(gè)腳本一個(gè)腳

3、本M文件將變量文件將變量a, b的值互換,然后運(yùn)行的值互換,然后運(yùn)行該腳本文件該腳本文件。(1)首先建立腳本文件并以exch.m存盤clear;a=1:10;b=11 12 13 14;15 16 17 18;c=a;a=b;b=c;ab腳本(2)然后在MATLAB的命令窗口中輸入exch,將會(huì)執(zhí)行該命令文件,輸出為:a = 11 12 13 14 15 16 17 18b = 1 2 3 4 5 6 7 8 9 10函數(shù)l函數(shù)式函數(shù)式M文件文件 function 返回變量列表=函數(shù)名(輸入變量列表) 注釋說明語(yǔ)句段 函數(shù)體第一行為function語(yǔ)句; function后定義函數(shù)名和輸入輸出

4、參數(shù),函數(shù)被調(diào)用時(shí)按此格式執(zhí)行;文件名必須與函數(shù)名一一對(duì)應(yīng);函數(shù)執(zhí)行完后,只保留返回結(jié)果,不保留中間過程;函數(shù)例例 :建立:建立一個(gè)函數(shù)一個(gè)函數(shù)M文件將變量文件將變量a, b的值互換,然后在的值互換,然后在命令窗口調(diào)用該函數(shù)文件命令窗口調(diào)用該函數(shù)文件。(1)建立函數(shù)文件并以fexch.m存盤 functiona,b=fexch(a,b) c=a;a=b;b=c;函數(shù)輸出結(jié)果:x = 11 12 13 14 15 16 17 18y = 1 2 3 4 5 6 7 8 9 10在MATLAB的命令窗口中調(diào)用該函數(shù)文件:clear;x=1:10;y=11 12 13 14;15 16 17 18;

5、 %輸入?yún)?shù),也就是給函數(shù)fexch(a,b)中的形參a,b賦具體值x,y=fexch(x,y) %調(diào)用函數(shù)fexch()函數(shù)與腳本函數(shù)函數(shù)l既有輸入?yún)?shù),又有輸出參數(shù)l函數(shù)中的變量(除特殊聲明外)都是局部變量l函數(shù)名必須與文件名相同l函數(shù)被調(diào)用時(shí),MATLAB會(huì)為它開辟臨時(shí)工作空間,當(dāng)執(zhí)行完函數(shù)或return命令時(shí)結(jié)束函數(shù)的運(yùn)行,返回輸出值,同時(shí)清空臨時(shí)工作空間。腳本腳本l不用輸入?yún)?shù),也沒有輸出參數(shù)l腳本中的變量都是全局變量l文件名任意指定l在函數(shù)中調(diào)用腳本文件,等價(jià)于在函數(shù)中將腳本文件的內(nèi)容粘貼在調(diào)用的位置。變量類型MATLAB中的特殊變量中的特殊變量變量類型nargin的用法的用法lf

6、unctiona,b,c=example(x1,x2,x3,x4)la=0;b=0;lif(nargin=1)lc=x1;lelseif (nargin=2)l c=3;lelseif(nargin2)l c=5;lendnargout的用法的用法lfunctiona,b,n=fexch(a,b)lif(nargout=3)l n=5;l c=a;a=b;b=c;lend變量作用域l函數(shù)內(nèi)部定義的變量均為局部變量,如果需要使用全局變量,則應(yīng)當(dāng)使用命令global定義,并且在任何使用該全局變量的函數(shù)中都應(yīng)加以定義。l定義全局變量時(shí),變量之間必須用空格分隔,不能以逗號(hào)分隔。程序控制結(jié)構(gòu)l順序結(jié)構(gòu)順

7、序結(jié)構(gòu) l循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) l選擇結(jié)構(gòu)選擇結(jié)構(gòu)l其他流程控制函數(shù)其他流程控制函數(shù) 順序結(jié)構(gòu)l順序結(jié)構(gòu)程序在編譯時(shí),按照程序的物理位置順序執(zhí)行,這種程序容易編制,但是結(jié)構(gòu)單一,能夠?qū)崿F(xiàn)的功能有限。 x=12;y=6;z=18;sum=x+y+z;sub=x-y-z 將以上程序以文件名sequence.m保存并在命令窗口中輸入sequence,并按Enter鍵確認(rèn),輸出結(jié)果:sum=36sun=-12循環(huán)結(jié)構(gòu)lfor 語(yǔ)句語(yǔ)句 for 循環(huán)變量 = 表達(dá)式1:表達(dá)式2:表達(dá)式3 執(zhí)行代碼塊 end 以表達(dá)式1的值為起點(diǎn),表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為終點(diǎn)。 for 語(yǔ)句一定要有end結(jié)束標(biāo)志;

8、 循環(huán)語(yǔ)句中要用“;”防止中間結(jié)果的輸出; 書寫時(shí)采用鋸齒結(jié)構(gòu)以增加可讀性;循環(huán)結(jié)構(gòu)例 已知當(dāng)n=100時(shí),求y的值。程序如下:程序如下:y=0;n=100;for i=1:n y=y+1/i/i;endy運(yùn)行結(jié)果如下:運(yùn)行結(jié)果如下:y = 1.6350循環(huán)結(jié)構(gòu)l求求mysum=0; for i=1:1:100 mysum=mysum+i; end; mysum循環(huán)結(jié)構(gòu)lwhile 語(yǔ)句語(yǔ)句 將相同的代碼塊執(zhí)行多次,但是次數(shù)并不預(yù)先指定,當(dāng) while 的條件表達(dá)式為真時(shí),執(zhí)行代碼塊,直到條件表達(dá)式為假。while 語(yǔ)句結(jié)構(gòu):while 條件表達(dá)式 執(zhí)行代碼塊end 循環(huán)結(jié)構(gòu)mysum=0;i

9、=1; while (i=100) mysum=mysum+i; i=i+1; end mysum 例:求循環(huán)結(jié)構(gòu)function output=function3(p,n)num=1;result1=1;tmp1=1;result2=1;tmp2=1;while numA(3)&A(1)+A(3)A(2)&A(2)+A(3)A(1) p=( A(1)+A(2)+A(3)/2; s=sqrt(p*(p-A(1)*(p-A(2)*(p-A(3); disp(s); else disp(不能構(gòu)成一個(gè)三角形。) end運(yùn)行結(jié)果如下:請(qǐng)輸入三角形的三條邊:6 8 10 24選擇結(jié)構(gòu)l當(dāng)

10、判斷包含多個(gè)選擇時(shí),可以采用當(dāng)判斷包含多個(gè)選擇時(shí),可以采用elseif 語(yǔ)句,結(jié)構(gòu)為:語(yǔ)句,結(jié)構(gòu)為:if 表達(dá)式1 執(zhí)行代碼塊1elseif 表達(dá)式2 執(zhí)行代碼塊2elseif .else 執(zhí)行代碼塊endl其中可以包含任意多個(gè)其中可以包含任意多個(gè) elseif 語(yǔ)句。語(yǔ)句。 2022年5月10日第35頁(yè)選擇結(jié)構(gòu)l例:輸入一個(gè)字符,若為大寫字母則輸出其后繼字符,例:輸入一個(gè)字符,若為大寫字母則輸出其后繼字符,若為小寫字母則輸出其前導(dǎo)字符,若為數(shù)字字符則輸若為小寫字母則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。c=input(請(qǐng)

11、輸入一個(gè)字符請(qǐng)輸入一個(gè)字符,s);if c=A&c=a&c=0&c=9 disp(abs(c)-abs(0);else disp(c);end選擇結(jié)構(gòu)lswitch-case-otherwiseswitch 表達(dá)式 case 值1 執(zhí)行代碼塊1; case 值2 執(zhí)行代碼塊2; . case 值n 執(zhí)行代碼塊n; otherwise 執(zhí)行代碼塊end選擇結(jié)構(gòu)例:某商場(chǎng)對(duì)顧客所購(gòu)買的商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下例:某商場(chǎng)對(duì)顧客所購(gòu)買的商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下(商品價(jià)格用(商品價(jià)格用price來表示):來表示): price500 沒有折扣沒有折扣 500 price100

12、0 5折扣折扣 1000 price2500 8折扣折扣 2500 price5000 10折扣折扣 5000 price 14折扣折扣求所銷售商品的實(shí)際銷售價(jià)格。求所銷售商品的實(shí)際銷售價(jià)格。選擇結(jié)構(gòu)price=input(請(qǐng)輸入商品價(jià)格請(qǐng)輸入商品價(jià)格:);pricec=fix(price/500)switch c case 0 rate=0; case 1 rate=5/100; case 2 rate=8/100; case 3 rate=8/100; case 4 rate=8/100;case 5 rate=10/100; case 6 rate=10/100; case 7 rate

13、=10/100; case 8 rate=10/100; case 9 rate=10/100; otherwise rate=14/100;endprice=price*(1-rate)其他流程控制函數(shù) continue:continue 語(yǔ)句通常用在循環(huán)控制中,用于結(jié)束當(dāng)次循環(huán),繼續(xù)執(zhí)行下一次循環(huán),但是不結(jié)束當(dāng)前循環(huán)。一般 continue 語(yǔ)句與 if 語(yǔ)句相結(jié)合,當(dāng)滿足一定的條件時(shí),執(zhí)行 continue 語(yǔ)句。break:用于循環(huán)控制,中斷當(dāng)前循環(huán)。 break 用于跳出當(dāng)前循環(huán),不再執(zhí)行該循環(huán)的任何操作。return:結(jié)束該程序的執(zhí)行,返回到調(diào)用函數(shù)或者鍵盤其他流程控制函數(shù)l中斷命

14、令中斷命令 break例:雞兔同籠,頭有36,腳共100,求雞兔各多少?i=1;while i if rem(100-i*2,4)=0&(i+(100-i*2)/4)=36 break; end i=i+1;endchicken=irabit=(100-2*i)/4其他流程控制函數(shù)lcontinue語(yǔ)句語(yǔ)句function output=function5(x,n)num=1;while num=n x_tmp=rand(1)*x; if x_tmp0.8*x continue; else output(num)=x_tmp; num=num+1; end end其他流程控制函數(shù)ltr

15、ycatchend語(yǔ)句語(yǔ)句 trycatch 語(yǔ)句可以包容程序運(yùn)行中的錯(cuò)誤,并返回錯(cuò)誤類型try 運(yùn)行代碼塊1catch 運(yùn)行代碼塊2endlasterr 首先執(zhí)行語(yǔ)句段1,如果在執(zhí)行過程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給lasterr變量,并放棄該段語(yǔ)句,轉(zhuǎn)而執(zhí)行語(yǔ)句段2中的語(yǔ)句。人機(jī)交互語(yǔ)句l echo語(yǔ)句 echo on 打開命令式文件的回應(yīng)命令; echo off 關(guān)閉回應(yīng)命令; echo file on 使file文件的命令在執(zhí)行中被顯示; echo file off 關(guān)閉file文件的命令執(zhí)行中的回應(yīng); echo on all 顯示所有執(zhí)行文件的執(zhí)行過程; echo off all 關(guān)閉

16、所有執(zhí)行文件的回應(yīng)顯示;人機(jī)交互語(yǔ)句l用戶輸入提示命令用戶輸入提示命令 input 用來提示用戶從鍵盤輸入數(shù)據(jù)、字符串用來提示用戶從鍵盤輸入數(shù)據(jù)、字符串或表達(dá)式,并接收輸入值?;虮磉_(dá)式,并接收輸入值。r=input(How many apples:)How many apples:2r = 2人機(jī)交互語(yǔ)句l keyboard 暫停執(zhí)行程序并等待鍵盤輸入狀態(tài),處理完畢后,鍵入return并回車,程序?qū)⒗^續(xù)運(yùn)行,通常用來對(duì)程序調(diào)試及在程序中修改變量。l pause pause暫停程序,等待回應(yīng); pause(n)等待n秒后繼續(xù)執(zhí)行; pause on 顯示并執(zhí)行pause命令; pause off

17、 顯示但不執(zhí)行pause命令。 程序調(diào)試l語(yǔ)法錯(cuò)誤 發(fā)生在程序代碼的解釋過程中,一般有函數(shù)參數(shù)輸入類型有誤或矩陣運(yùn)算階數(shù)不符等情況。l執(zhí)行錯(cuò)誤 發(fā)生在程序運(yùn)行過程中,出現(xiàn)溢出或死循環(huán)等引起,錯(cuò)誤與程序有關(guān),較難發(fā)現(xiàn)。程序調(diào)試l直接調(diào)試法直接調(diào)試法 l利用調(diào)試工具利用調(diào)試工具l采用命令行調(diào)試程序 l采用調(diào)試界面調(diào)試程序 直接調(diào)試法(1)通過分析后,將可能出錯(cuò)的語(yǔ)句后面的分號(hào)(;)刪除,將結(jié)果顯示在命令窗口中,與預(yù)期值進(jìn)行比較;(2)利用函數(shù) disp 顯示中間變量的值;(3)在程序中的適當(dāng)位置添加 keyboard 指令。當(dāng) MATLAB 執(zhí)行至此處時(shí)將暫停,等待用戶反應(yīng)。(4)在調(diào)試一個(gè)單獨(dú)的函數(shù)時(shí),可以將函數(shù)改寫為腳本文件,此時(shí)可以直接對(duì)輸入?yún)?shù)賦值,然后以腳本方式運(yùn)行該 M 文件,這樣可以保存中間變量,在運(yùn)行完成后,可以查看中間變量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論