MATLAB程序設(shè)計及應(yīng)用實例(課堂PPT)_第1頁
MATLAB程序設(shè)計及應(yīng)用實例(課堂PPT)_第2頁
MATLAB程序設(shè)計及應(yīng)用實例(課堂PPT)_第3頁
MATLAB程序設(shè)計及應(yīng)用實例(課堂PPT)_第4頁
MATLAB程序設(shè)計及應(yīng)用實例(課堂PPT)_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、.1.25.1 MATLAB程序設(shè)計程序設(shè)計o5.1.1 M文件文件o5.1.2 腳本文件和函數(shù)文件腳本文件和函數(shù)文件o5.1.5 數(shù)據(jù)的輸入輸出數(shù)據(jù)的輸入輸出o5.1.3 選擇結(jié)構(gòu)選擇結(jié)構(gòu)o5.1.4 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)o5.1.6 M文件調(diào)試文件調(diào)試.3o例例 建立一個命令文件將變量建立一個命令文件將變量a,ba,b的值互換,的值互換,然后運行該命令文件。然后運行該命令文件。 首先建立命令文件并以文件名exch.m存盤: clear; a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中輸入exch,將會執(zhí)行該

2、命令文件。.41.建立新的M文件(1)(1)菜單操作菜單操作:MATLABMATLAB命令窗口的命令窗口的FileFile菜單菜單 New New菜單項菜單項 M-file M-file命令。命令。(2)(2)命令操作命令操作:在:在MATLABMATLAB命令窗口輸入命令命令窗口輸入命令editedit。(3)(3)命令按鈕操作命令按鈕操作:單擊:單擊MATLABMATLAB命令窗口工具欄上的命令窗口工具欄上的“新建新建”命令按鈕。命令按鈕。2. 編輯已有的M文件3. M文件的分類 P116 4.1.2內(nèi)容分類:腳本文件分類:腳本文件(Script File)(Script File)和函數(shù)

3、文件和函數(shù)文件(Function (Function File)File)。主要區(qū)別。主要區(qū)別。M文件的建立與編輯文件的建立與編輯.5o函數(shù)定義行函數(shù)定義行oH1行行 對程序的總體介紹對程序的總體介紹o函數(shù)說明函數(shù)說明 對程序詳細描述對程序詳細描述o程序主體程序主體o注釋注釋 解釋程序功能的文字解釋程序功能的文字 說明:除程序主體外,其他部分以說明:除程序主體外,其他部分以%開頭。開頭。P116 實例實例.61 腳本文件腳本文件 沒有輸入和輸出沒有輸入和輸出由一系列指令組成由一系列指令組成可在命令窗口直接運行可在命令窗口直接運行產(chǎn)生的所有變量存儲在產(chǎn)生的所有變量存儲在workspace中。中。

4、例例 exam5_1.m。.7(1) (1) 函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件由函數(shù)文件由function語句引導語句引導其基本結(jié)構(gòu)為:其基本結(jié)構(gòu)為: function 輸出形參表輸出形參表=函數(shù)名函數(shù)名(輸入形參表輸入形參表) %注釋說明部分注釋說明部分 函數(shù)體語句函數(shù)體語句.8(1)關(guān)于函數(shù)文件名關(guān)于函數(shù)文件名: 函數(shù)文件名與函數(shù)名也可以不相同。當兩者不同時,MATLAB將忽略函數(shù)名而確認函數(shù)文件名,(2)關(guān)于注釋說明部分關(guān)于注釋說明部分。注釋說明包括三部分內(nèi)容:緊隨函數(shù)文件引導行之后以%開頭的第一注釋行。第一注釋行及之后連續(xù)的注釋行。與在線幫助文本相隔一空行的注釋行。 (1)

5、 函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件的基本結(jié)構(gòu).9p函數(shù)調(diào)用的一般格式函數(shù)調(diào)用的一般格式:輸出實參表輸出實參表=函數(shù)名函數(shù)名(輸入實參表輸入實參表) 注意:等號左邊是方括號,右邊輸入?yún)?shù)用注意:等號左邊是方括號,右邊輸入?yún)?shù)用括號括號(2)函數(shù)文件的調(diào)用)函數(shù)文件的調(diào)用.10 function s,p=fcircle(r) %FCIRCLE calculate the area and perimeter of a circle of radii r %r 圓半徑 %s 圓面積 %p 圓周長 s=pi*r*r; p=2*pi*r; 以上函數(shù)文件以文件名fcircle.m存入c:matlab7workm

