matlab第七講教案_第1頁(yè)
matlab第七講教案_第2頁(yè)
matlab第七講教案_第3頁(yè)
matlab第七講教案_第4頁(yè)
matlab第七講教案_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、西南科技大學(xué)本科生課程備課教案計(jì)算機(jī)技術(shù)在安全工程中的應(yīng)用 Matlab入門(mén)及應(yīng)用授課教師:徐中慧班 級(jí):專 業(yè):安全技術(shù)及工程2 / 21第七章 邏輯函數(shù)與控制結(jié)構(gòu)課型:新授課 教具:多媒體教學(xué)設(shè)備,matlab教學(xué)軟件一、目標(biāo)與要求能夠正確使用函數(shù)find,正解和正確使用if/else系列命令,理解switch/case結(jié)構(gòu),正確使用for循環(huán)和while循環(huán)。二、教學(xué)重點(diǎn)與難點(diǎn)本堂課教學(xué)的重點(diǎn)在于引導(dǎo)學(xué)生在編寫(xiě)matlab程序時(shí)能夠熟練運(yùn)用控制結(jié)構(gòu)的相關(guān)函數(shù)實(shí)現(xiàn)相應(yīng)的功能。三、教學(xué)方法 本課程主要通過(guò)講授法、演示法、練習(xí)法等相結(jié)合的方法來(lái)引導(dǎo)學(xué)生掌控本堂課的學(xué)習(xí)內(nèi)容。四、教學(xué)內(nèi)容課后習(xí)題

2、講解% onea=15 3 22;3 8 5;14 3 82;b=1 5 6'c=12 18 5 2;d=a(:,3)% twoe=b,d% threef=b;d% fourg=c(1:3);a% fiveh=a(1,3),c(1,2),b(2,1)% Variable Definition Density_mercury=13560;g=9.81;p=0:10000:100000;% mercuryh_mercury=p./(Density_mercury*g)% waterh_water=h_mercury.*13560/1000% outputh=h_mercury',h

3、_water' (3)已知下列矩陣:查找各矩陣中所有大于10的元素的序號(hào),輸出結(jié)果用單序號(hào)方法表示。查找各矩陣中所有大于10的元素的序號(hào),輸出結(jié)果用該元素的下標(biāo)表示。查找各矩陣中所有大于10的元素。查找各矩陣中所有大于10小于40的元素的序號(hào),輸出結(jié)果用單序號(hào)方法表示。查找各矩陣中所有大于10小于40的元素的序號(hào),輸出結(jié)果用該元素的下標(biāo)表示。查找各矩陣中所有大于10小于40的元素用length和find查詢各矩陣中數(shù)值在0到10之間或70到80之間元素的個(gè)數(shù)。% Variable Definition x=1 10 42 6;5 8 78 23;56 45 9 13;23 22 8 9

4、;y=1 2 3;4 10 12;7 21 27;z=10 22 5 13;% onea=find(x>10),b=find(y>10),c=find(z>10),% twoa2,A2=find(x>10),b2,B2=find(y>10),c2,C2=find(z>10),% threea3=x(a),b3=y(b),c3=z(c),% foura4=find(x>10&x<40),b4=find(y>10&y<40),c4=find(z>10&z<40),% fivea5,A5=find(x&g

5、t;10&x<40)b5,B5=find(y>10&y<40)c5,C5=find(z>10&z<40)% sixa6=x(a4),b6=y(b4),c6=z(c4)% sevena7=find(x>0&x<10)|(x>70&x<80);aa=length(a7)b7=find(y>0&y<10)|(y>70&y<80);bb=length(b7)c7=find(z>0&z<10)|(z>70&z<80);cc=leng

6、th(c7)(4)使用if、if/else、elseif等結(jié)構(gòu)創(chuàng)建函數(shù)解決下列問(wèn)題,假設(shè)函數(shù)的輸入數(shù)據(jù)為標(biāo)量,對(duì)函數(shù)進(jìn)行測(cè)試。假設(shè)某州的法定飲酒年齡為21歲,創(chuàng)建函數(shù)判斷是否達(dá)到法定飲酒年齡。許多游樂(lè)場(chǎng)所規(guī)定了參與者的最低身高。假設(shè)某種游戲要求參與者必須高于155,創(chuàng)建函數(shù)判斷是否符合身高要求。在產(chǎn)品制造時(shí),通常會(huì)規(guī)定產(chǎn)品尺寸的容差。假設(shè)某產(chǎn)品的長(zhǎng)度為5.4,可以允許有0.1的正負(fù)誤差。創(chuàng)建函數(shù)判斷產(chǎn)品是否符合該技術(shù)要求。固體燃料火箭發(fā)動(dòng)機(jī)有三級(jí)。第一級(jí)的燃料耗盡后與導(dǎo)彈分離,第二級(jí)點(diǎn)火。然后第二級(jí)燃盡分離后第三級(jí)點(diǎn)火。最后,第三級(jí)燃盡后與導(dǎo)彈分離。各級(jí)的燃燒時(shí)間如下所示:級(jí)1 0100s級(jí)2

