(完整版)matlab第六講教案_第1頁
(完整版)matlab第六講教案_第2頁
(完整版)matlab第六講教案_第3頁
(完整版)matlab第六講教案_第4頁
(完整版)matlab第六講教案_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、西南科技大學(xué)本科生課程備課教案計算機技術(shù)在安全工程中的應(yīng)用Matlab入門及應(yīng)用授課教師:徐中慧班 級:業(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é)重點與難點本堂課教學(xué)的重點在于引導(dǎo)學(xué)生在編寫matlab程序時能夠熟練運用控制結(jié)構(gòu)的相關(guān)函數(shù)實現(xiàn)相應(yīng)的功能。三、教學(xué)方法本課程主要通過講授法、演示法、練習(xí)法等相結(jié)合的方法來引導(dǎo)學(xué)生掌控本堂課的學(xué)習(xí)內(nèi)容。四、教學(xué)內(nèi)容上機內(nèi)容回顧(1)創(chuàng)

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

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

4、溫度換算表);disp('攝氏蘭金');fprintf('%3.0f %6.2fn',tc;tr)請輸入起始攝氏溫度0請輸入步長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ù)表,把攝氏溫度換算成華氏溫度。由用戶輸入起始溫度、步長和數(shù)據(jù)的行數(shù)。用 和 fprintf 給表格添加標(biāo)題和表頭并輸出格式化數(shù)據(jù)。m=input('請輸入起始攝氏溫度);n=input('請輸入步長);w=input('請輸入數(shù)據(jù)的行數(shù))tc=m:n:m+(w-1)*n;tf=9/5*tc+32;disp('溫度換算表);disp('攝氏華氏');fprintf('%3.0f %6.2fn',tc;tf)請輸入起始攝氏溫度0請輸入步長10請輸入數(shù)據(jù)的行數(shù)

6、5w =5溫度換算表攝氏 華氏032.001050.002068.003086.0040104.00>>(2)在t=0時刻,火箭的發(fā)動機關(guān)閉,此時火箭的海拔高度為500m ,提升速度為125m/s??紤]重力加速度,火箭的高度是時間的函數(shù):h(t) 竽t2 125t 500,tf 0計算時間在0到30秒內(nèi)火箭的高度,并畫出曲線:用函數(shù)ginput估算火箭的最大高度和火箭返回地面的時間。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é)果在命令窗口顯示出來。disp('火箭的最大高度(單位/m):');disp(m) disp('火箭返回地面的時間(單位/s):');disp(n) 火箭的最大高度(單位/m):1.2961e+003火箭返回地面的時間(單位/s):29.0841(3)

8、完成下面的問題,用 ginput在圖形上截取數(shù)據(jù):/100。繪制一個圓形并定義角度數(shù)組,范圍在0到2 之間,步長為用ginput在圓周上截取兩個點。用hold on保持圖形,用直線連接剛剛截取兩個點。用勾股定理計算兩點間距離。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、件的元素。 例如,美國海軍學(xué)院要求招收學(xué)員的身高必須高于66,假設(shè)擬招學(xué)員的身高為:height=63 67 65 72 69 78 75;用find命令查找符合身高要求的元素序號:accept=find(height>=66)accept =2 45 67函數(shù)由nd輸出矩陣中符合要求的元素序號。若需要查看身高的數(shù)值,可以用元素序號調(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)使用邏輯運算符可以創(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)在前面的例題中,只輸出了符合條件元素的單一序號。如果采用下面的語法結(jié)構(gòu)調(diào)用函數(shù)find可以輸出符合條件元素的行、列號。row,col=find(criteria)假設(shè)用一個矩陣表示門診病人的體溫。查找體溫高于98.6的病人的序號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) 簡單的if語句if語句的語法結(jié)構(gòu):if邏輯表達式程序行end如果比較結(jié)果(邏輯表達式)為 true ,那么執(zhí)行

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

15、則只有當(dāng)矩陣中所有元素都滿足條件時,比較結(jié)果才為true。Eg: 如果輸入x=0:0.5:2;則因為輸入向量并非所有元素都大于 0,因此則Matlab會跳車t到else部分,輸出錯誤信息。在if/else 語句中使用矢量會有很大的局限性,因此最好使用標(biāo)量提 示在程序中,使用函數(shù)beep可以發(fā)出嘟嘟,用于提示用戶出現(xiàn)錯誤。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)中如果有多層嵌套,就會很難判斷到底應(yīng)該執(zhí)行哪段程序。如果在程序中使用函數(shù)elseif ,程序代碼就會變得更容易理解。下面這段程序可以根據(jù)申請人的年齡判定是否發(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在這個例子中,Matlab首先檢查申請人年齡是否小于 16歲即age<16。如果表達式為true ,則執(zhí)行下 一條語句,顯示信息 Sorry-You''ll have to wait ,然后退出if結(jié)構(gòu)。如果比較結(jié)果為 false , Matlab對后面 的elseif語句進行判斷, 檢查年齡是否小于 18歲即age<18。如果elseif比較結(jié)果

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

19、 示初學(xué)者常常會把if語句中的條件寫得過于煩瑣。在前面的例子中,第二個條件語句用age<18表示就足夠了,不需要表示成age<18和age>=16,因為當(dāng)程序運行到這種語句時, 申請人的年齡不可能小于 16歲。 如果非要按照類似的方式書寫條件語句,就會得到錯誤的結(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時,會輸出錯誤結(jié)果。一般來說,elseif 結(jié)構(gòu)適用于標(biāo)量,find 適用于矩陣。在下面的例子中,用find 對年齡矩陣進行分 類,結(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ù)一個給定參數(shù)的不同取值,執(zhí)行不同的命令。它和if/else/elseif 類似,都屬于條件分支結(jié)構(gòu)。凡是能夠用if/else/elseif 結(jié)構(gòu)實現(xiàn)的程序功能都可以用switch/case 結(jié)構(gòu)實現(xiàn)。而且用switch/case 結(jié)構(gòu)實現(xiàn)程序代碼更容易理解。switch/c

溫馨提示

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

評論

0/150

提交評論