A7810-MATLAB7程序設(shè)計(jì).ppt_第1頁
A7810-MATLAB7程序設(shè)計(jì).ppt_第2頁
A7810-MATLAB7程序設(shè)計(jì).ppt_第3頁
A7810-MATLAB7程序設(shè)計(jì).ppt_第4頁
A7810-MATLAB7程序設(shè)計(jì).ppt_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),1,第10章 MATLAB 7程序設(shè)計(jì),教學(xué)目標(biāo) 教學(xué)重點(diǎn) 教學(xué)過程,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),2,教學(xué)目標(biāo),用交互式的方式來編寫程序適用于命令行比較簡單,輸入比較方便,同時(shí)處理的問題步驟較少的情況。 當(dāng)需要處理重復(fù)、復(fù)雜且容易出錯(cuò)的問題時(shí),可以進(jìn)行控制流的程序設(shè)計(jì),這就是M文件的編程工作方式。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),3,教學(xué)重點(diǎn),MATLAB 7的控制流語言 變量和函數(shù)的種類 了解程序的調(diào)試和優(yōu)化,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),4,教學(xué)過程,M文本

2、編輯器的基本知識(shí) MATLAB 7的控制流語言 變量和函數(shù)的種類 程序設(shè)計(jì)的輔助函數(shù) 程序的調(diào)試和優(yōu)化,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),5,1. M文本編輯器的基本知識(shí),M文本編輯器 M文件的基本屬性 M文件的組成部分 腳本式M文件 函數(shù)式M文件,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),6,(1)M文本編輯器,M文件的語法類似于一般高級(jí)語言,是一種程序化的編程語言,但是,與傳統(tǒng)的高級(jí)語言相比,M文件又有自己的特點(diǎn)。它只是一個(gè)簡單的ASC型碼文本文件,因此,它的語法比一般的高級(jí)語言要簡單,程序也容易調(diào)試,并且有很好的交互性。,2020/11/3,第10章

3、MATLAB 7程序設(shè)計(jì),7,M文件的基本屬性,M文件有兩種,一種為腳本式(Script),一種為函數(shù)式(Function) 。 函數(shù)M文件必須滿足一些標(biāo)準(zhǔn),另外,它們還應(yīng)該滿足一些MATLAB 7的屬性。主要有以下幾點(diǎn): 函數(shù)式M文件名和出現(xiàn)在文件的第一行的函數(shù)名必須相同。實(shí)際上,MATLAB 7忽略了第一行的函數(shù)名,并且根據(jù)存儲(chǔ)在硬盤上的文件名來執(zhí)行函數(shù)。 ,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),8,M文件的組成部分,函數(shù)式M文件的組成部分。 調(diào)出Medit窗口,在里邊輸入如下內(nèi)容: function f = fact(n) %函數(shù)的定義行 % Compute a fac

4、torial value. %H1行 % FACT(N) returns the factorial of N, %幫助文本 % usually denoted by N! % Put simply, FACT(N) is PROD(1:N). %注釋 f = prod(1:n); % 函數(shù)體,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),9,M文件的組成部分及其功能,M文件的組成部分及其功能,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),10,(2)腳本式M文件,用戶可以將需要重復(fù)輸入的所有命令按順序放到一個(gè)擴(kuò)展名為m的文本文件下,每次運(yùn)行時(shí)只要輸入該M文件的文件名即可。

5、 用戶自己創(chuàng)建的M文件的文件名要避免與MATLAB 7的內(nèi)置函數(shù)和工具箱中的函數(shù)重名,以免發(fā)生內(nèi)置函數(shù)被替換的情況。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),11,腳本式M文件舉例,本腳本式M文件繪制一個(gè)正弦曲線: %此文件用于繪制【2pi,2pi】區(qū)間的正弦曲線圖 x=-2*pi:0.05:2*pi; y=sin(x); plot(x,y,c+) legend(正弦曲線圖),2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),12,(3)函數(shù)式M文件,函數(shù)式M文件一般都要自帶參數(shù),并且有返回結(jié)果 。 函數(shù)式M文件的第一行都是以function開始,說明此文件是一個(gè)函數(shù)。函