7、 100170s級(jí)3 170260s創(chuàng)建函數(shù)判斷火箭正處于第一級(jí)、第二級(jí)、第三級(jí)和自由飛行(無(wú)動(dòng)力階段)中的哪個(gè)階段?age=input('Enter a value of your age: ');if age>21 disp('You have reached legal drinking age !')else disp('You''v not reached legal drinking age !')endHeight=input('Enter a value of your height: ');

8、if height>155 disp('You have reached the height !')else disp('You''v not reached the height !')endsize=input('Enter a value of size: ');if size<5.3 disp(' It''s not a accepted product !')elseif size>5.5 disp(' It''s not a accepted

9、product !')else disp(' It''s a accepted product!')end或size=input('Enter a value of size: ');if size>5.3&size<5.5 disp(' It''s a accepted product!')else disp(' It''s not a accepted product !')endtime=input('Enter a value of tim

10、e: ');if time>0&time<100 disp('one')elseif time>0&time<170 disp('two')elseif time>0&time<260 disp('three')elseif time>260 disp('free fly')else disp('You input a error information !') end接第六課內(nèi)容(4)switch/case結(jié)構(gòu)在Matlab中,switch

11、/case結(jié)構(gòu)可以根據(jù)一個(gè)給定參數(shù)的不同取值,執(zhí)行不同的命令。它和if/else/elseif類似,都屬于條件分支結(jié)構(gòu)。凡是能夠用if/else/elseif結(jié)構(gòu)實(shí)現(xiàn)的程序功能都可以用switch/case結(jié)構(gòu)實(shí)現(xiàn)。而且用switch/case結(jié)構(gòu)實(shí)現(xiàn)程序代碼更容易理解。switch/case結(jié)構(gòu)和elseif結(jié)構(gòu)的最大區(qū)別在于判斷的條件既可以是標(biāo)題也可以是字符串,在實(shí)際情況下,字符串形式的判斷條件比數(shù)字形式要常用。Switch/case的語(yǔ)法結(jié)構(gòu)如下: switch variable case option1 code to be executed if variable is equal

12、to option 1 case option2 code to be executed if variable is equal to option 2 case option n code to be executed if variable is equal to option n otherwise code to be executed if variable is not equal to any of the optionsend實(shí) 例創(chuàng)建函數(shù)用來(lái)顯示三個(gè)城市的飛機(jī)票價(jià)格city=input('Enter the name of a city: ','s&

13、#39;)switch city case 'Boston' disp('$345') case 'Denver' disp('$150') case 'Honolulu' disp('Stay home and study') otherwise disp('Not on file')end語(yǔ)句中otherwise不是必需的,這條語(yǔ)句表示當(dāng)所有的情況都不滿足時(shí),程序的輸出結(jié)果。在C語(yǔ)言中也有switch/case結(jié)構(gòu)。Matlab和C語(yǔ)言的不同之處在于當(dāng)某一條件為true時(shí),Mat

14、lab不再驗(yàn)證其它條件是否滿足。例 題世界上許多國(guó)家沒(méi)有對(duì)公制單位的使用做強(qiáng)制性規(guī)定,這些國(guó)家包括美國(guó)、英國(guó)、利比亞和緬甸。在美國(guó)既可以使用公制單位也可以使用英制單位。例如,老式汽車(chē)中既使用了公制單位也使用了英制單位,而1989年以后生產(chǎn)的新款汽車(chē)全部采用公制單位。酒的單位是升,牛奶的單位是加侖,距離的單位是英里,功率的單位是瓦特。公制單位和英制單位經(jīng)常會(huì)發(fā)生混淆。如果駕車(chē)從美國(guó)到加拿大旅行就會(huì)發(fā)現(xiàn)在美國(guó)汽油的單位的加侖,而在加拿大汽油的單位是升。用switch/case結(jié)構(gòu)編寫(xiě)一段程序,要求具有以下功能:J 由用戶輸入汽油的單位(升或加侖)J 提示用戶輸入想購(gòu)買(mǎi)汽油的數(shù)量J 假設(shè)每加侖汽油2

15、.89美元,計(jì)算汽油的總價(jià)1.問(wèn)題描述計(jì)算汽油的總價(jià)2.輸入/輸出描述輸入: 指定汽油的計(jì)量單位是加侖還是升以及購(gòu)買(mǎi)的汽油的數(shù)量輸出: 每加侖2.89美元,計(jì)算汽油的總價(jià)clear,clc%Define the cost per gallonrate=2.89;%Ask the user to input gallons or litersunit=input('Enter gallons or liters','s');%Use to switch/case to determine the conversion factorswitch unit case

16、'gallons' factor=1; case 'liters' factor=0.264; otherwise disp('Not available') factor=0;end%Ask the user how much gas he/she would like to buyvolume=input('Enter the volume you would like to buy inn');%Calculate the cost of the gasif factor=0 cost=volume*factor*rate;

17、 %Send the results to the screen fprintf('That will be $ %5.2f for %5.1f %sn',cost,volume,unit)end(5)menu結(jié)構(gòu)函數(shù)menu常和switch/case結(jié)構(gòu)一起使用。運(yùn)行后,在屏幕上會(huì)出現(xiàn)一個(gè)菜單,菜單的內(nèi)容可以由編程人員設(shè)定。函數(shù)menu的語(yǔ)法結(jié)構(gòu)為input=menu(Message to the user,text for button 1,text for button 2,etc.) 在前面飛機(jī)票的例子中如果使用menu,用戶就可以在菜單上選擇任意一個(gè)城市。由于用戶不可

18、能選擇“not on file”作為城市名,因此原程序中可以去掉otherwise語(yǔ)句:city=menu('Select a city from the menu:','Boston','Denver','Honolulu')switch city case 1 disp('$345') case 2 disp('$150') case 3 disp('Stay home and study')end注:使用菜單這種圖形化界面可以大大減少用戶出現(xiàn)拼寫(xiě)錯(cuò)誤的可能性。同時(shí)在case語(yǔ)句

19、中用序號(hào)代替了字符串。這個(gè)腳本程序運(yùn)行后,屏幕上會(huì)出現(xiàn)如下圖所示的菜單,用戶可以選擇任意一個(gè)選項(xiàng),matlab就會(huì)出現(xiàn)相關(guān)的結(jié)果。加油問(wèn)題,采用菜單方式在上例中用switch/case實(shí)現(xiàn)了以加侖或升為單位加油的功能。程序中存在一個(gè)問(wèn)題:即如果用戶拼寫(xiě)錯(cuò)誤,程序?qū)o(wú)法運(yùn)行。例如:當(dāng)程序提示用戶輸入gallons或liters時(shí),用戶錯(cuò)誤的輸入litters 程序?qū)⑤敵?Not available 如果在程序中使用菜單功能,那么用戶只需選擇按鍵就可以完成操作,這樣就避免了錯(cuò)誤地發(fā)生。修改后的程序仍然采用switch/case結(jié)構(gòu),不過(guò)需要添加菜單功能。1.問(wèn)題描述計(jì)算汽油的總價(jià)2.輸入/輸出描述

