(完整版)matlab第六講教案_第1頁(yè)
(完整版)matlab第六講教案_第2頁(yè)
(完整版)matlab第六講教案_第3頁(yè)
(完整版)matlab第六講教案_第4頁(yè)
(完整版)matlab第六講教案_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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入門及應(yīng)用授課教師:徐中慧班 級(jí):業(yè):安全技術(shù)及工程第六章 邏輯函數(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é)生在編寫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)容上機(jī)內(nèi)容回顧(1)創(chuàng)

2、建溫度換算表。下列等式描述了華氏溫度(Tf)、攝氏溫度(Tc)、開(kāi)氏溫度(Tk)和蘭金溫度(Tr)之間的換算關(guān)系:TfTr459.670RTf5Tc320FTr5T根據(jù)表達(dá)式解答以下問(wèn)題:(a)創(chuàng)建數(shù)據(jù)表,把00F到2000F的華氏溫度換算成開(kāi)氏溫度。由用戶輸入華氏溫度的步長(zhǎng),用 disp 和fprintf給表格添加標(biāo)題和表頭并輸出格式化數(shù)據(jù)。x=input('請(qǐng)輸入步長(zhǎng)');tf=0:x:200;tk=5/9*(tf+459.67);disp(' 溫度換算表);disp('華氏開(kāi)氏);fprintf('%3.0f %6.2fn',tf;tk)請(qǐng)

3、輸入步長(zhǎng)20溫度換算表華氏 開(kāi)氏0255.3720266.4840277.5960288.7180299.82100310.93120322.04140333.15160344.26180355.37200366.48>>(b)創(chuàng)建一個(gè)有25行數(shù)據(jù)的表,把攝氏溫度換算成蘭金溫度。由用戶輸入起始溫度和合適的步長(zhǎng), 用 disp 和 fprintf 給表格添加標(biāo)題和表頭并輸出格式化數(shù)據(jù)。x=input(' 請(qǐng)輸入起始攝氏溫度');y=input(' 請(qǐng)輸入步長(zhǎng)');tc=x:y:x+24*y;tr=9/5*tc+32+459.67;disp('

4、溫度換算表);disp('攝氏蘭金');fprintf('%3.0f %6.2fn',tc;tr)請(qǐng)輸入起始攝氏溫度0請(qǐng)輸入步長(zhǎng)20溫度換算表攝氏蘭金0491.6720527.6740563.6760599.6780635.67100671.67120707.67140743.67160779.67180815.67200851.67220887.67240923.67260959.67280995.673001031.673201067.673401103.673601139.673801175.674001211.674201247.674401283.67

5、4601319.674801355.67>>disp(c)創(chuàng)建數(shù)據(jù)表,把攝氏溫度換算成華氏溫度。由用戶輸入起始溫度、步長(zhǎng)和數(shù)據(jù)的行數(shù)。用 和 fprintf 給表格添加標(biāo)題和表頭并輸出格式化數(shù)據(jù)。m=input('請(qǐng)輸入起始攝氏溫度);n=input('請(qǐng)輸入步長(zhǎng));w=input('請(qǐng)輸入數(shù)據(jù)的行數(shù))tc=m:n:m+(w-1)*n;tf=9/5*tc+32;disp('溫度換算表);disp('攝氏華氏');fprintf('%3.0f %6.2fn',tc;tf)請(qǐng)輸入起始攝氏溫度0請(qǐng)輸入步長(zhǎng)10請(qǐng)輸入數(shù)據(jù)的行數(shù)

6、5w =5溫度換算表攝氏 華氏032.001050.002068.003086.0040104.00>>(2)在t=0時(shí)刻,火箭的發(fā)動(dòng)機(jī)關(guān)閉,此時(shí)火箭的海拔高度為500m ,提升速度為125m/s??紤]重力加速度,火箭的高度是時(shí)間的函數(shù):h(t) 竽t2 125t 500,tf 0計(jì)算時(shí)間在0到30秒內(nèi)火箭的高度,并畫出曲線:用函數(shù)ginput估算火箭的最大高度和火箭返回地面的時(shí)間。t=0:30;h=-9.8/2*t.A2+125*t+500;plot(t,h)axis(0,30,0,1500)x,y=ginput(4)m=max(y)a,b=ginput(4) n=mean(a)

7、x =11.993112.546112.753512.4770y =1.0e+003 *1.29171.29171.29611.29611.2961e+003 a =29.066829.066828.928629.2742 b =-2.19302.19302.19302.1930 n =29.0841用disp把結(jié)果在命令窗口顯示出來(lái)。disp('火箭的最大高度(單位/m):');disp(m) disp('火箭返回地面的時(shí)間(單位/s):');disp(n) 火箭的最大高度(單位/m):1.2961e+003火箭返回地面的時(shí)間(單位/s):29.0841(3)