6、as下,然后在MATLAB命令窗口調(diào)用該函數(shù): s,p=fcircle(10)s,p=fcircle(10).11o函數(shù)的遞歸調(diào)用函數(shù)的遞歸調(diào)用n例:利用遞歸調(diào)用函數(shù)文件factor.m: function f=factor(n) if n=A & c=a& c=0& c=9 disp(abs(c)-abs(0); else disp(c); end.26oswitchswitch語句語句其語句格式為:其語句格式為: switch switch 表達式表達式 case case 值值1 1 語句組語句組1 1 case case 值值2 2 語句組語句組2 2 case

7、 case 值值m m 語句組語句組m m otherwise otherwise 語句組語句組m+1m+1 end end.27o例例 某商場對顧客所購買的商品實行打折銷售,已知打折標某商場對顧客所購買的商品實行打折銷售,已知打折標準,求所售商品的實際銷售價格準,求所售商品的實際銷售價格n程序如下: price=input(請輸入商品價格); switch fix(price/100) case 0,1 rate=0; case 2,3,4 rate=3/100; case num2cell(5:9) rate=5/100; case num2cell(10:24) rate=8/100;

8、case num2cell(25:49) rate=10/100; otherwise rate=14/100; end price=price*(1-rate).28語句格式為:語句格式為:try 語句組1catch 語句組2end try語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯誤,則將錯誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。這種試探性執(zhí)行語句是其他高級語言所沒有的。.295.1.4 選擇結(jié)構(gòu)選擇結(jié)構(gòu)-try-try語句語句o例例 矩陣乘法運算要求兩矩陣的維數(shù)相容,否則會出錯。矩陣乘法運算要求兩矩陣的維數(shù)相容,否則會出錯。先求兩矩陣的乘積,若出錯,則自動轉(zhuǎn)去

9、求兩矩陣的點乘先求兩矩陣的乘積,若出錯,則自動轉(zhuǎn)去求兩矩陣的點乘o程序如下:程序如下:main5_3.mmain5_3.mA=1,2,3;4,5,6; B=7,8,9;10,11,12;A=1,2,3;4,5,6; B=7,8,9;10,11,12;trytry C=A C=A* *B;B;catchcatch C=A. C=A.* *B;B;endendC Clasterr %lasterr %顯示出錯原因顯示出錯原因.30n循環(huán)語句循環(huán)語句ofor語句語句owhile語句語句n循環(huán)的嵌套循環(huán)的嵌套.315.1.5 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)- for語句語句o1. for語句語句n語句格式為:語句格

10、式為: for 循環(huán)變量循環(huán)變量=表達式表達式1:表達式表達式2:表達表達式式3 循環(huán)體語句循環(huán)體語句 end.32ofor語句更一般的格式:語句更一般的格式: for 循環(huán)變量循環(huán)變量=矩陣表達式矩陣表達式 循環(huán)體語句循環(huán)體語句 end 執(zhí)行過程是依次將矩陣的,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。實際上,“表達式1:表達式2:表達式3”是一個僅為一行的矩陣(行向量),因而列向量是單個數(shù)據(jù)。5.1.5 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)- for語句語句.33o例例 已知已知5 5個學生個學生4 4門功課的成績,求每名學生的總門功課的成績,求每名學生的總成績成績n程序如下:程序如下:s=0;s=0;a=6

11、5,76,56,78;98,83,74,85;76,67,78,79;98,58,4a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87;2,73;67,89,76,87;for k=afor k=a s=s+k; s=s+k;endenddisp(s);disp(s);5.1.5 循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)- for語句語句.34owhilewhile語句的一般格式為:語句的一般格式為: while (while (條件條件) ) 循環(huán)體語句循環(huán)體語句 endend 其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成

