MATLAB編程與工程應(yīng)用-第4章-MATLAB程序設(shè)計(jì)_第1頁
MATLAB編程與工程應(yīng)用-第4章-MATLAB程序設(shè)計(jì)_第2頁
MATLAB編程與工程應(yīng)用-第4章-MATLAB程序設(shè)計(jì)_第3頁
MATLAB編程與工程應(yīng)用-第4章-MATLAB程序設(shè)計(jì)_第4頁
MATLAB編程與工程應(yīng)用-第4章-MATLAB程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

MATLAB編程與工程應(yīng)用教師 :曾曉東電話 _mail :zengxiaodong@263.netQQ :241747139MATLAB編程與工程應(yīng)用3章MATLAB程序設(shè)計(jì)第4章MATLAB程序設(shè)計(jì)4.1M文件4.2程序控制結(jié)構(gòu)4.3函數(shù)文件4.4程序舉例4.5程序調(diào)試3章MATLAB程序設(shè)計(jì)4.1M文件一、M文件概述用MATLAB語言編寫的程序,稱為M文件。M文件可以根據(jù)調(diào)用方式的不同分為兩類:命令文件(ScriptFile)函數(shù)文件(FunctionFile)。二、M文件的建立和打開M文件是一個(gè)文本文件,它可以用任何編輯程序來建立和編輯,而一般常用且最為方便的是使用MATLAB提供的文本編輯器。3章MATLAB程序設(shè)計(jì)4.1M文件1.建立新的M文件

(1)菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令,屏幕上將出現(xiàn)MATLAB文本編輯器窗口。

(2)命令操作。在MATLAB命令窗口輸入命令edit,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。

(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的NewM-File命令按鈕,啟動(dòng)MATLAB文本編輯器后,輸入M文件的內(nèi)容并存盤。3章MATLAB程序設(shè)計(jì)4.1M文件2.打開已有的M文件

(1)菜單操作。從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現(xiàn)Open對(duì)話框,在Open對(duì)話框中選中所需打開的M文件。在文檔窗口可以對(duì)打開的M文件進(jìn)行編輯修改,編輯完成后,將M文件存盤。

(2)命令操作。在MATLAB命令窗口輸入命令:edit文件名,則打開指定的M文件。

(3)命令按鈕操作。單擊MATLAB主窗口工具欄上的OpenFile命令按鈕,再從彈出的對(duì)話框中選擇所需打開的M文件。3章MATLAB程序設(shè)計(jì)4.2程序控制結(jié)構(gòu)一、順序結(jié)構(gòu)1.input函數(shù)

A=input(提示信息,選項(xiàng));注:’s’選項(xiàng),則允許用戶輸入一個(gè)字符串。例如想輸入一個(gè)人的姓名,可采用命令

xm=input('What''syourname:','s')【例4.1】求一元二次方程a2+bx+c=0的根。(exp3_1.m)

a=input('a=?'); b=input('b=?');c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]3章MATLAB程序設(shè)計(jì)一、順序結(jié)構(gòu)2.disp函數(shù)

disp(輸出項(xiàng))輸出項(xiàng)為字符串或矩陣?yán)?/p>

A=‘Hello,MATLAB';

disp(A)輸出為:

Hello,MATLAB3章MATLAB程序設(shè)計(jì)4.2程序控制結(jié)構(gòu)二、選擇結(jié)構(gòu)1.if,else,elseif語句1)if(邏輯表達(dá)式)

執(zhí)行語句

end2)if(邏輯表達(dá)式)

執(zhí)行語句1 else

執(zhí)行語句2 end3)if(邏輯表達(dá)式1)

執(zhí)行語句1

elseif(邏輯表達(dá)式2)

執(zhí)行語句2…else

執(zhí)行語句nend3章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)【例4.2】:輸入三角形的三條邊,求面積。(exp3_2.m)A=input('請(qǐng)輸入三角形的三條邊:');if(A(1)+A(2)>A(3))&(A(1)+A(3)>A(2))&(A(2)+A(3)>A(1))

p=(A(1)+A(2)+A(3))/2;s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3)));

disp(s);else

disp('不能構(gòu)成一個(gè)三角形。')end運(yùn)行:請(qǐng)輸入三角形的三條邊:[456]9.92163章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)【例4.3】:輸入一個(gè)字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導(dǎo)字符,若為其他字符則原樣輸出。(exp3_3.m)c=input(‘請(qǐng)輸入字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+1));elseifc>='a'&c<='z'disp(setstr(abs(c)-1));else

disp(c);end3章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)2.switch語句格式:switch(表達(dá)式)%表達(dá)式可以是標(biāo)量或字符串

case值1

語句1 case值2

語句2 … otherwise

語句nend執(zhí)行方式:表達(dá)式的值和哪種情況(case)的值相同,就執(zhí)行哪種情況中的語句,如果不同,則執(zhí)行otherwise中的語句。格式中也可以不包括otherwise,這時(shí)如果表達(dá)式的值與列出的各種情況都不相同,則繼續(xù)向下執(zhí)行。3章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)【例4.4】根據(jù)變量num的值來決定顯示的內(nèi)容。(exp3_4.m)num=input('請(qǐng)輸入一個(gè)數(shù)');switch(num) case-1