6、數(shù)式M文件中的變量都不是全局變量,僅在函數(shù)運(yùn)行期間有效,函數(shù)運(yùn)行完畢之后,它所定義的變量將從工作區(qū)間中清除。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),13,函數(shù)式M文件舉例,例11-4 判斷某一年是否為閏年。 解:調(diào)出Medit窗口,在里邊輸入如下內(nèi)容。 %該函數(shù)用于判斷某一年是否為閏年 %使用格式為isleapea(y),其中y是用戶所要計(jì)算的年份 function isleapyear(year) sign=0; if rem(year,4)=0 sign=sign+1; end,if rem(year,100)=0 sign=sign-1; end if rem(year

7、,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,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),14,2. 控制流,最簡單的程序控制就是順序結(jié)構(gòu),用戶依次輸入命令語句即可。 MATLAB 7語言還提供了4種高級(jí)的控制結(jié)構(gòu)。它們是:if-else-end結(jié)構(gòu)、switch-case-otherwise-end結(jié)構(gòu)、for循環(huán)和while循環(huán)。,2020/11/3,第10章 MATLA

8、B 7程序設(shè)計(jì),15,(1)順序結(jié)構(gòu),順序結(jié)構(gòu)是最簡單的程序結(jié)構(gòu),用戶在編寫好程序之后,系統(tǒng)將按照程序的物理位置順次執(zhí)行。 a=1; b=2; c=3; s1=a+b s2=s1+c s3=s2/s2,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),16,(2)ifend語句,只有一種選擇時(shí)的情況 if 表達(dá)式 執(zhí)行語句 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),17,ifend語句,有兩種選擇時(shí)的情況 if 表達(dá)式 執(zhí)行語句1 else 執(zhí)行語句2 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),18,ifend語句,有3種或3種以上選擇時(shí)的情況

9、 if 表達(dá)式1 表達(dá)式1為真時(shí)的執(zhí)行語句1 elseif表達(dá)式2 表達(dá)式2為真時(shí)的執(zhí)行語句2 elseif表達(dá)式3 表達(dá)式3為真時(shí)的執(zhí)行語句3 elseif else 所有的表達(dá)式都為假時(shí)的執(zhí)行語句 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),19,(3) switchcaseend語句,switch開關(guān)語句 case條件語句, 執(zhí)行語句,執(zhí)行語句 case 條件語句1,條件語句2, 條件語句3, 執(zhí)行語句,執(zhí)行語句 otherwise, 執(zhí)行語句,執(zhí)行語句 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),20,(4) trycatchend,try-ca

10、tch模塊給用戶提供了一種錯(cuò)誤捕獲機(jī)制。換句話說,利用try-catch模塊,MATLAB 7編譯系統(tǒng)發(fā)現(xiàn)的錯(cuò)誤將被其捕獲,用戶可以控制MATLAB 7怎樣對發(fā)生的錯(cuò)誤進(jìn)行處理。 try 執(zhí)行語句1 catch 執(zhí)行語句 2 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),21,(5) for循環(huán)語句,For語句是一種循環(huán)語句,可以讓用戶很方地實(shí)現(xiàn)循環(huán)操作,從而可以從容地應(yīng)付大規(guī)模的循環(huán)語句。 for i =表達(dá)式, 執(zhí)行語句,執(zhí)行語句 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),22,(6)while循環(huán)語句,與for循環(huán)不同,while循環(huán)的判斷控制可以

11、是邏輯判斷語句,因此,它的循環(huán)次數(shù)可以是一個(gè)不定數(shù)。這樣就賦予了它比for循環(huán)更廣泛的用途。 while表達(dá)式 執(zhí)行語句 end,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),23,(7) 人機(jī)交互命令,終止命令break和return 繼續(xù)命令continue 等待用戶反應(yīng)命令pause echo命令 用戶輸入提示命令input 請求鍵盤輸入命令keyboard,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),24,3. 變量和函數(shù)種類,與其他語言一樣,MATLAB 7的變量有輸入變量、輸出變量和函數(shù)內(nèi)使用的變量之分,而函數(shù)也有主函數(shù)、局部函數(shù)和子函數(shù)之分,本節(jié)將介紹這些不

12、同種類變量和函數(shù)的特點(diǎn)。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),25,(1). 函數(shù)變量及其作用域,在MATLAB 7語言中,變量可以分為輸入變量、輸出變量和函數(shù)內(nèi)使用的變量。 輸入變量相當(dāng)于函數(shù)的入口數(shù)據(jù),也是一個(gè)函數(shù)操作的主要對象,從某種意義上來說,函數(shù)的功能在于對輸入變量進(jìn)行一定的操作從而實(shí)現(xiàn)一定的功能。函數(shù)的輸入變量為局部變量,函數(shù)對輸入變量的一切操作和修改如果不依靠輸出變量的話,將不會(huì)影響工作區(qū)間中該變量的值。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),26,函數(shù)變量及其作用域,變量的輸入和輸出規(guī)則 局部變量 全局變量 永久變量,2020/11/3,第

