《MATLAB基礎(chǔ)教程(第六版)(微課版)》ch06 MATLAB 編程_第1頁
《MATLAB基礎(chǔ)教程(第六版)(微課版)》ch06 MATLAB 編程_第2頁
《MATLAB基礎(chǔ)教程(第六版)(微課版)》ch06 MATLAB 編程_第3頁
《MATLAB基礎(chǔ)教程(第六版)(微課版)》ch06 MATLAB 編程_第4頁
《MATLAB基礎(chǔ)教程(第六版)(微課版)》ch06 MATLAB 編程_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2024年11月22日第1頁第6章MATLAB編程MATLAB基礎(chǔ)教程(第六版)(微課版)教學(xué)目標(biāo)教學(xué)內(nèi)容2024年11月22日第2頁教學(xué)目標(biāo)掌握MATLAB的腳本文件及其編輯和調(diào)試方法掌握MATLAB的程序設(shè)計(jì)和開發(fā)流程掌握MATLAB關(guān)系運(yùn)算、邏輯運(yùn)算及函數(shù)操作掌握MATLAB中的流程控制語句了解MATLAB的程序調(diào)試方法2024年11月22日第3頁教學(xué)內(nèi)容腳本文件和編輯器程序設(shè)計(jì)和開發(fā)關(guān)系運(yùn)算符和邏輯變量邏輯運(yùn)算符和函數(shù)條件語句循環(huán)switch結(jié)構(gòu)調(diào)試MATLAB程序2024年11月22日第4頁腳本文件和編輯器(1/11)在MATLAB中,用戶可以使用兩種方法執(zhí)行運(yùn)算:

(1)在交互模式下,直接在命令窗口中輸入所有的命令。

(2)通過運(yùn)行腳本文件中所存儲(chǔ)的MATLAB程序。2024年11月22日第5頁腳本文件和編輯器(2/11)創(chuàng)建和使用腳本文件2024年11月22日第6頁腳本文件和編輯器(3/11)有效使用腳本文件

(1)腳本文件名必須滿足MATLAB為變量命名的約定。(2)為腳本文件賦予的名稱不要與其所計(jì)算的變量名稱相同。(3)為腳本文件賦予的名稱要與MATLAB命令或者函數(shù)的名稱都不相同。(4)在交互模式中,腳本文件所創(chuàng)建的所有變量都是全局變量。(5)函數(shù)文件所創(chuàng)建的變量是該函數(shù)的局部變量。用戶如果不必訪問腳本文件中的所有變量,就需要考慮使用函數(shù)文件。這將避免用變量名“弄亂”工作空間,并將同時(shí)減少內(nèi)存需求。(6)在不使用文本編輯器打開M-文件的情況下,用戶可以使用type命令來查看文件的內(nèi)容。2024年11月22日第7頁腳本文件和編輯器(4/11)有效使用命令行窗口和編輯器用戶可以使用鼠標(biāo)重新調(diào)整窗口的大小并移動(dòng)窗口,從而可以同時(shí)查看它們。如果沒有進(jìn)入編輯器,那么使用Alt-Tab組合鍵則可快速地在編輯器/調(diào)試器窗口和命令窗口之間來回切換。在命令窗口中,使用向上箭頭鍵檢索先前所輸入的腳本文件名,并且按Enter鍵執(zhí)行腳本文件。在修改了腳本文件之后,要確保在切換到命令窗口之前保存文件。用戶可以使用編輯器作為基本的文字處理器來編寫包含有用戶腳本文件、結(jié)果和討論的簡短報(bào)告,或者用以提供用戶對(duì)某一問題的解答。2024年11月22日第8頁腳本文件和編輯器(5/11)調(diào)試腳本文件程序調(diào)試就是找出和刪除程序中“故障”或者錯(cuò)誤的過程。

(1)語法錯(cuò)誤(2)運(yùn)行時(shí)錯(cuò)誤MATLAB錯(cuò)誤消息通常使用戶能夠找到語法錯(cuò)誤。檢查出運(yùn)行時(shí)錯(cuò)誤,可以嘗試以下方法:

(1)總是使用簡單問題(其可以通過手算來檢驗(yàn)答案)來測試程序。

(2)刪除語句末尾的分號(hào),用以顯示任何一個(gè)中間計(jì)算結(jié)果。

(3)使用編輯器的調(diào)試特性。2024年11月22日第9頁腳本文件和編輯器(6/11)編程風(fēng)格注釋部分(1)

在第一行中放置程序名和任何關(guān)鍵詞。(2)在第二行中放置創(chuàng)建的日期,以及創(chuàng)建者的姓名。(3)

每個(gè)輸入和輸出變量的變量名定義。(4)