8、完成下面的問(wèn)題,用 ginput在圖形上截取數(shù)據(jù):/100。繪制一個(gè)圓形并定義角度數(shù)組,范圍在0到2 之間,步長(zhǎng)為用ginput在圓周上截取兩個(gè)點(diǎn)。用hold on保持圖形,用直線連接剛剛截取兩個(gè)點(diǎn)。用勾股定理計(jì)算兩點(diǎn)間距離。m=0:pi/100:2*pi;x=sin(m);y=cos(m);plot(x,y) hold on axis(-1,1,-1,1) a1,b1=ginput(1);a2,b2=ginput(1);c=a1 a2;d=b1 b2;plot(c,d)z=sqrt(a1-a2)A2+(b1-b2)A2)z =1.9928一、邏輯函數(shù)find命令巾nd用于查找矩陣中符合某種條

9、件的元素。 例如,美國(guó)海軍學(xué)院要求招收學(xué)員的身高必須高于66,假設(shè)擬招學(xué)員的身高為:height=63 67 65 72 69 78 75;用find命令查找符合身高要求的元素序號(hào):accept=find(height>=66)accept =2 45 67函數(shù)由nd輸出矩陣中符合要求的元素序號(hào)。若需要查看身高的數(shù)值,可以用元素序號(hào)調(diào)出該元素height(accept)ans =67 72 69 78 75為了增加輸出結(jié)果的可讀性,使用函數(shù)disp和fprintf 顯示輸出結(jié)果:The following candidates meet the height requirementCan

10、didate #2is67inches tallCandidate #4is72inches tallCandidate #5is69inches tallCandidate #6is78inches tallCandidate #7is75inches tall完整代碼:height=63 67 65 72 69 78 75;accept=find(height>=66)height(accept)disp('The following candidates meet the height requirement');fprintf( 'Candidate #

11、%4.0f is %4.0f inches talln' ,accept;height(accept)使用邏輯運(yùn)算符可以創(chuàng)建更加復(fù)雜的搜索條件。例如:除身高外,還要求學(xué)員的年齡必須在18歲到35歲之間。身高,英寸年 齡身高,英寸年 齡63186719651872206936783475126318693667197834651875127220程序代碼:applicants=63 18;67 19;65 18;72 20;69 36;78 34;75 12;pass=find(applicants(:,1)>=66 & applicants(:,2)>=18 &am

12、p; applicants(:,2)<=35)result=pass,applicants(pass,1),applicants(pass,2)'fprintf( 'Application #%4.0f is %4.0f inches tall and %4.0f years old'n',result)在前面的例題中,只輸出了符合條件元素的單一序號(hào)。如果采用下面的語(yǔ)法結(jié)構(gòu)調(diào)用函數(shù)find可以輸出符合條件元素的行、列號(hào)。row,col=find(criteria)假設(shè)用一個(gè)矩陣表示門診病人的體溫。查找體溫高于98.6的病人的序號(hào)95.3100.298.6t

13、emp 97.499.298.9100.1 99.397.0程序代碼:temp=95.3 100.2 98.6 97.4 99.2 98.9 100.1 99.3 97element=find(temp>98.6)row,col=find(temp>98.6)fprintf( 'Patient %4.0f at station %4.0f had a temp of %6.1f n',row,col,temp(element)')二、選擇結(jié)構(gòu)(1) 簡(jiǎn)單的if語(yǔ)句if語(yǔ)句的語(yǔ)法結(jié)構(gòu):if邏輯表達(dá)式程序行end如果比較結(jié)果(邏輯表達(dá)式)為 true ,那么執(zhí)行

14、if語(yǔ)句和end語(yǔ)句之間的程序代碼。若比較結(jié)果為 false ,則程序直接跳轉(zhuǎn)到end之后的語(yǔ)句。(2) if/else 結(jié)構(gòu)在if/else 結(jié)構(gòu)中,若條件滿足,則執(zhí)行某段程序;若條件不滿足,則執(zhí)行另外一段程序。例如:在 編寫計(jì)算變量x對(duì)數(shù)的程序。根據(jù)初等數(shù)學(xué)中的概念可知函數(shù)10g的輸入?yún)?shù)必須大于0。在程序中使用if/else結(jié)構(gòu),保證輸入?yún)?shù)為正數(shù)時(shí)才計(jì)算x的對(duì)數(shù)值。若輸入?yún)?shù)為0或負(fù)數(shù),則輸出錯(cuò)誤信息:if x>0y=log(x)elsedisp('The input to the log function must be postive') end如果x為矩陣,