13、10章 MATLAB 7程序設(shè)計(jì),27,變量的輸入和輸出規(guī)則,MATLAB 7可以有任意數(shù)量的輸入和輸出變量。這些參數(shù)的特性和規(guī)則如下所示: (1) 函數(shù)式M文件可以沒有輸入和輸出變量。 (2) 函數(shù)可以用比M文件中的函數(shù)定義行所規(guī)定的輸入輸出變量更少的變量進(jìn)行調(diào)用。但是不能用比規(guī)定的輸入輸出變量更多的變量進(jìn)行調(diào)用。 (3) 在一次調(diào)用中所用到的輸入和輸出變量的個(gè)數(shù)可以通過分別調(diào)用函數(shù)nargin和nargout來確定。因?yàn)閚argin和nargout是函數(shù)而不是變量,所以用戶不能用諸如nargin=nargin+pi之類的語句對它們進(jìn)行重新賦值。 ,2020/11/3,第10章 MATLAB

14、 7程序設(shè)計(jì),28,局部變量,局部變量是在函數(shù)內(nèi)部使用的變量,其影響范圍只能在本函數(shù)內(nèi),每個(gè)函數(shù)在運(yùn)行時(shí),都占有獨(dú)立的函數(shù)工作空間,此工作空間和MATLAB的工作空間時(shí)相互獨(dú)立的,局部變量僅存在于函數(shù)的工作空間內(nèi)。當(dāng)函數(shù)執(zhí)行完畢之后,該變量即自行消失。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),29,全局變量,在MATLAB 7語言中,函數(shù)內(nèi)部定義的變量都是局部變量,它們不被加載到工作區(qū)間中。有時(shí),用戶需要使用全局變量,這時(shí)要使用global函數(shù)來進(jìn)行定義,而且在任何使用該全局變量的函數(shù)中都應(yīng)加以定義,即使是在命令窗口也不例外。,2020/11/3,第10章 MATLAB 7程序

15、設(shè)計(jì),30,永久變量,除了通過全局變量共享數(shù)據(jù)外,函數(shù)式M文件還可以通過聲明一個(gè)變量persistent來對函數(shù)中重復(fù)使用和遞歸調(diào)用的變量的訪問進(jìn)行限制,使用格式形如persistent (X Y Z)。永久變量與全局變量類似,但是它的范圍被限制在聲明這些變量的函數(shù)內(nèi)部,不允許在其他的函數(shù)中對它們進(jìn)行改變。只要M文件還在MATLAB 7的內(nèi)存中,永久變量就存在。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),31,(2)函數(shù)的分類,主函數(shù) 匿名函數(shù) 嵌套式函數(shù) 子函數(shù) 局部函數(shù),2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),32,主函數(shù),M文件中的第一個(gè)函數(shù)就叫做主函數(shù),前

16、邊章節(jié)中所引用的函數(shù)事實(shí)上都是主函數(shù),主函數(shù)之后可以是任意數(shù)量的子函數(shù), 它們可以作為主程序的子程序。一般來說,在命令窗口或是其他的M文件只能調(diào)用主函數(shù),調(diào)用的時(shí)候就是直接調(diào)用其函數(shù)名。 比如,函數(shù)average的M文件average.m如下: function y = average(x) % AVERAGE Mean of vector elements. y = sum(x)/length(x); % Actual computation,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),33,匿名函數(shù),匿名函數(shù)提供了一種創(chuàng)建簡單程序的方法,使用它用戶可以不必每次都編寫M文件。用戶

17、可以在MATLAB 7的命令窗口或是其他任意M文件和腳本文件中使用匿名函數(shù)。 匿名函數(shù)的格式如下所示。 fhandle = (arglist) expr,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),34,嵌套式函數(shù),在MATLAB 7中,可以在一個(gè)函數(shù)的內(nèi)部定義一個(gè)或多個(gè)其他的函數(shù),這些在內(nèi)部定義的函數(shù)被稱作嵌套式函數(shù),應(yīng)當(dāng)注意的是,在嵌套式函數(shù)的內(nèi)部也可以定義嵌套式函數(shù)。 定義嵌套式函數(shù)時(shí),只需在另一個(gè)M文件的內(nèi)部定義該函數(shù)即可,同其他M文件一樣, 嵌套式函數(shù)包含有M文件的所有基本部分。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),35,子函數(shù),與其他的高級(jí)語言一樣,