程序中調(diào)用的每個(gè)用戶自定義函數(shù)名稱。輸入部分:放置輸入數(shù)據(jù)和/或輸入函數(shù),其允許輸入數(shù)據(jù)。計(jì)算部分

:放置計(jì)算。

輸出部分:放置那些以所需格式傳遞的輸出函數(shù)。2024年11月22日第10頁腳本文件和編輯器(7/11)記錄度量單位本書建議用戶為所有的輸入變量和輸出變量記錄度量單位,因?yàn)楹芏喙こ滔到y(tǒng)所出現(xiàn)的驚人失敗都源于用戶誤解了用于設(shè)計(jì)系統(tǒng)的程序輸入和輸出變量的單位。2024年11月22日第11頁腳本文件和編輯器(8/11)使用腳本文件存儲(chǔ)數(shù)據(jù)可能會(huì)有一些應(yīng)用程序要求用戶頻繁地訪問同一組數(shù)據(jù)。如果是這樣的話,用戶可以將數(shù)組中的數(shù)據(jù)存儲(chǔ)在一個(gè)腳本文件之中。2024年11月22日第12頁腳本文件和編輯器(9/11)控制輸入和輸出MATLAB為從用戶獲取輸入以及為格式化輸出(執(zhí)行MATLAB命令而獲得的結(jié)果)提供了許多有用的命令。

令說

