版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章M文件和流程控制結(jié)構(gòu)用戶在進(jìn)行MATLAB操作時(shí),經(jīng)常需要輸入較多的命令語(yǔ)句,而且有些還需要重復(fù)地輸入,如果仍然按照上述在MATLAB命令窗口(CommandWindow)進(jìn)行直接交互式命令操作方式,就顯得比較煩瑣和費(fèi)時(shí)。為了改進(jìn)這種情況,MATLAB提供文件編程操作方式。MATLAB中所有的文件和函數(shù)都分別對(duì)應(yīng)一個(gè)M文件(以.m為后綴的文本文件),它可以在任何文本編輯器中進(jìn)行顯示和編輯,最方便的是在MATLAB程序編輯器窗口中進(jìn)行(圖1-2)。M文件的代碼是純ASCII碼字符,可以在MATLAB命令窗口(CommandWindow)鍵入命令:typefunction_name來(lái)查看。4.1M文件的分類(lèi)4.1.1命令文件(ScriptFile)命令文件也稱為腳本文件,通常只是一系列命令語(yǔ)句的組合,沒(méi)有輸入?yún)?shù),也不返回參數(shù),運(yùn)行時(shí)只需要在命令窗口鍵入文件名即可。例4-1試編制一命令文件,計(jì)算圓的面積與周長(zhǎng)%計(jì)算圓的面積與周長(zhǎng)的命令文件(rsc.m)r=input('請(qǐng)輸入圓的半徑(mm)r=');%使用鍵盤(pán)輸入圓的半徑rs=pi*r^2;%計(jì)算圓的面積c=2*pi*r;%計(jì)算圓的周長(zhǎng)fprintf('圓的半徑r=%3.4fmm\n',r)fprintf('圓的面積s=%3.4fmm^2\n',s)fprintf('圓的周長(zhǎng)c=%3.4fmm\n',c)>>rsc請(qǐng)輸入圓的半徑(mm)r=35圓的半徑r=35.0000mm圓的面積s=3848.4510mm^2圓的周長(zhǎng)c=219.9115mm>>rsc請(qǐng)輸入圓的半徑(mm)r=58圓的半徑r=58.0000mm圓的面積s=10568.3177mm^2圓的周長(zhǎng)c=364.4247mm命令文件在運(yùn)行過(guò)程中可以調(diào)用MATLAB系統(tǒng)工作域內(nèi)的所有數(shù)據(jù),所產(chǎn)生的變量也是全局變量,并且一直保存在工作域內(nèi),直至quit時(shí)為止。4.1.2函數(shù)文件MATLAB函數(shù)或函數(shù)文件是系統(tǒng)中已經(jīng)設(shè)計(jì)好的為完成某一種特定的運(yùn)算或是實(shí)現(xiàn)某一種特定的功能的子程序,MATLAB系統(tǒng)幾十種工具箱中提供了豐富的函數(shù)庫(kù),它們是MATLAB系統(tǒng)的重要組成部分。在使用這些函數(shù)或函數(shù)文件時(shí)是作為命令來(lái)對(duì)待的,所以函數(shù)又稱為函數(shù)命令。函數(shù)文件常用于需要反復(fù)調(diào)用和不斷改變參數(shù)的場(chǎng)合,它可以接受參數(shù),也可以返回參數(shù),它的運(yùn)行必須通過(guò)語(yǔ)句調(diào)用。1、函數(shù)文件的第一個(gè)可執(zhí)行必須是函數(shù)文件定義語(yǔ)句:function[輸出參數(shù)]=函數(shù)名(輸入?yún)?shù))2、函數(shù)文件可以帶有多個(gè)輸出參數(shù)和輸入?yún)?shù),也可以沒(méi)有輸出參數(shù)。當(dāng)輸入?yún)?shù)或是輸出參數(shù)多于一個(gè)時(shí),參數(shù)之間一般用逗號(hào)隔開(kāi)。3、函數(shù)文件的命名規(guī)則與變量名的規(guī)則相同。兩個(gè)函數(shù)的函數(shù)名即使相同,但是輸入?yún)?shù)或輸出參數(shù)的數(shù)目不同,它們的含義也不同。4、函數(shù)文件運(yùn)行時(shí),自動(dòng)創(chuàng)建其獨(dú)自的函數(shù)工作空間(functionworkspace),過(guò)程變量都存儲(chǔ)這個(gè)工作空間中。函數(shù)文件執(zhí)行之后只保留最后結(jié)果,不保留之間任何過(guò)程,所定義的變量也只要在函數(shù)內(nèi)部起作用,并且隨著該函數(shù)文件調(diào)用的結(jié)束而自動(dòng)被清除。5、應(yīng)當(dāng)指出,以function開(kāi)頭的函數(shù)文件是一個(gè)獨(dú)立M文件,必須單獨(dú)儲(chǔ)存在內(nèi)存中MATLAB系統(tǒng)所在的工作目錄:D:\MATLAB7\work中。將函數(shù)文件存盤(pán)時(shí),缺省狀態(tài)下系統(tǒng)自動(dòng)儲(chǔ)存為“函數(shù)名.m”的函數(shù)文件(即函數(shù)文件名與函數(shù)名相同)。如果函數(shù)文件名與函數(shù)名不同,MATLAB在調(diào)用時(shí)將以函數(shù)文件名為準(zhǔn)(忽略函數(shù)名)。例4-2試使用調(diào)用函數(shù)文件方法,計(jì)算漸開(kāi)線齒輪的齒廓函數(shù)值。%1-建立計(jì)算漸開(kāi)線函數(shù)的函數(shù)文件(jkxhs.m)function[theta,rk]=jkxhs(alpha,rb)hd=pi/180;theta=tan(hd.*alpha)-hd.*alpha;%漸開(kāi)線展角rk=rb./cos(hd.*alpha);%漸開(kāi)線向徑將該文件以文件名jkxhs.m保存在MATLAB工作區(qū)路徑中。%2-建立調(diào)用命令文件m=input('輸入齒輪模數(shù)(mm)m=');z=input('輸入齒輪齒數(shù)z=');ha=input('輸入齒高系數(shù)ha=');hd=pi/180;alpha_f=20;%分度圓壓力角%計(jì)算齒輪的幾何尺寸r=m*z/2;%分度圓半徑rb=r*cos(alpha_f*hd);%基圓半徑ra=r+ha*m;%齒頂圓半徑alpha_a=acos(rb/ra);%齒頂圓壓力角%調(diào)用計(jì)算漸開(kāi)線函數(shù)的函數(shù)文件alpha=0:alpha_a/hd/5:alpha_a/hd;[theta,rk]=jkxhs(alpha,rb);thetak=theta/hd;%輸出計(jì)算結(jié)果fprintf(‘齒輪模數(shù)m=%6.4fmm\n',m)fprintf(‘齒輪齒數(shù)z=%3.0f\n',z)fprintf(‘齒高系數(shù)ha=%3.4f\n',ha)fprintf(‘基圓半徑rb=%6.4fmm\n',rb)fprintf(‘分度圓半徑r=%6.4fmm\n',r)fprintf(‘齒頂圓半徑ra=%6.4fmm\n',ra)fprintf('齒頂圓壓力角alpha_a=%6.4f°\n',alpha_a/hd)disp'漸開(kāi)線展角thetak(°)',thetakdisp'漸開(kāi)線向徑rk(mm)',rk輸出的計(jì)算結(jié)果如下:齒輪模數(shù)m=5.0000mm齒輪齒數(shù)z=28齒高系數(shù)ha=1.0000基圓半徑rb=65.7785mm分度圓半徑r=70.0000mm齒頂圓半徑ra=75.0000mm齒頂圓壓力角alpha_a=28.7119°漸開(kāi)線展角thetak(°)thetak=00.01930.15630.53861.31512.6721漸開(kāi)線向徑rk(mm)rk=65.778566.110267.122468.868071.443075.0000有時(shí)為了在命令文件中直接描述數(shù)學(xué)函數(shù),可采用函數(shù)inline(),它的功能是建立一個(gè)內(nèi)聯(lián)函數(shù),其調(diào)用格式是:fun=inline(’函數(shù)表達(dá)式’,自變量列表)其中自變量列表中每個(gè)自變量之間均需要用單引號(hào)括起來(lái),相互之間用逗號(hào)分隔。例如,漸開(kāi)線函數(shù)方程可以用函數(shù)inline()語(yǔ)句描述為theta=inline('tan(alpha*pi/180)-pi/180.*alpha','alpha');其中,alpha(表示壓力角)是函數(shù)式中自變量。它只能返回1個(gè)變量,不支持較復(fù)雜的語(yǔ)句結(jié)構(gòu)。4.2流程控制結(jié)構(gòu)4.2.1順序結(jié)構(gòu)順序結(jié)構(gòu)是根據(jù)語(yǔ)句排列的順序自上而下執(zhí)行。主要包括數(shù)據(jù)的輸入、處理、結(jié)果的輸出等內(nèi)容1、數(shù)據(jù)的輸入(input函數(shù))從鍵盤(pán)輸入數(shù)據(jù),可以使用input函數(shù)來(lái)進(jìn)行,該函數(shù)的調(diào)用格式為:z=input(’屏幕上顯示的提示信息’)當(dāng)執(zhí)行該函數(shù)時(shí),系統(tǒng)等待從鍵盤(pán)輸入數(shù)據(jù)后按回車(chē)鍵,輸入的數(shù)據(jù)就存入變量z中。如果輸入的是字符,則格式是z=input(’屏幕上顯示的提示信息’,’s’)其中’s’表示鍵盤(pán)輸入字符。2、數(shù)據(jù)的輸出(disp和fprintf函數(shù))1、函數(shù)disp是自由格式輸出數(shù)據(jù),用于直接輸出字符或是數(shù)值,例如>>a=[2,4,6];>>dispaa>>disp(a)246注意:以上兩例自由格式輸出中,“a”表示字符,“(a)”表示向量a的值。2、函數(shù)fprintf在屏幕上輸出格式化數(shù)據(jù),一般調(diào)用格式是:fprintf(’屏幕上顯示的提示信息%format\n’,v)其中,format用來(lái)指定數(shù)據(jù)輸出時(shí)采用的格式:d表示整數(shù);e表示實(shí)數(shù)(科學(xué)計(jì)算法形式);f表示浮點(diǎn)實(shí)數(shù)(小數(shù)形式);g表示由系統(tǒng)自動(dòng)選取上述兩種格式之一;s表示輸出字符串;\n是換行符號(hào),以避免下一個(gè)輸出數(shù)據(jù)或是提示符號(hào)也擠在同一行;V是輸出變量或是矩陣。例如:>>fprintf('Thepiis%4.8f\n',pi)Thepiis3.14159265可見(jiàn),在2個(gè)單引號(hào)之間包括輸出的字串“Thepiis”、輸出數(shù)據(jù)的格式“%4.8f”(表示按照浮點(diǎn)數(shù)格式,8位小數(shù),輸出變量pi()的數(shù)據(jù)。>>fprintf('34的5次方=%2.6e\n',34^5)34的5次方=4.543542e+007可見(jiàn),輸出“34^5”值為指數(shù)格式的數(shù)據(jù),6位小數(shù)。4.2.2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是指按照給定的條件重復(fù)執(zhí)行指定的語(yǔ)句。MATLAB提供了兩種循環(huán)結(jié)構(gòu):for循環(huán)結(jié)構(gòu)和while循環(huán)結(jié)構(gòu)。1、for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)的格式是:fori=c0:cb:cn循環(huán)體end其中,c0是循環(huán)變量i的初值;cb是循環(huán)變量i的步長(zhǎng),當(dāng)cb取單位步長(zhǎng)時(shí)可以省略;cn是循環(huán)變量i的終值。例4-3用篩選法求自然數(shù)2至m范圍內(nèi)的全部素?cái)?shù)。素?cái)?shù)是大于1,且除了1和它本身以外,不能被其他任何整數(shù)所整除的整數(shù)。m=input('輸入素?cái)?shù)的最大范圍m=');x=2:m;fork=2:sqrt(m)n=find(rem(x,k)==0&x~=k);x(n)=[];%去掉非素?cái)?shù)endx運(yùn)算結(jié)果:輸入素?cái)?shù)的最大范圍m=30x=23571113171923292、while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)的格式是:while(條件)循環(huán)體end其中的“條件”是一個(gè)關(guān)系表達(dá)式,當(dāng)關(guān)系表達(dá)式的值為真時(shí)自動(dòng)執(zhí)行循環(huán)體,直到關(guān)系表達(dá)式的值條件為假,轉(zhuǎn)向循環(huán)體結(jié)束標(biāo)志end后面語(yǔ)句。應(yīng)當(dāng)指出,while循環(huán)執(zhí)行過(guò)程中會(huì)改變while后面關(guān)系表達(dá)式的值,否則這個(gè)while循環(huán)是一個(gè)死循環(huán),因此while循環(huán)執(zhí)行次數(shù)是不定的。在for循環(huán)結(jié)構(gòu)和while循環(huán)結(jié)構(gòu)中,使用break命令可終止循環(huán)結(jié)構(gòu)的運(yùn)行。例4-5水仙花數(shù)是指一個(gè)3位數(shù)的各位數(shù)字的立方和等于該數(shù)本身,用while循環(huán)結(jié)構(gòu)檢索水仙花數(shù)m=100;while(m<=999);m3=fix(m/100);%保存百位數(shù)字m2=rem(fix(m/10),10);%保存十位數(shù)字m1=rem(m,10);%保存?zhèn)€位數(shù)字ifm==m3^3+m2^3+m1^3;disp(m)endm=m+1;end運(yùn)算結(jié)果(寫(xiě)成一行):1533703714074.2.3選擇結(jié)構(gòu)選擇結(jié)構(gòu)是指按照給定的條件是否成立,分別執(zhí)行不同的語(yǔ)句。MATLAB提供了兩種選擇結(jié)構(gòu):if選擇結(jié)構(gòu)和switch選擇結(jié)構(gòu)。1、if選擇結(jié)構(gòu)if(條件1)語(yǔ)句組1%滿足條件1時(shí)執(zhí)行該語(yǔ)句組elseif(條件2)語(yǔ)句組2%滿足條件2時(shí)執(zhí)行該語(yǔ)句組…else語(yǔ)句組n+1%上面的條件均不滿足時(shí)end例4-6用選擇結(jié)構(gòu)建立樣條函數(shù)的判斷函數(shù)文件functionf=pdc(x)%該函數(shù)文件沒(méi)有輸出參數(shù)ifx<0f=0;elseifx<1f=x;elseifx<2f=2-x;elsef=0;end將該文件以文件名pdc.m保存在MATLAB工作區(qū)路徑中。然后在MATLAB命令窗口中運(yùn)行調(diào)用語(yǔ)句,顯示結(jié)果為:>>pdc(-3.5)ans=0>>pdc(0.8)ans=0.8000>>pdc(2.8)ans=02、switch選擇結(jié)構(gòu)switch開(kāi)關(guān)表達(dá)式case常量表達(dá)式1語(yǔ)句組1case常量表達(dá)式2語(yǔ)句組2…otherwise語(yǔ)句組nend當(dāng)開(kāi)關(guān)表達(dá)式的值與對(duì)應(yīng)常量表達(dá)式的值匹配時(shí),執(zhí)行相應(yīng)的語(yǔ)句組,然后執(zhí)行end語(yǔ)句后
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《義務(wù)教育法》知識(shí)考試復(fù)習(xí)題庫(kù)(含答案)
- (技師)化學(xué)檢驗(yàn)工職業(yè)技能鑒定理論考試題庫(kù)(含答案)
- 年產(chǎn)1000噸納米復(fù)合氧化鋯項(xiàng)目可行性研究報(bào)告寫(xiě)作模板-申批備案
- 2025年江西外語(yǔ)外貿(mào)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年新疆工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫(kù)含答案解析
- 幼兒園月亮故事活動(dòng)策劃方案五篇
- 標(biāo)線承包合同范本
- 精準(zhǔn)醫(yī)療項(xiàng)目研發(fā)合作合同
- 麻雀的聽(tīng)評(píng)課記錄
- 承攬貨物運(yùn)輸合同范本
- 房地產(chǎn)調(diào)控政策解讀
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 2024-2025學(xué)年八年級(jí)數(shù)學(xué)人教版上冊(cè)寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 《AP內(nèi)容介紹》課件
- 醫(yī)生定期考核簡(jiǎn)易程序述職報(bào)告范文(10篇)
- 安全創(chuàng)新創(chuàng)效
- 《中國(guó)糖尿病防治指南(2024版)》更新要點(diǎn)解讀
- 初級(jí)創(chuàng)傷救治課件
- 2024年社會(huì)工作者(中級(jí))-社會(huì)綜合能力考試歷年真題可打印
- 《處理人際關(guān)系》課件
- 五年級(jí)行程問(wèn)題應(yīng)用題100道
評(píng)論
0/150
提交評(píng)論