18、在MATLAB 7語言中也可以很方便地定義子函數(shù),用來擴(kuò)充函數(shù)的功能。在函數(shù)文件中題頭定義的函數(shù)為主函數(shù),而在函數(shù)體內(nèi)定義的其他函數(shù)都被視為子函數(shù)。子函數(shù)只能為主函數(shù)或同一主函數(shù)下的其他子函數(shù)所使用。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),36,局部函數(shù),MATLAB 7語言中把放置在目錄private下的函數(shù)稱為局部函數(shù),這些函數(shù)只有private目錄的父目錄中的函數(shù)才可以調(diào)用,其他目錄下的函數(shù)不能調(diào)用。 局部函數(shù)與子函數(shù)所不同的是,局部函數(shù)可以被其父目錄下的所有函數(shù)所調(diào)用,而子函數(shù)則只能被其所在的M文件的主函數(shù)所調(diào)用。所以,局部函數(shù)在可用的范圍上大于子函數(shù);在函數(shù)編輯的結(jié)

19、構(gòu)上,局部函數(shù)與一般的函數(shù)文件的編輯相同,而子函數(shù)只能在主函數(shù)文件中編輯。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),37,(3)函數(shù)句柄,函數(shù)句柄提供了一種間接訪問函數(shù)的手段,用戶可以很方便地調(diào)用其他函數(shù);提供函數(shù)調(diào)用過程中的可靠性;減少程序設(shè)計(jì)中的冗余; 同時(shí)可以在使用函數(shù)的過程中保存函數(shù)相關(guān)的信息,尤其是關(guān)于函數(shù)執(zhí)行的信息。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),38,函數(shù)句柄,函數(shù)句柄的創(chuàng)建 函數(shù)句柄的調(diào)用 函數(shù)句柄的操作,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),39,函數(shù)句柄的創(chuàng)建,函數(shù)句柄的創(chuàng)建比較簡單,使用格式形如: fhandle

20、=functionname 其中fhandle為所創(chuàng)建的函數(shù)句柄,functionname為所創(chuàng)建的函數(shù) 。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),40,函數(shù)句柄的創(chuàng)建, trigFun = sin, cos, tan; plot(trigFun2(-pi:0.01:pi) ,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),41,函數(shù)句柄的調(diào)用,function x = plotFHandle(fhandle, data) plot(data, fhandle(data) 在命令窗口中調(diào)用程序如下。 plotFHandle(sin, -pi:0.01:pi),2020

21、/11/3,第10章 MATLAB 7程序設(shè)計(jì),42,函數(shù)句柄的操作,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),43,4. 程序設(shè)計(jì)的輔助函數(shù),執(zhí)行函數(shù) 容錯(cuò)函數(shù) 時(shí)間運(yùn)算函數(shù),2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),44,(1)執(zhí)行函數(shù),執(zhí)行函數(shù)及其功能,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),45,(2)容錯(cuò)函數(shù),程序設(shè)計(jì)的好壞在很大程度上取決于其容錯(cuò)能力的大小。MATLAB 7語言提供了相應(yīng)的報(bào)錯(cuò)及警告函數(shù)error、warning、lasterr、lastwarn以及errortrap on/off等,可以很方便地實(shí)現(xiàn)這方面的功能。,202

22、0/11/3,第10章 MATLAB 7程序設(shè)計(jì),46,(3)時(shí)間運(yùn)算函數(shù),常用的時(shí)間控制函數(shù)及其功能,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),47,5. 程序的調(diào)試和優(yōu)化,程序的調(diào)試 程序的錯(cuò)誤種類 錯(cuò)誤的識(shí)別和程序調(diào)試 程序的優(yōu)化 程序優(yōu)劣的分析 程序優(yōu)化的技巧 有效地使用內(nèi)存,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),48,(1)程序的錯(cuò)誤種類,在MATLAB 7的表達(dá)式中可能存在兩種類型的錯(cuò)誤,即語法錯(cuò)誤和運(yùn)行錯(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)象。,2020/11/3,第10章 MATLAB 7程序設(shè)計(jì),49,(2)錯(cuò)誤的識(shí)別和程序調(diào)試,對于簡單的問題,使用下面的一種或幾種方法可以方便地求解: 將函數(shù)中輸出關(guān)鍵值的行的分號(hào)(;)

溫馨提示

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

最新文檔

評論

0/150

提交評論