20、輸入 使用菜單確定汽油的計(jì)量單位是加侖還是升輸出 假設(shè)每加侖汽油2.89美元,計(jì)算汽油的總價(jià)clc,clear% Define the cost per gallonrate=2.89;% Ask the user to input gallons or liters ,using a menudisp('Use the menu box to make your selection')choice=menu('Measure the gasoline in liters or gallons?','gallons','liters

21、9;);switch choice case 1 factor=1; unit='gallons' case 2 factor=0.264; unit='liter'end% Ask the user how much gas he/she would like to byvolume=input('Enter the volume you would like to buy in ',unit,':n');% Calculate the cost of the gascost=volume*factor*rate;% Send

22、the results to the screenfprintf('That will be $ %5.2f for %5.1f %sn',cost ,volume ,unit)(6)循環(huán)結(jié)構(gòu)for循環(huán) 循環(huán)結(jié)構(gòu)一般用于重復(fù)操作。Matlab中有兩種不同的循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)。如果已知循環(huán)的次數(shù),多采用for循環(huán)。如果需要滿足某一條件時(shí)停止循環(huán),多采用while循環(huán)。雖然在程序開(kāi)發(fā)過(guò)程中廣泛采用循環(huán)結(jié)構(gòu),但是在編程時(shí)還是應(yīng)該盡量避免出現(xiàn)循環(huán)結(jié)構(gòu)。在Matlab中,可以使用find命令或矢量化的方法避免循環(huán)結(jié)構(gòu),所謂矢量化就是操作過(guò)程中盡量用矢量代替元素。減少循環(huán)