15、則只有當(dāng)矩陣中所有元素都滿足條件時(shí),比較結(jié)果才為true。Eg: 如果輸入x=0:0.5:2;則因?yàn)檩斎胂蛄坎⒎撬性囟即笥?0,因此則Matlab會(huì)跳車t到else部分,輸出錯(cuò)誤信息。在if/else 語(yǔ)句中使用矢量會(huì)有很大的局限性,因此最好使用標(biāo)量提 示在程序中,使用函數(shù)beep可以發(fā)出嘟嘟,用于提示用戶出現(xiàn)錯(cuò)誤。x=input( 'Enter a value of x greater than 0:'); if x>0y=log(x) elsebeepdisp('The input to the log function must be positive&

16、#39;) end(3) elseif 結(jié)構(gòu)在if/else結(jié)構(gòu)中如果有多層嵌套,就會(huì)很難判斷到底應(yīng)該執(zhí)行哪段程序。如果在程序中使用函數(shù)elseif ,程序代碼就會(huì)變得更容易理解。下面這段程序可以根據(jù)申請(qǐng)人的年齡判定是否發(fā)放駕駛執(zhí)照: age=input('Enter a value of age:') if age<16disp('Sorry-You"ll have to wait') elseif age<18disp('You may have a youth license') elseif age<70dis

17、p('You may have a standard license') else disp('Drivers over 70 require a special license') end在這個(gè)例子中,Matlab首先檢查申請(qǐng)人年齡是否小于 16歲即age<16。如果表達(dá)式為true ,則執(zhí)行下 一條語(yǔ)句,顯示信息 Sorry-You''ll have to wait ,然后退出if結(jié)構(gòu)。如果比較結(jié)果為 false , Matlab對(duì)后面 的elseif語(yǔ)句進(jìn)行判斷, 檢查年齡是否小于 18歲即age<18。如果elseif比較結(jié)果

18、為true ,則顯示You may have a youth license, 。違:在這段程序中,如果 age是標(biāo)題就很容易理解。如果 age為矩陣,則要求矩陣中所有元素必須都 滿足條件。假如:年齡矩陣為age=15 17 25 55 75矩陣中并非所有元素都滿足條件,因此第一個(gè)判斷語(yǔ)句if age<16 為false 。同理,第二個(gè)判斷語(yǔ)句esleif age<18 和第三個(gè)判斷語(yǔ)句 esleif age<70者B是 false 。最后只能輸出Drivers over 70 require aspecial license,這樣結(jié)果就會(huì)使符合條件的申請(qǐng)人得不到駕駛執(zhí)照。提

19、 示初學(xué)者常常會(huì)把if語(yǔ)句中的條件寫得過(guò)于煩瑣。在前面的例子中,第二個(gè)條件語(yǔ)句用age<18表示就足夠了,不需要表示成age<18和age>=16,因?yàn)楫?dāng)程序運(yùn)行到這種語(yǔ)句時(shí), 申請(qǐng)人的年齡不可能小于 16歲。 如果非要按照類似的方式書寫條件語(yǔ)句,就會(huì)得到錯(cuò)誤的結(jié)果。age=input('Enter a value of age:') if age<16disp('Sorry-You''ll have to wait') elseif age<18&age>16disp('You may hav

20、e a youth license') elseif age<70&age>18disp('You may have a standard license') elseif age>70disp('Drivers over 70 require a special license') endage=16,18 或 70時(shí),會(huì)輸出錯(cuò)誤結(jié)果。一般來(lái)說(shuō),elseif 結(jié)構(gòu)適用于標(biāo)量,find 適用于矩陣。在下面的例子中,用find 對(duì)年齡矩陣進(jìn)行分 類,結(jié)果用數(shù)據(jù)表格的形式輸出:age=input('Enter a value

21、 of age: ')set1=find(age<16);set2=find(age>=16&age<18);set3=find(age>=18&age<70);set4=find(age>=70);fprintf( 'Sorry-You''ll have to wait-you''re only %3.0fn' ,age(set1)fprintf( 'You may have a youth license because you''re %3.0fn'

22、 ,age(set2)fprintf( 'You may have a standard license because you''re %3.0fn' ,age(set3)fprintf( 'Drivers over 70 require a special license.You''re %3.0fn' ,age(set4)15 17 65 75Sorry-You'll have to wait-you're only 15You may have a youth license because you'

23、;re 17You may have a standard license because you're 65Drivers over 70 require a special license.You're 75(4) 4) switch/case 結(jié)構(gòu)在 Matlab 中, switch/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/c

溫馨提示

  • 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)論