




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、LOGOMATLAB程序設(shè)計(jì)程序設(shè)計(jì)歐變玲歐變玲學(xué)習(xí)目標(biāo)學(xué)習(xí)目標(biāo)v 用交互式的方式來編寫程序適用于命令行比較簡(jiǎn)單,輸入比較方便,同時(shí)處理的問題步驟較少的情況。v 當(dāng)需要處理重復(fù)、復(fù)雜且容易出錯(cuò)的問題時(shí),可以進(jìn)行控制流的程序設(shè)計(jì),這就是M文件的編程工作方式。學(xué)習(xí)重點(diǎn)學(xué)習(xí)重點(diǎn)v MATLAB 的控制流語言v 變量和函數(shù)的種類v 了解程序的調(diào)試和優(yōu)化課程內(nèi)容課程內(nèi)容v M文本編輯器的基本知識(shí)文本編輯器的基本知識(shí)v MATLAB 的控制流語言的控制流語言v 變量和函數(shù)的種類v 程序設(shè)計(jì)的輔助函數(shù)v 程序的調(diào)試和優(yōu)化1. M文本編輯器的基本知識(shí)文本編輯器的基本知識(shí)v M文本編輯器 M文件的基本屬性 M文
2、件的組成部分 v 腳本式M文件 v 函數(shù)式M文件 (1)M文本編輯器文本編輯器v M文件的語法類似于一般高級(jí)語言,是一種程序化的編程語言,但是,與傳統(tǒng)的高級(jí)語言相比,M文件又有自己的特點(diǎn)。它只是一個(gè)簡(jiǎn)單的ASC型碼文本文件,因此,它的語法比一般的高級(jí)語言要簡(jiǎn)單,程序也容易調(diào)試,并且有很好的交互性。M文件的基本屬性文件的基本屬性v M文件有兩種,一種為腳本式(Script),一種為函數(shù)式(Function) 。 函數(shù)M文件必須滿足一些標(biāo)準(zhǔn),另外,它們還應(yīng)該滿足一些MATLAB 7的屬性。主要有以下幾點(diǎn): 函數(shù)式M文件名和出現(xiàn)在文件的第一行的函數(shù)名必須相同。實(shí)際上,MATLAB 7忽略了第一行的函
3、數(shù)名,并且根據(jù)存儲(chǔ)在硬盤上的文件名來執(zhí)行函數(shù)。 函數(shù)的文件名最多可以有31個(gè)字符,文件名必須以一個(gè)字母開頭,Unix平臺(tái)上對(duì)文件名的大小寫敏感,Windows平臺(tái)上不區(qū)分大小寫。 函數(shù)式M文件必須包括function這個(gè)詞 .M文件的組成部分文件的組成部分v 函數(shù)式M文件的組成部分。 調(diào)出Medit窗口,在里邊輸入如下內(nèi)容:function f = fact(n) %函數(shù)的定義行% Compute a factorial value. %H1行% FACT(N) returns the factorial of N, %幫助文本% usually denoted by N!% Put simp
4、ly, FACT(N) is PROD(1:N). %注釋f = prod(1:n); % 函數(shù)體M文件的組成部分及其功能文件的組成部分及其功能 序號(hào)序號(hào)組組 成成 部部 分分描描 述述1函數(shù)定義行(僅限于函數(shù)式M文件)定義函數(shù)名,以及輸入和輸出變量的數(shù)目和順序2H1 行H1行對(duì)程序進(jìn)行概括性的描述,使用help和lookfor命令都可以調(diào)出此行3幫助文本這是比H1 行更詳細(xì)的幫助信息,使用help命令時(shí)與H1行一起顯示4函數(shù)體函數(shù)體是M文件的主要部分,程序的計(jì)算和設(shè)計(jì)都在此實(shí)現(xiàn)5注釋解釋程序行的意義(2)腳本式)腳本式M文件文件 v 用戶可以將需要重復(fù)輸入的所有命令按順序放到一個(gè)擴(kuò)展名為m的
5、文本文件下,每次運(yùn)行時(shí)只要輸入該M文件的文件名即可。v 用戶自己創(chuàng)建的M文件的文件名要避免與MATLAB 7的內(nèi)置函數(shù)和工具箱中的函數(shù)重名,以免發(fā)生內(nèi)置函數(shù)被替換的情況。 腳本式M文件的運(yùn)行相當(dāng)于在“命令”窗口中依次輸入運(yùn)行命令,在編制這類文件時(shí),只需將所要執(zhí)行的語句逐行編輯到指定文件中即可。% 這是一個(gè)關(guān)于腳本式M文件的例子% 主要用于介紹腳本式M文件的生成% 該函數(shù)用于順次求出從cos(1)到cos(10)的值for i=1:10; a=cos(i); fprintf(cos(%d)=,i) fprintf(%12.8fn,a);end sumsincos(1)= 0.54030231co
6、s(2)= -0.41614684cos(3)= -0.98999250cos(4)= -0.65364362cos(5)= 0.28366219cos(6)= 0.96017029cos(7)= 0.75390225cos(8)= -0.14550003cos(9)= -0.91113026cos(10)= -0.83907153腳本式腳本式M文件舉例文件舉例腳本式腳本式M文件舉例文件舉例v 本腳本式M文件繪制一個(gè)正弦曲線: %此文件用于繪制【2pi,2pi】區(qū)間的正弦曲線圖x=-2*pi:0.05:2*pi;y=sin(x);plot(x,y,c+)legend(正弦曲線圖)(3)函數(shù)式)
7、函數(shù)式M文件文件v 函數(shù)式M文件一般都要自帶參數(shù),并且有返回結(jié)果 。v 函數(shù)式M文件的第一行都是以function開始,說明此文件是一個(gè)函數(shù)。v 函數(shù)式M文件中的變量都不是全局變量,僅在函數(shù)運(yùn)行期間有效,函數(shù)運(yùn)行完畢之后,它所定義的變量將從工作區(qū)間中清除。函數(shù)式函數(shù)式M文件舉例文件舉例例11-4 判斷某一年是否為閏年。%該函數(shù)用于判斷某一年是否為閏年% 閏年:四年一閏,百年不閏,四百年再閏%使用格式為isleapea(y),其中y是用戶所要計(jì)算的年份function isleapyear(year)sign=0;if rem(year,4)=0 sign=sign+1;endif rem(ye
8、ar,100)=0 sign=sign-1; end if rem(year,400)=0 sign=sign+1; end if sign=1 fprintf(%4d year is a leap year.n,year) else fprintf(%4d year is not a leap year.n,year)end函數(shù)式函數(shù)式M文件和腳本式文件和腳本式M文件中變量的作用范圍文件中變量的作用范圍v 在函數(shù)式M文件中,變量的值以局部變量局部變量形式存儲(chǔ)在文件中。v 在腳本式M文件中,在M文件中改變的值將帶到工作區(qū)間中來,即其中的變量是全局變量全局變量。何為局部變量?何為全局變量?2.
9、控制流控制流v 最簡(jiǎn)單的程序控制就是順序結(jié)構(gòu),用戶依次輸入命令語句即可。v MATLAB7語言還提供了4種高級(jí)的控制結(jié)構(gòu)。它們是:if-else-end結(jié)構(gòu)、switch-case-otherwise-end結(jié)構(gòu)、for循環(huán)和while循環(huán)。 (1)順序結(jié)構(gòu))順序結(jié)構(gòu) v 順序結(jié)構(gòu)是最簡(jiǎn)單的程序結(jié)構(gòu),用戶在編寫好程序之后,系統(tǒng)將按照程序的物理位置順次執(zhí)行。 a=1;b=2;c=3;s1=a+bs2=s1+cs3=s2/s2(2)ifend語句語句v 在編寫程序時(shí),往往需要根據(jù)一定條件,進(jìn)行一定的選擇來執(zhí)行不同的語句,此時(shí)需要使用分支語句來控制程序的進(jìn)程,在Matlab7語言中,使用if-els
10、e-end結(jié)構(gòu)實(shí)現(xiàn)這種控制。v只有一種選擇時(shí)的情況只有一種選擇時(shí)的情況 if 表達(dá)式 執(zhí)行語句 end v當(dāng)表達(dá)式為真時(shí),執(zhí)行當(dāng)表達(dá)式為真時(shí),執(zhí)行if和和end之間的執(zhí)行語句,否則不予執(zhí)行。之間的執(zhí)行語句,否則不予執(zhí)行。ifend語句語句v有兩種選擇時(shí)的情況有兩種選擇時(shí)的情況 if 表達(dá)式 執(zhí)行語句1 else 執(zhí)行語句2 end v若表達(dá)式為真,則系統(tǒng)將允許執(zhí)行語句若表達(dá)式為真,則系統(tǒng)將允許執(zhí)行語句1;若表達(dá)式為假,則系統(tǒng)將;若表達(dá)式為假,則系統(tǒng)將運(yùn)行執(zhí)行語句運(yùn)行執(zhí)行語句2.ifend語句語句 v有有3種或種或3種以上選擇時(shí)的情況種以上選擇時(shí)的情況 if 表達(dá)式1 表達(dá)式1為真時(shí)的執(zhí)行語句1
11、 elseif 表達(dá)式2 表達(dá)式2為真時(shí)的執(zhí)行語句2 elseif 表達(dá)式3 表達(dá)式3為真時(shí)的執(zhí)行語句3 elseifelse 所有的表達(dá)式都為假時(shí)的執(zhí)行語句 end當(dāng)運(yùn)行到程序的某一表達(dá)式為當(dāng)運(yùn)行到程序的某一表達(dá)式為真時(shí),則執(zhí)行與之相關(guān)的語句真時(shí),則執(zhí)行與之相關(guān)的語句,此時(shí)系統(tǒng)將不再檢驗(yàn)其他的關(guān)系表達(dá)式,即系統(tǒng)將跳過其余的if-else-end結(jié)構(gòu)。最后的最后的else命令可有可無。命令可有可無。(3) switchcaseend語句語句 switch-case-end語句是語句是Matlab7提供的另外一種分支語句形式。提供的另外一種分支語句形式。switch開關(guān)語句 case條件語句,
12、執(zhí)行語句,執(zhí)行語句 case 條件語句1,條件語句2, 條件語句3, 執(zhí)行語句,執(zhí)行語句 otherwise, 執(zhí)行語句,執(zhí)行語句 end當(dāng)某個(gè)條件語句內(nèi)容與開關(guān)語句內(nèi)當(dāng)某個(gè)條件語句內(nèi)容與開關(guān)語句內(nèi)容匹配時(shí),執(zhí)行其后的語句;若所容匹配時(shí),執(zhí)行其后的語句;若所有條件語句與開關(guān)語句內(nèi)容均不相有條件語句與開關(guān)語句內(nèi)容均不相符時(shí),執(zhí)行符時(shí),執(zhí)行otherwise后邊的語句。后邊的語句。 (4) trycatchend v try-catch模塊給用戶提供了一種錯(cuò)誤捕獲機(jī)制模塊給用戶提供了一種錯(cuò)誤捕獲機(jī)制。換句話說,利用try-catch模塊,MATLAB 7編譯系統(tǒng)發(fā)現(xiàn)的錯(cuò)誤將被其捕獲,用戶可以控制M
13、ATLAB 7怎樣對(duì)發(fā)生的錯(cuò)誤進(jìn)行處理。 try 執(zhí)行語句1catch執(zhí)行語句 2end (5) for循環(huán)語句循環(huán)語句 v For語句是一種循環(huán)語句,可以讓用戶很方地實(shí)現(xiàn)循環(huán)操作,從而可以從容地應(yīng)付大規(guī)模的循環(huán)語句。 for i =表達(dá)式, 執(zhí)行語句,執(zhí)行語句 endv表達(dá)式是一個(gè)向量,形式可以是表達(dá)式是一個(gè)向量,形式可以是m:s:n,其中m,s,n可以為整數(shù)、小數(shù)或是負(fù)數(shù),當(dāng)nm時(shí),s必須為大于0的數(shù);當(dāng)n trigFun = sin, cos, tan; plot(trigFun2(-pi:0.01:pi)函數(shù)句柄的調(diào)用函數(shù)句柄的調(diào)用function x = plotFHandle(fh
14、andle, data)plot(data, fhandle(data)在命令窗口中調(diào)用程序如下。plotFHandle(sin, -pi:0.01:pi)函數(shù)句柄的操作函數(shù)句柄的操作 函 數(shù) 名功 能 描 述functions返回函數(shù)句柄的相關(guān)信息func2str根據(jù)函數(shù)句柄創(chuàng)建一個(gè)函數(shù)名的字符串str2func由一個(gè)函數(shù)名的字符串創(chuàng)建一個(gè)函數(shù)句柄save從當(dāng)前工作區(qū)間向M文件保存函數(shù)句柄load從一個(gè)M文件中向當(dāng)前工作區(qū)間調(diào)用函數(shù)句柄isa判斷一個(gè)變量是否包含由一個(gè)函數(shù)句柄isequal判斷2個(gè)函數(shù)句柄是否為某一相同函數(shù)的句柄4. 程序設(shè)計(jì)的輔助函數(shù)程序設(shè)計(jì)的輔助函數(shù) v執(zhí)行函數(shù) v容錯(cuò)函
15、數(shù) v 時(shí)間運(yùn)算函數(shù) (1)執(zhí)行函數(shù))執(zhí)行函數(shù)函 數(shù) 名功 能 描 述assignin在MATLAB 7工作區(qū)間中分配變量builtin外部加載調(diào)用內(nèi)置函數(shù)eval字符串調(diào)用函數(shù)evalc執(zhí)行MATLAB 7的表達(dá)式evalin計(jì)算工作區(qū)間中的表達(dá)式feval字符串調(diào)用M文件run運(yùn)行腳本文件(2)容錯(cuò)函數(shù))容錯(cuò)函數(shù) v 程序設(shè)計(jì)的好壞在很大程度上取決于其容錯(cuò)能力的大小。MATLAB 7語言提供了相應(yīng)的報(bào)錯(cuò)及警告函數(shù)error、warning、lasterr、lastwarn以及errortrap on/off等,可以很方便地實(shí)現(xiàn)這方面的功能。(3)時(shí)間運(yùn)算函數(shù))時(shí)間運(yùn)算函數(shù) 函 數(shù) 名功 能
16、 描 述clock以向量的形式顯示當(dāng)前的時(shí)間和日期date以字符型顯示當(dāng)前的日期now以數(shù)值型顯示當(dāng)前的時(shí)間和日期calendar顯示當(dāng)月的日歷表weekday顯示當(dāng)前日期對(duì)應(yīng)的星期表達(dá)eomday給出指定年月的當(dāng)月最后一天datetick指定坐標(biāo)軸的日期表達(dá)形式datevec轉(zhuǎn)換為向量形式顯示日期v 常用的時(shí)間控制函數(shù)及其功能 5. 程序的調(diào)試和優(yōu)化程序的調(diào)試和優(yōu)化 v 程序的調(diào)試 程序的錯(cuò)誤種類 錯(cuò)誤的識(shí)別和程序調(diào)試 v 程序的優(yōu)化 程序優(yōu)劣的分析 程序優(yōu)化的技巧 有效地使用內(nèi)存 (1)程序的錯(cuò)誤種類)程序的錯(cuò)誤種類 v 在MATLAB 7的表達(dá)式中可能存在兩種類型的錯(cuò)誤,即語法錯(cuò)誤和運(yùn)行
17、錯(cuò)誤 : 語法錯(cuò)誤 語法錯(cuò)誤發(fā)生在M文件程序代碼的生成過程中,一般是由函數(shù)參數(shù)輸入類型有誤或是矩陣運(yùn)算階數(shù)不符等引起。 運(yùn)行錯(cuò)誤 運(yùn)行錯(cuò)誤一般指在程序運(yùn)行過程中,出現(xiàn)溢出或是死循環(huán)等異?,F(xiàn)象。 (2)錯(cuò)誤的識(shí)別和程序調(diào)試)錯(cuò)誤的識(shí)別和程序調(diào)試v 對(duì)于簡(jiǎn)單的問題,使用下面的一種或幾種方法可以方便地求解: 將函數(shù)中輸出關(guān)鍵值的行的分號(hào)(;)去掉,這樣,這些運(yùn)算的中間結(jié)果將在命令窗口中予以顯示,用戶可以據(jù)此來檢查中間結(jié)果的正確性。 在函數(shù)中添加一些語句,用來顯示用戶認(rèn)為很重要的變量的值。 使用keyboard命令中斷程序,該命令實(shí)現(xiàn)函數(shù)工作區(qū)間和命令窗口工作區(qū)間的交互,從而獲得用戶所需要的信息,使用
18、該命令后,程序?qū)⑻幱谡{(diào)試狀態(tài),此時(shí)命令窗口的提示符由“”變?yōu)椤癒”,用戶可以進(jìn)行相應(yīng)的操作。 在函數(shù)頭前加“%”,這樣就將函數(shù)式M文件變?yōu)槟_本式M文件,而腳本式M文件運(yùn)行時(shí),其工作區(qū)間就是MATLAB 7的工作區(qū)間,這樣在出現(xiàn)錯(cuò)誤的時(shí)候就可以查詢這個(gè)工作區(qū)間。錯(cuò)誤的識(shí)別和程序調(diào)試錯(cuò)誤的識(shí)別和程序調(diào)試函 數(shù) 名 功 能 描 述echo在函數(shù)運(yùn)行時(shí)顯示代碼disp顯示特定的值或信息Sprintf&fprintf顯示不同格式和類型的數(shù)據(jù)whos列出工作區(qū)間的所有變量size顯示矩陣的維數(shù)keyboard中斷程序運(yùn)行,允許用戶從鍵盤進(jìn)行交互操作return回復(fù)keyboard命令后函數(shù)的運(yùn)行warning顯示特定的警告信息error顯示特定的錯(cuò)誤信息v 錯(cuò)誤識(shí)別函數(shù)及其功能 錯(cuò)誤的識(shí)別和程序調(diào)試錯(cuò)誤的識(shí)別和程序調(diào)試函 數(shù)描 述dbstop用于在M文件中設(shè)置斷點(diǎn)dbstatus顯示斷點(diǎn)信息dbtype顯示M文件文本dbstep該函數(shù)用于從斷點(diǎn)處繼續(xù)執(zhí)行M文件dbstack顯示M文件執(zhí)行時(shí)調(diào)用的堆棧dbup/dbdowm實(shí)現(xiàn)工作區(qū)間的切換dbquit結(jié)束調(diào)試狀態(tài)v 程序斷點(diǎn)的設(shè)置 (3)程序優(yōu)劣的分析)程序優(yōu)劣的分析v 在MATLAB 7語言中,使用profile函數(shù)以及計(jì)時(shí)函數(shù)tic和toc來分析程序中各個(gè)部分的耗時(shí)情況,從而幫助用戶
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貨物運(yùn)輸合同(水路)
- 醫(yī)療行業(yè)人才引進(jìn)合同
- 房地產(chǎn)開發(fā)商與購(gòu)房者合同大全
- 勞動(dòng)用工安全責(zé)任合同模板:應(yīng)對(duì)與處理
- 地區(qū)授權(quán)代理合同書
- 基礎(chǔ)設(shè)施建設(shè)項(xiàng)目土地征用合同
- 房地產(chǎn) -鏈家地產(chǎn) 二手房業(yè)務(wù)知識(shí)與經(jīng)驗(yàn)介紹
- 安全責(zé)任的落實(shí)強(qiáng)化企業(yè)安全主體責(zé)任考核試卷
- 攝影器材行業(yè)知識(shí)產(chǎn)權(quán)保護(hù)與合規(guī)經(jīng)營(yíng)策略研究考核試卷
- 數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)考核試卷
- 航空航天標(biāo)準(zhǔn)與認(rèn)證互認(rèn)
- 心理課教案自我認(rèn)知與情緒管理
- 民用無人機(jī)操控員執(zhí)照(CAAC)考試復(fù)習(xí)重點(diǎn)題庫(kù)500題(含答案)
- GB/T 6553-2024嚴(yán)酷環(huán)境條件下使用的電氣絕緣材料評(píng)定耐電痕化和蝕損的試驗(yàn)方法
- 中職旅游專業(yè)《中國(guó)旅游地理》說課稿
- 第15課 列強(qiáng)入侵與中國(guó)人民的反抗斗爭(zhēng)【課件】-中職高一上學(xué)期高教版
- 中國(guó)海關(guān)科學(xué)技術(shù)研究中心招聘筆試真題2022
- 結(jié)構(gòu)實(shí)驗(yàn)技術(shù):地震模擬振動(dòng)臺(tái)試驗(yàn)
- 《鄧稼先》省公開課一等獎(jiǎng)全國(guó)示范課微課金獎(jiǎng)?wù)n件
- GJB9001C-2017管理手冊(cè)、程序文件及表格匯編
- 核心素養(yǎng)目標(biāo)新課標(biāo)北師大版小學(xué)數(shù)學(xué)三年級(jí)下冊(cè)全冊(cè)教案
評(píng)論
0/150
提交評(píng)論