12、立,如果不成立則跳出循環(huán).35其他常用指令其他常用指令oContinueoBreak.36continuecontinue命令命令通常用于通常用于for或或while循環(huán)語句中循環(huán)語句中,與與if語句一起使用語句一起使用,達到達到跳過跳過本次循環(huán)本次循環(huán),去執(zhí)行下一輪循環(huán)去執(zhí)行下一輪循環(huán)的目的的目的分析下列程序,說明運行結(jié)果及原因分析下列程序,說明運行結(jié)果及原因a=3;b=6;for i=1:3 b=b+1; if i2 continue %當當if條件滿足時不再執(zhí)行后面語句條件滿足時不再執(zhí)行后面語句,跳,跳 出本次循環(huán)。出本次循環(huán)。 end a=a+2 %當當i2i2a=7b=9.37 br

13、eak命令命令通常用于通常用于for或或while循環(huán)語句中循環(huán)語句中,與與if語句一起使用語句一起使用,中止本次循中止本次循環(huán)環(huán),跳出最內(nèi)層循環(huán)跳出最內(nèi)層循環(huán)分析下列程序,說明運行結(jié)果及原因分析下列程序,說明運行結(jié)果及原因a=3;b=6;for i=1:3 b=b+1; if i2 break %當當if條件滿足時不再執(zhí)行循環(huán)條件滿足時不再執(zhí)行循環(huán) end a=a+2end運行結(jié)果運行結(jié)果:a=7b=9i2i2a=3b=6.38程序流控制語句程序流控制語句 return指令指令 終止當前的命令序列,把控制返回到調(diào)用函數(shù)或終止當前的命令序列,把控制返回到調(diào)用函數(shù)或鍵盤。鍵盤。 keyboard

14、 把把“控制權(quán)控制權(quán)”交給鍵盤。交給鍵盤。 error和和warning 顯示出錯和警告信息。顯示出錯和警告信息。.39o如果一個循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)。可以按照嵌套層數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。o在設(shè)計多重循環(huán)時,要特別注意內(nèi)、外循環(huán)之間的關(guān)系,以及各語句放置的位置,不要搞錯。.40補充:1 Matlab命令執(zhí)行過程輸入輸入 china輸出變量輸出變量china的值的值變量?變量?執(zhí)行該執(zhí)行該內(nèi)部函數(shù)內(nèi)部函數(shù)當前目錄中有當前目錄中有china.m?內(nèi)聯(lián)函數(shù)?內(nèi)聯(lián)函數(shù)?搜索路徑中有搜索路

15、徑中有china.m?否否執(zhí)行該執(zhí)行該M文件文件執(zhí)行該執(zhí)行該M文件文件報錯!報錯!子函數(shù)?子函數(shù)?私有函數(shù)?私有函數(shù)?執(zhí)行該執(zhí)行該M文件文件是是是是是是是是是是否否否否.412 MATLAB程序設(shè)計原則和技巧程序設(shè)計原則和技巧1、后面的內(nèi)容是程序的注解,要善于運用注解使程序更具可讀性。2、養(yǎng)成在主程序開頭用clear指令清除變量的習慣,以消除工作空間中其他變量對程序運行的影響。但注意在子程序中不要用clear。3、參數(shù)值要集中放在程序的開始部分,以便維護。要充分利用MATLAB工具箱提供的指令來執(zhí)行所要進行的運算,在語句行之后輸入分號使其及中間結(jié)果不在屏幕上顯示,以提高執(zhí)行速度。.424、程序