明disp(A)顯示數(shù)組A的內(nèi)容,而不是數(shù)組的名稱disp(‘text’)顯示單引號(hào)內(nèi)部的文本串Format控制屏幕輸出的顯示格式Fprintf執(zhí)行格式化的寫入到屏幕或者寫入到一個(gè)文件x=input('text')顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入值存儲(chǔ)在x中x=input('text','s')顯示單引號(hào)中的文本,等待用戶的鍵盤輸入,并且將輸入作為字符串存儲(chǔ)在x中k=menu('title','option1','option2',...顯示菜單,該菜單的名稱在字符串變量'title'中,并且菜單的選項(xiàng)是'option1'、'option2'等等2024年11月22日第13頁腳本文件和編輯器(10/11)用戶輸入input函數(shù)用以在屏幕上顯示文本,等待用戶從鍵盤輸入某些內(nèi)容,然后再將輸入內(nèi)容存儲(chǔ)在指定變量之中。2024年11月22日第14頁腳本文件和編輯器(11/11)腳本文件示例%程序Falling_Speed.m:繪制一個(gè)下落物體的速度圖形。%W.PalmIII于2004年3月1日創(chuàng)建。%%輸入變量:%tf=最終時(shí)間(單位為秒)%%輸出變量:%t=計(jì)算速度的時(shí)間數(shù)組(單位為秒)%v=速度數(shù)組(米/秒)%參數(shù)值:g=9.81;%以SI為單位的重力加速度%%輸入部分:tf=input('Enterthefinaltimeinseconds:');%%計(jì)算部分:dt=tf/500;t=[0:dt:tf];%創(chuàng)建一個(gè)有501個(gè)時(shí)間值的數(shù)組。v=g*t;%%輸出部分:plot(t,v),xlabel('Time(seconds)'),ylabel('Speed(meters/second)')2024年11月22日第15頁程序設(shè)計(jì)和開發(fā)(1/5)算法和控制結(jié)構(gòu)(1)順序運(yùn)算。(2)條件運(yùn)算。(3)迭代運(yùn)算(循環(huán))。

結(jié)構(gòu)化程序設(shè)計(jì)(1)編寫結(jié)構(gòu)化程序較容易。(2)為一個(gè)應(yīng)用編寫的模塊(函數(shù))也可以用于其他的應(yīng)用。(3)調(diào)試結(jié)構(gòu)化程序較容易。(4)結(jié)構(gòu)化程序設(shè)計(jì)在團(tuán)隊(duì)環(huán)境中非常有效。(5)理解和修改結(jié)構(gòu)化程序較容易。2024年11月22日第16頁程序設(shè)計(jì)和開發(fā)(2/5)自頂向下的設(shè)計(jì)和程序文檔(1)簡明地陳述問題(2)指定程序所使用的數(shù)據(jù)。這就是“輸入”(3)指定程序所產(chǎn)生的信息。這就是“輸出”(4)通過手算或者計(jì)算器完成解決方案的步驟。如果需要的話,可以使用一個(gè)較簡單的數(shù)據(jù)集(5)編寫和運(yùn)行程序(6)用手算結(jié)果檢驗(yàn)程序的輸出(7)用輸入數(shù)據(jù)運(yùn)行程序,并且對(duì)輸出進(jìn)行一個(gè)真實(shí)性檢驗(yàn)(8)如果用戶在將來使用該程序作為一個(gè)通用工具,那么,用戶必須通過用一組合理的數(shù)據(jù)值來運(yùn)行它以進(jìn)行測試;并對(duì)結(jié)果進(jìn)行一個(gè)真實(shí)性檢驗(yàn)2024年11月22日第17頁程序設(shè)計(jì)和開發(fā)(3/5)自頂向下的設(shè)計(jì)和程序文檔結(jié)構(gòu)圖和流程圖通過使用以下方法實(shí)現(xiàn)有效的文檔記錄。(1)合適地選擇變量名,用以反映它們所代表的量。(2)在程序中使用注釋。(3)使用結(jié)構(gòu)圖。(4)使用流程圖。(5)通常在偽代碼中逐字地描述程序。2024年11月22日第18頁程序設(shè)計(jì)和開發(fā)(4/5)偽代碼

偽代碼是對(duì)實(shí)際計(jì)算機(jī)代碼的模仿。偽代碼可以為程序內(nèi)部的注釋提供根據(jù)。除了提供文檔記錄之外,偽代碼在編寫詳細(xì)代碼之前對(duì)于一個(gè)程序輪廓所進(jìn)行的描述也很有用。查找故障參看6.1.4節(jié)2024年11月22日第19頁程序設(shè)計(jì)和開發(fā)(5/5)開發(fā)大型程序(1)編寫和測試各個(gè)模塊(單元測試階段)。(2)編寫使用模塊的頂級(jí)程序(構(gòu)建階段)。(3)測試第一個(gè)完整的程序(alpha測試版階段)。(4)由內(nèi)部人員與熟悉和信任的外部用戶(這通常必須簽保密協(xié)議)測試最后的alpha測試版。2024年11月22日第20頁關(guān)系運(yùn)算符和邏輯變量(1/4)6個(gè)關(guān)系運(yùn)算符:

<小于,<=小于或者等于,>大于,

>=大于或者等于,==等于,~=不等于使用關(guān)系運(yùn)算符進(jìn)行比較的結(jié)果是0(如果比較是假)或者1(如果比較是真),并且MATLAB可以使用這個(gè)結(jié)果作為一個(gè)變量。用于比較數(shù)組時(shí),關(guān)系運(yùn)算符逐元素地比較數(shù)組。比較的數(shù)組必須具有相同的維數(shù)。唯一的例外是當(dāng)用戶比較一個(gè)數(shù)組和一個(gè)標(biāo)量的時(shí)候,這時(shí)MATLAB將數(shù)組中的所有元素分別與標(biāo)量進(jìn)行比較。關(guān)系運(yùn)算符也可以用于數(shù)組尋址。算術(shù)運(yùn)算符+、-、*、/和\的優(yōu)先級(jí)高于關(guān)系運(yùn)算符。關(guān)系運(yùn)算符之間的優(yōu)先級(jí)相等,并且MATLAB按照從左到右的順序計(jì)算它們的值。2024年11月22日第21頁關(guān)系運(yùn)算符和邏輯變量(2/4)logical類當(dāng)使用關(guān)系運(yùn)算符(如x=(5>2))時(shí),創(chuàng)建了一個(gè)邏輯變量(在此處就是x)。在MATLAB之前的版本中,logical是任何一個(gè)數(shù)值數(shù)據(jù)類型的屬性。現(xiàn)在,logical是一個(gè)第一類數(shù)據(jù)類型和一個(gè)MATLAB類,所以logical現(xiàn)在等效于其他的第一類類型,如字符和單元數(shù)組。邏輯變量只可能有值1(真)和0(假)。2024年11月22日第22頁關(guān)系運(yùn)算符和邏輯變量(3/4)logical函數(shù)用戶可以使用關(guān)系和邏輯運(yùn)算符以及l(fā)ogical函數(shù)創(chuàng)建邏輯數(shù)組。logical函數(shù)返回一個(gè)可以用于邏輯索引和邏輯測試的數(shù)組。2024年11月22日第23頁關(guān)系運(yùn)算符和邏輯變量(4/4)使用邏輯數(shù)組訪問數(shù)組當(dāng)使用邏輯數(shù)組尋址另一個(gè)數(shù)組時(shí),MATLAB會(huì)從那個(gè)數(shù)組中提取邏輯數(shù)組有1那個(gè)位置中的元素。2024年11月22日第24頁邏輯運(yùn)算符和函數(shù)(1/2)MATLAB中有5個(gè)邏輯運(yùn)算符,有時(shí)也稱為布爾(Boolean)運(yùn)算符,這些運(yùn)算符執(zhí)行逐元素運(yùn)算。除了NOT運(yùn)算符(~)之外,它們的優(yōu)先級(jí)比算術(shù)和關(guān)系運(yùn)算符的都低。NOT運(yùn)算&和|運(yùn)算符與(AND)運(yùn)算或(OR)運(yùn)算異或函數(shù)2024年11月22日第25頁邏輯運(yùn)算符和函數(shù)(2/2)短路邏輯運(yùn)算符

A&&BA||B邏輯運(yùn)算符和find函數(shù)函數(shù)find(x)計(jì)算一個(gè)數(shù)組,它包含數(shù)組x中那些非零元素的索引。它可與邏輯運(yùn)算符結(jié)合使用。2024年11月22日第26頁條件語句(1/3)if語句

if語句的基本形式:

if邏輯表達(dá)式語句

end“嵌套”if語句

if邏輯表達(dá)式1

語句組1if邏輯表達(dá)式2

語句組2endend每條if語句必須伴隨有一條end語句。end語句標(biāo)志著邏輯表達(dá)式為true時(shí)所要執(zhí)行語句的結(jié)束。if和邏輯表達(dá)式(其可以是一個(gè)標(biāo)量、一個(gè)矢量或者一個(gè)矩陣)之間需要一個(gè)空格。2024年11月22日第27頁條件語句(2/3)else語句與elseif語句else語句的基本結(jié)構(gòu)為:

if邏輯表達(dá)式語句組1else

語句組2end使用elseif語句的一般形式是:if邏輯表達(dá)式1語句組1elseif邏輯表達(dá)式2語句組2else語句組3end2024年11月22日第28頁條件語句(3/3)字符串和條件語句字符串是一個(gè)包含有字符的變量。字符串對(duì)于創(chuàng)建輸入提示符、消息、存儲(chǔ)以及對(duì)諸如姓名和地址等數(shù)據(jù)進(jìn)行的操作都很有用。要在MATLAB創(chuàng)建一個(gè)字符串變量,可以將字符放在單引號(hào)中。字符串最重要的應(yīng)用之一是:創(chuàng)建輸入提示和輸出消息。

2024年11月22日第29頁循環(huán)(1/4)for循環(huán)for循環(huán)的典型結(jié)構(gòu)如下所示:

for循環(huán)變量=m:s:n

語句

end注意

for語句需要伴隨有一個(gè)end語句。end語句標(biāo)志著所要執(zhí)行語句的結(jié)束。在for和loop變量(其可能是一個(gè)標(biāo)量、一個(gè)矢量或者一個(gè)矩陣,但是到目前為止,標(biāo)量是最常見的情況)之間需要一個(gè)空格。2024年11月22日第30頁循環(huán)(2/4)break和continue語句break語句停止循環(huán)的執(zhí)行。continue語句將把控制傳遞給那些它出現(xiàn)在其中的for或者while循環(huán)的下一次迭代之中,并同時(shí)跳過循環(huán)主體中的其他任何語句。在嵌套循環(huán)中,continue將控制傳遞給關(guān)閉了continue語句的for或者while循環(huán)的下一次迭代。2024年11月22日第31頁循環(huán)(3/4)使用數(shù)組作為循環(huán)索引

MATLAB中允許使用一個(gè)矩陣表達(dá)式為循環(huán)指定所執(zhí)行的遍數(shù)。在這種情況下,循環(huán)變量是一個(gè)矢量,并且在每一遍循環(huán)執(zhí)行期間,MATLAB都將循環(huán)變量設(shè)置成等效于矩陣表達(dá)式的連續(xù)列。

隱含循環(huán)使用邏輯數(shù)組作為掩碼通??梢酝ㄟ^使用邏輯數(shù)組作為掩碼(即,選擇另一個(gè)數(shù)組的元素)來避免使用循環(huán)和分支,用戶因此可以創(chuàng)建更簡單和更快捷的程序。2024年11月22日第32頁循環(huán)(4/4)while循環(huán)while循環(huán)的典型結(jié)構(gòu)如下所示:

while邏輯表達(dá)式語句

end要使while循環(huán)正常運(yùn)行,必須發(fā)生以下這兩個(gè)前提條件:

(1)在執(zhí)行while語句之前,循環(huán)變量必須有一個(gè)值。(2)語句必須以某種方式改變循環(huán)變量的值。while循環(huán)的主要應(yīng)用是:當(dāng)用戶希望只要某個(gè)語句為true時(shí),循環(huán)就繼續(xù)進(jìn)行。2024年11月22日第33頁switch結(jié)構(gòu)(1/1)switch結(jié)構(gòu)的語法是:

switch輸入表達(dá)式(標(biāo)量或者字符串)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論