disp('Iamateacher.'); case0

disp('Iamastudent.'); case1

disp('Youareateacher.'); otherwise

disp('Youareastudent.');end3章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)3.try語句格式:

try

語句組1 catch

語句組2 endtry語句先試探性執(zhí)行語句組1,如果語句組1在執(zhí)行過程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語句組2。3章MATLAB程序設(shè)計(jì)二、選擇結(jié)構(gòu)【例4.5】矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會(huì)出錯(cuò)。先求兩矩陣的乘積,若出錯(cuò),則自動(dòng)轉(zhuǎn)去求兩矩陣的點(diǎn)乘。(exp3_5.m)程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示出錯(cuò)原因3章MATLAB程序設(shè)計(jì)4.2程序控制結(jié)構(gòu)三、循環(huán)語句1.for語句(1)for循環(huán)變量=表達(dá)式1:表達(dá)式3:表達(dá)式2

循環(huán)語句組

End(2)for循環(huán)變量=數(shù)組范圍 循環(huán)語句組

end步長缺省值為1,可以在正實(shí)數(shù)或負(fù)實(shí)數(shù)范圍內(nèi)任意指定。對(duì)于正數(shù),循環(huán)變量的值大于終止值時(shí),循環(huán)結(jié)束;對(duì)于負(fù)數(shù),循環(huán)變量的值小于終止值時(shí),循環(huán)結(jié)束。循環(huán)結(jié)構(gòu)可以嵌套使用。書寫格式不必太過于拘泥,在Editor編輯器中會(huì)自動(dòng)進(jìn)行處理。3章MATLAB程序設(shè)計(jì)三、循環(huán)語句注意:1)for循環(huán)不能用for循環(huán)內(nèi)重新賦值循環(huán)變量n來終止forn=1:10 x(n)=sin(n*pi/10); n=10;end2)語句1:10是標(biāo)準(zhǔn)的MATLAB數(shù)組創(chuàng)建語句,在FOR循環(huán)內(nèi)接受任何有效的MATLAB數(shù)組。data=[39456;716–15];forn=datax=n(1)-n(2)end

3章MATLAB程序設(shè)計(jì)三、循環(huán)語句3)for循環(huán)可按需要嵌套forn=1:5form=5:-1:1 S(n,m)=n^2+m^2;end

disp(n)endS=25101726581320291013182534172025324126293441504)當(dāng)有一個(gè)等效的數(shù)組來解給定的問題時(shí),應(yīng)避免用FOR循環(huán),例如,上面的注意1中的例子可重寫為n=1:10;x=sin(n*pi/10);5)為了得到最大的速度,在for循環(huán)(while循環(huán))被執(zhí)行之前,應(yīng)預(yù)先分配數(shù)組。如在注意3中,應(yīng)在循環(huán)前執(zhí)行S=zeros(5);

3章MATLAB程序設(shè)計(jì)三、循環(huán)語句2、while循環(huán)語句

while(表達(dá)式)

循環(huán)體

end若表達(dá)式為真,則執(zhí)行循環(huán)體的內(nèi)容,執(zhí)行后再判斷表達(dá)式是否為真,若不為真,則跳出循環(huán)體,向下繼續(xù)執(zhí)行。While循環(huán)和for循環(huán)的區(qū)別在于,while循環(huán)結(jié)構(gòu)的循環(huán)體被執(zhí)行的次數(shù)不是確定的,而for結(jié)構(gòu)中循環(huán)體的執(zhí)行次數(shù)是確定的。3章MATLAB程序設(shè)計(jì)三、循環(huán)語句【例3.6】:計(jì)算下式的值(exp3_6_1.m,exp3_6_2.m)(1)使用for循環(huán)sum=0;forI=1:1000 sum=sum+I^2+2*I;end(2)使用while循環(huán)sum=0;I=1;while(I<=1000) sum=sum+I^2+2*I; I=I+1;end3章MATLAB程序設(shè)計(jì)4.2程序控制結(jié)構(gòu)四、程序流控制1.break命令作用是中斷循環(huán)語句的執(zhí)行。中斷的循環(huán)語句可以是for語句,也可以是while語句。當(dāng)滿足在循環(huán)體內(nèi)設(shè)置的條件時(shí),可以通過使用break命令使之強(qiáng)行退出循環(huán),而不是達(dá)到循環(huán)終止條件時(shí)再退出循環(huán)。顯然,循環(huán)體內(nèi)設(shè)置的條件必須在break之前。對(duì)于嵌套的循環(huán)結(jié)構(gòu),break只能退出包含它的最內(nèi)層循環(huán)。3章MATLAB程序設(shè)計(jì)四、程序流控制【例3.7】:求滿足的n的最小值。(exp3_7_1.m,exp3_7_2.m)sum=0;forn=1:1000 sum=sum+n^2+2*n; if(sum>1000) break; endenddisplay(n)sum=0;n=0;while(sum<=1000) n=n+1; sum=sum+n^2+2*n;enddisplay(n)3章MATLAB程序設(shè)計(jì)四、程序流控制2.continue語句跳過循環(huán)體中的某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻^循環(huán)體中所有剩下的語句,繼續(xù)下一次循環(huán)。3.return()函數(shù)作用是中斷函數(shù)的執(zhí)行,返回上級(jí)調(diào)用函數(shù)。return()函數(shù)指令既可以用在循環(huán)體內(nèi),也可用在非循環(huán)體內(nèi)。4.pause()函數(shù)暫停指令。運(yùn)行程序時(shí),到pause()函數(shù)指令執(zhí)行后,程序?qū)和?,等待用戶敲任一鍵后繼續(xù)執(zhí)行。pause(n)暫停幾秒后程序繼續(xù)執(zhí)行若要強(qiáng)行中止程序的運(yùn)行可使用Ctrl+C命令。3章MATLAB程序設(shè)計(jì)4.3函數(shù)文件一、函數(shù)文件的基本結(jié)構(gòu)函數(shù)文件由function語句引導(dǎo),其基本結(jié)構(gòu)為:

function輸出形參表=函數(shù)名(輸入形參表)

注釋說明部分 函數(shù)體語句其中以function開頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。函數(shù)名必須與文件名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于一個(gè)時(shí),則應(yīng)該用方括號(hào)括起來。3章MATLAB程序設(shè)計(jì)一、函數(shù)文件的基本結(jié)構(gòu)【例3.8】:編寫函數(shù)文件求半徑為r的圓的面積和周長。(fcircle.m)function[s,p]=fcircle(r)%fcircle

半徑為r的圓的面積和周長%r圓半徑%s圓面積%p圓周長%編制時(shí)間:2007年8月30日s=pi*r*r;p=2*pi*r;3章MATLAB程序設(shè)計(jì)4.3函數(shù)文件二、函數(shù)調(diào)用函數(shù)調(diào)用的一般格式是:

[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)要注意的是,函數(shù)調(diào)用時(shí)各實(shí)參出現(xiàn)的順序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)形參的順序、個(gè)數(shù)一致,否則會(huì)出錯(cuò)。函數(shù)調(diào)用時(shí),先將實(shí)參傳遞給相應(yīng)的形參,從而實(shí)現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。在MATLAB中,函數(shù)可以嵌套調(diào)用,即一個(gè)函數(shù)可以調(diào)用別的函數(shù),甚至調(diào)用它自身。一個(gè)函數(shù)調(diào)用它自身稱為函數(shù)的遞歸調(diào)用。3章MATLAB程序設(shè)計(jì)二、函數(shù)調(diào)用【例3.9】:利用函數(shù)的遞歸調(diào)用,求n!。n!本身就是以遞歸的形式定義的:n!=n*(n-1)!顯然,求n!需要求(n-1)!,這時(shí)可采用遞歸調(diào)用(factor.m)functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;%遞歸調(diào)用求(n-1)!end3章MATLAB程序設(shè)計(jì)4.3函數(shù)文件三、函數(shù)參數(shù)的可調(diào)性在調(diào)用函數(shù)時(shí),MATLAB用兩個(gè)永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時(shí)的輸入實(shí)參和輸出實(shí)參的個(gè)數(shù)。只要在函數(shù)文件中包含這兩個(gè)變量,就可以準(zhǔn)確地知道該函數(shù)文件被調(diào)用時(shí)的輸入輸出參數(shù)個(gè)數(shù),從而決定函數(shù)如何進(jìn)行處理。【例4.10】:nargin示例命令文件:exp3_10.m函數(shù)文件:mydemo.m3章MATLAB程序設(shè)計(jì)4.3函數(shù)文件四、全局變量與局部變量全局變量用global命令定義,格式為:

global變量名【例4.11】:全局變量應(yīng)用示例。(exp3_11.m)函數(shù)文件:wadd.m在命令窗口中輸入:globalALPHABETAALPHA=1;BETA=2;s=wadd(1,2)3章MATLAB程序設(shè)計(jì)4.4程序舉例【例4.12】:猜數(shù)游戲。首先由計(jì)算機(jī)產(chǎn)生[1,100]之間的隨機(jī)整數(shù),然后由用戶猜測所產(chǎn)生的隨機(jī)數(shù)。根據(jù)用戶猜測的情況給出不同提示,如猜測的數(shù)大于產(chǎn)生的數(shù),則顯示“太大了”,小于則顯示“太小了”,等于則顯示“你贏了”,同時(shí)退出游戲。用戶最多可以猜7次。exp3_12.m3章MATLAB程序設(shè)計(jì)4.4程序舉例【例4.13】:用篩選法求某自然數(shù)范圍內(nèi)的全部素?cái)?shù)。素?cái)?shù)是大于1,且除了1和它本身以外,不能被其他任何整數(shù)所整除的整數(shù)。用篩選法求素?cái)?shù)的基本思想是:要找出2——m之間的全部素?cái)?shù),首先在

溫馨提示

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