16、盡量模塊化,也就是采用主程序調(diào)用子程序的方法,將所有子程序合并在一起來執(zhí)行全部的操作。5、充分利用Debugger來進行程序的調(diào)試(設(shè)置斷點、單步執(zhí)行、連續(xù)執(zhí)行)6、設(shè)置好MATLAB的工作路徑,以便程序運行。.43 1. 矢量化盡可能使用向量和矩陣操作 1000000)3121(kkk例例 求求t=cputime;s=0;for i=1:100000 s=s+(1/2i+1/3i); endcputime-tans = 向量運算向量運算t=cputime;n=1:100000; s=sum(1./2.n+1./3.n);cputime-tans =.44w陣列預(yù)分配 陣列矩陣的初始化工作;在

17、成熟規(guī)范的商業(yè)軟件里必不可少,同時也是一個良好的編程素養(yǎng)的體現(xiàn)。變量管理 matlab中的變量類型是不需要預(yù)先定義的,編程過程中不要改變變量的使用類型。 例如chardouble, realcomplex x=23; 程序,x=A4 .盡量使用MATLAB內(nèi)部定義的函數(shù).45本節(jié)內(nèi)容是需上機應(yīng)用的重點內(nèi)容。程序出錯主要為兩類: 1、語法錯誤 如缺(或)等,在運行時可檢測出大多數(shù)該類錯誤,并指出錯在哪一行。 2、算法錯誤 邏輯上的錯誤,不易查找,遇到此類錯誤時需耐心。一般可考慮如下方法:直接調(diào)試法和工具調(diào)試法.46 直接調(diào)試法是指在利用matlab的相關(guān)指令對程序進行調(diào)試。 主要方法有: 刪除句

18、尾分號和利用disp語句,顯示中間結(jié)果; 在適當位置加上keyboard語句,使程序暫停; 在函數(shù)定義行之前加上%注釋,使之變成腳本語言; 利用echo指令,使運行時在屏幕上逐行顯示文件內(nèi)容。 Ctrl+C強行停止程序直接調(diào)試法直接調(diào)試法.47直接調(diào)試法一些輔助函數(shù):o常用指令:return, echo, input, pause, keyboard, break; echo命令可以使文件命令在執(zhí)行時可見,這對程序的 調(diào)試和演示很有用。 keyboard請求鍵盤輸入命令 pause等待用戶反映命令o警告命令:error, warning.lasterr,lastwarn,o提示命令:warnd

19、lg,errordlg.48工具調(diào)試法工具調(diào)試法 工具調(diào)試法是指利用matlab的相關(guān)調(diào)試工具對程序進行調(diào)試 調(diào)試步驟為:(1)(1)在程序可疑處設(shè)置斷點;在程序可疑處設(shè)置斷點;(2)(2)執(zhí)行程序;執(zhí)行程序;(3)(3)檢查程序運行至斷點處變檢查程序運行至斷點處變 量當前值量當前值(4)(4)在程序中一步步執(zhí)行在程序中一步步執(zhí)行(5)(5)結(jié)束調(diào)試狀態(tài)。結(jié)束調(diào)試狀態(tài)。(6)(6)取消斷點。取消斷點。.491Debug菜單項 該菜單項用于程序調(diào)試,需要與Breakpoints菜單項配合使用。 Step:單步運行 Step In:單步運行,調(diào)用函數(shù)時進入函數(shù)程序 Step Out: Run:運行

20、 Go Until Cursor:運行到光標處工具調(diào)試法工具調(diào)試法調(diào)試菜單項調(diào)試菜單項.502Breakpoints菜單項(matlab7.0以上菜單內(nèi)容在Debug菜單中包括)Set/Clear Breakpoint:設(shè)置/清除斷點 Set/Modify Conditional Breakpoint:設(shè)置條件斷點 Enable/Disable Breakpoint:使能斷點 Clear Breakpoint in All Files:清除斷點 Stop if Errors/Warnings:錯誤停止條件設(shè)置設(shè)置條件斷點時注意光標的位置.51設(shè)置錯誤停止條件設(shè)置條件斷點.52常見錯誤o中英文輸入法未注意o習慣用i,j作為變量o變量名同函數(shù)名文件名相同o搜索路徑設(shè)置不當.53o5.2.1 在高數(shù)中的應(yīng)用在高數(shù)中的應(yīng)用o5.2.2 在線性代數(shù)中的應(yīng)用在線性代數(shù)中的應(yīng)用o5.2.3 在普通物理中的應(yīng)用在普通物理中的應(yīng)用o5.2.4 在電路中的應(yīng)用在電路中的應(yīng)用.54o函數(shù)的傅立葉級數(shù)函數(shù)的傅立葉級數(shù)10)sin()cos(2)(kkkkxbkxaaxsdxkxxfbdxkxxfakk)sin()(1)cos()(1.55程序?qū)崿F(xiàn):程序?qū)崿F(xiàn):function s=mfourier(f,n)syms x a b cs=int(f,-pi,pi)/(2*pi) %計算a0for k=

溫馨提示

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

評論

0/150

提交評論