23、結(jié)構(gòu)有利于提高程序的運(yùn)行速度,簡(jiǎn)化編程步驟。for循環(huán)結(jié)構(gòu)非常簡(jiǎn)單。第一行標(biāo)識(shí)循環(huán),定義索引矩陣。循環(huán)體每執(zhí)行一次,索引值都會(huì)發(fā)生一次變化。循環(huán)標(biāo)識(shí)行后緊接著是執(zhí)行的代碼,最后是循環(huán)結(jié)束標(biāo)志end??傊?,for循環(huán)的一般結(jié)構(gòu)如下:for index=matrix commands to be executedendEg: for k=1 3 5 kendfor k=1:3; a=5.kend提 示大部分計(jì)算機(jī)程序不具有Matlab中矩陣運(yùn)算能力,因此常利用循環(huán)體定義數(shù)組。實(shí)際上,在Matlab中利用下述代碼創(chuàng)建適量更簡(jiǎn)單。for k=1:5a(k)=k.2endk=1:5,a=k.2for循環(huán)

24、常和if語(yǔ)句配合使用例如:在下面這段程序中,統(tǒng)計(jì)考試成績(jī)?yōu)?0分以上的有多少人?scores=76 45 98 97;count=0;for k=1:length(scores) if scores(k)>90 count=count+1; endenddisp(count)在大多數(shù)情況下,for循環(huán)中的索引矩陣是一個(gè)單行矩陣。如果索引矩陣是一個(gè)二維矩陣,matlab每次取矩陣中的一列作為索引值。for k=1 2 3;1 4 9;1 8 27 a=k'end for循環(huán)的用法總結(jié):l 循環(huán)體以for語(yǔ)句開(kāi)始,以end語(yǔ)句結(jié)束。l 循環(huán)體的第一行用索引矩陣定義循環(huán)的次數(shù)。l fo

25、r循環(huán)的索引必須是一個(gè)變量,每執(zhí)行一次循環(huán),索引值就會(huì)發(fā)生變化。l 可以用前面介紹過(guò)的任何一種方法定義索引矩陣,但是一般情況下采用冒號(hào)方式定義。l 如果索引矩陣是一個(gè)行矢量,那么每執(zhí)行循環(huán)一次,依次取矢量中的一個(gè)元素作為索引值。l 如果索引矩陣是二維矩陣,那么每執(zhí)行循環(huán)一次,依次取矩陣中下一列的值,即在這種情況下索引值是一個(gè)列矢量。l for循環(huán)結(jié)束后,索引值等于最后一次執(zhí)行的數(shù)值。l 對(duì)程序代碼矢量化可以避免for循環(huán)。例 題用for循環(huán)計(jì)算階乘 階乘就是1到N所有的數(shù)相乘。例如5的階乘就是1*2*3*4*5120。在數(shù)學(xué)中,常用感嘆號(hào)表示階乘:5!就是5的階乘。Matlab的內(nèi)置函數(shù)fac

26、torial就可以計(jì)算階乘?,F(xiàn)在我們編一小段程序來(lái)計(jì)算階乘。x=input('Enter a value for factorialn');a=1;for k=1:x a=a*k;enddisp(a)(7)循環(huán)結(jié)構(gòu)while循環(huán) while循環(huán)和for循環(huán)類似,兩者的最大區(qū)別在于while循環(huán)的次數(shù)是不固定的。只要判斷條件為true,循環(huán)體就會(huì)被執(zhí)行。while循環(huán)的語(yǔ)法結(jié)構(gòu)如下: while criterion commands to be executedend Eg: k=0; while k<3 k=k+1; end disp(k)實(shí) 例 While循環(huán)還可以檢查用戶的輸入錯(cuò)誤。例如:計(jì)算以10為底的對(duì)數(shù)時(shí)要求輸入數(shù)據(jù)為正數(shù)。用while循環(huán)檢查輸入

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論