Matlab程序設(shè)計(jì)(函數(shù))課件_第1頁
Matlab程序設(shè)計(jì)(函數(shù))課件_第2頁
Matlab程序設(shè)計(jì)(函數(shù))課件_第3頁
Matlab程序設(shè)計(jì)(函數(shù))課件_第4頁
Matlab程序設(shè)計(jì)(函數(shù))課件_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Matlab程序設(shè)計(jì)第8講 2022/7/14Application of Matlab Language3 Matlab命令的執(zhí)行方式交互式命令執(zhí)行方式(命令窗口) 逐條輸入,逐條執(zhí)行,操作簡(jiǎn)單、直觀,但速度慢,執(zhí)行過程不能保留。M文件的程序執(zhí)行方式 將命令編成程序存儲(chǔ)在一個(gè)文件中(M文件),依次運(yùn)行文件中的命令,可以重復(fù)進(jìn)行。Matlab程序設(shè)計(jì)有傳統(tǒng)高級(jí)語言的特征,又有自己獨(dú)特的特點(diǎn),可以利用數(shù)據(jù)結(jié)構(gòu)的特點(diǎn),使程序結(jié)構(gòu)簡(jiǎn)單,編程效率高。 2022/7/14Application of Matlab Language4 5.1 M文件的分類用Matlab語言編寫的程序,稱為M文件。 是由若

2、干Matlab命令組合在一起構(gòu)成的,它可以完成某些操作,也可以實(shí)現(xiàn)某種算法。 M文件根據(jù)調(diào)用方式的不同分為兩類: 命令文件(Script File) 函數(shù)文件(Function File) 它們的擴(kuò)展名都是.m 2022/7/14Application of Matlab Language5 命令文件和函數(shù)文件的區(qū)別命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù);函數(shù)文件可以帶輸入?yún)?shù),也可以返回輸出參數(shù)。命令文件對(duì)工作空間中的變量進(jìn)行操作,文件中所有命令的執(zhí)行結(jié)果也返回工作空間中;函數(shù)文件中定義的變量為局部變量,當(dāng)函數(shù)文件執(zhí)行完畢時(shí),這些變量也被清除。命令文件可以直接運(yùn)行;函數(shù)文件不能直接運(yùn)行,要以

3、函數(shù)調(diào)用的方式來調(diào)用它。 2022/7/14Application of Matlab Language6 例5.1 建立文件將變量a、b的值互換。命令文件:clear;a = 1:10;b = 11,12,13,14;15,16,17,18;c = a; a = b; b = c;ab將文件保存為exch,并在命令窗口執(zhí)行。執(zhí)行結(jié)果:a = 11 12 13 14 15 16 17 18b = 1 2 3 4 5 6 7 8 9 10 2022/7/14Application of Matlab Language7 函數(shù)文件fexch.mfunction a,b = exch(a,b)c =

4、 a; a = b; b = c;然后在命令窗口調(diào)用該函數(shù)文件:clear;x = 1:10;y = 11,12,13,14;15,16,17,18;x,y = fexch(x,y)輸出結(jié)果為:a = 11 12 13 14 15 16 17 18b = 1 2 3 4 5 6 7 8 9 10函數(shù)參數(shù)a,b,c未保留在工作空間中,x,y保留在工作空間中。 2022/7/14Application of Matlab Language8 M文件的建立與打開 M文件是一個(gè)文本文件,可以用任何編輯程序來建立和編輯,一般最常用的是使用Matlab提供的文本編輯器。 該編輯器是一個(gè)集編輯和調(diào)試于一體的

5、工作環(huán)境。 2022/7/14Application of Matlab Language9 5.2 程序控制結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu) 任何復(fù)雜的程序都可以由這3種基本結(jié)構(gòu)構(gòu)成。 2022/7/14Application of Matlab Language10 5.2.1 順序結(jié)構(gòu)順序結(jié)構(gòu)是指按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個(gè)語句。(最簡(jiǎn)單的一種程序)1、數(shù)據(jù)的輸入 從鍵盤輸入數(shù)據(jù),則可以使用input函數(shù)來進(jìn)行, 調(diào)用格式為: A = input(提示信息,選項(xiàng)); 其中提示信息為一個(gè)字符串,用于提示用戶輸入數(shù)據(jù)。 例如:從鍵盤輸入A矩陣,可以采用下面的命令來完成 A

6、 = input(輸入A矩陣); 如果在input函數(shù)調(diào)用時(shí)采用s選項(xiàng),則允許用戶輸入一個(gè)字符串。 例:xm = input(Whats your name?,s); 2022/7/14Application of Matlab Language11 5.2.1 順序結(jié)構(gòu)2、數(shù)據(jù)的輸出 命令窗口輸出函數(shù)主要有disp函數(shù),其調(diào)用格式為: disp(輸出項(xiàng)) 其中輸出項(xiàng)既可以為字符串,也可以為矩陣。例如: A = Hello, Tom; disp(A) 輸出為:Hello, Tom 又如:A = 1,2,3;4,5,6;7,8,9; disp(A) 輸出為: 1 2 3 4 5 6 7 8 9

7、%disp函數(shù)輸出格式更緊湊 2022/7/14Application of Matlab Language12 5.2.1 順序結(jié)構(gòu)例5.2 求一元二次方程 的根。由于Matlab能進(jìn)行復(fù)數(shù)運(yùn)算,所以不需要判斷方程的判別式,可直接根據(jù)求根公式求根。程序如下: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);disp(x1=,num2str(x(1),x2=,num2str(x(2);程序輸出為:a=?4b=?78c=?54x1=-0.7188,x

8、2=-18.7812 2022/7/14Application of Matlab Language13 5.2.1 順序結(jié)構(gòu)3、程序的暫停 程序執(zhí)行過程中暫停,可用pause函數(shù),其調(diào)用格式為: pause(延遲描述) 如果省略延遲時(shí)間,直接使用pause,則將暫停程序,直到 用戶按任一鍵后程序繼續(xù)執(zhí)行。 若要強(qiáng)行中止程序的運(yùn)行可按Ctrl+C鍵。 2022/7/14Application of Matlab Language14 5.2.2 選擇結(jié)構(gòu)選擇結(jié)構(gòu)是根據(jù)給定的條件成立或不成立,分別執(zhí)行不同的語句。Matlab用于實(shí)現(xiàn)選擇結(jié)構(gòu)的語句有if語句,switch語句和try語句。1. i

9、f語句在Matlab中,if語句有3種格式。(1)單分支if語句語句格式:if 條件 語句組end例如:當(dāng)x是整數(shù)矩陣時(shí),輸出x的值if fix(x)=x disp(x);end 2022/7/14Application of Matlab Language15 5.2.2 選擇結(jié)構(gòu)(2)雙分支if語句語句格式:if 條件 語句組 1else 語句組 2end當(dāng)條件成立時(shí),執(zhí)行語句組1,否則執(zhí)行語句組2,然后再執(zhí)行if語句的后續(xù)語句。 2022/7/14Application of Matlab Language16 5.2.2 選擇結(jié)構(gòu)例5.3 計(jì)算分段函數(shù):程序如下:x = input(請(qǐng)

10、輸入x的值:);if x = 10 y = cos(x+1)+sqrt(x*x+1);else y = x*sqrt(x+sqrt(x);endy也可以用單分支if語句來實(shí)現(xiàn):x = input(請(qǐng)輸入x的值: );y = cos(x+1)+sqrt(x*x+1);if x=10 y = x*sqrt(x+sqrt(x);endy 2022/7/14Application of Matlab Language17 5.2.2 選擇結(jié)構(gòu)(3)多分支if語句語句格式:if 條件1 語句組 1elseif 條件2 語句組 2elseif 條件m 語句組 melse 語句組nend 2022/7/14

11、Application of Matlab Language18 例5.4 大小寫字母的置換輸入一個(gè)字符,若為大寫字母,則輸出其對(duì)應(yīng)的小寫字母;若為小寫字母,則輸出其對(duì)應(yīng)的大寫字母;若為數(shù)字字符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。程序如下:c = input(請(qǐng)輸入一個(gè)字符,s);if c =A & c=a & c=0 & c=9 disp(abs(c)-abs(0);else disp(c);endsetstr函數(shù)可以得到ASC碼 2022/7/14Application of Matlab Language19 5.2.2 選擇結(jié)構(gòu)2、switch語句switch語句根據(jù)表達(dá)式的取

12、值不同,分別執(zhí)行不同的語句,其語句格式:switch 表達(dá)式case 表達(dá)式1 語句組1case 表達(dá)式2 語句組2case 表達(dá)式m 語句組motherwise 語句組 nendswitch子句后面的表達(dá)式應(yīng)為一個(gè)標(biāo)量或一個(gè)字符串;case子句后面的表達(dá)式不僅可以為一個(gè)標(biāo)量或一個(gè)字符串,還可以為一個(gè)元胞矩陣。 2022/7/14Application of Matlab Language20 例5.5 某商場(chǎng)對(duì)顧客所購買的商品實(shí)行打折銷售,標(biāo)準(zhǔn)如下:price200 沒有折扣200=price500 3%折扣500=price1000 5%折扣1000=price2500 8%折扣2500=

13、price5000 10%折扣5000 mtimesInner matrix dimensions must agree. 2022/7/14Application of Matlab Language24 5.2.3 循環(huán)結(jié)構(gòu)循環(huán)是指按照給定的條件,重復(fù)執(zhí)行指定的語句,Matlab提供了兩種實(shí)現(xiàn)循環(huán)結(jié)構(gòu)的語句:for語句和while語句。1、for語句for語句的格式為:for 循環(huán)變量 =表達(dá)式1:表達(dá)式2:表達(dá)式3 循環(huán)體語句end其中表達(dá)式1的值為循環(huán)變量的初值,表達(dá)式2的值為步長(zhǎng),表達(dá)式3的值為循環(huán)變量的終值。步長(zhǎng)為1時(shí),表達(dá)式2可以省略。 2022/7/14Application

14、of Matlab Language25 例5.7 已知 ,當(dāng)n=100時(shí),求y的值。程序如下:y = 0;n = 100;for i=1:n y = y+1/i/i;endy輸出結(jié)果為:y = 1.6350利用Matlab的特點(diǎn),常用向量運(yùn)算來代替循環(huán)操作,程序可以如下:n = 100;i = 1:n;f = 1./i.2;y = sum(f) 2022/7/14Application of Matlab Language26 5.2.3 循環(huán)結(jié)構(gòu)2、while語句while語句的一般格式為:while條件 循環(huán)體語句end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立

15、,如果不成立則跳出循環(huán)。 2022/7/14Application of Matlab Language27 從鍵盤輸入若干個(gè)數(shù),當(dāng)輸入0時(shí)結(jié)束輸入,求這些數(shù)的平均值和它們的和。sum = 0;n = 0;x = input(Enter a number(end in 0):);while(x=0) sum = sum+x; n = n+1; x = input(Enter a number(end in 0):);endif(n0) sum mean = sum/nend例5.8 輸出結(jié)果為:Enter a number(end in 0):67Enter a number(end in 0

16、):89Enter a number(end in 0):93Enter a number(end in 0):70Enter a number(end in 0):0sum = 319mean = 79.7500 2022/7/14Application of Matlab Language28 5.2.3 循環(huán)結(jié)構(gòu)3、break語句和continur語句它們一般與if語句配合使用。break語句用于終止循環(huán)的執(zhí)行。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻鲅h(huán),繼續(xù)執(zhí)行循環(huán)語句的下一語句。continue語句控制跳過循環(huán)體中的某些語句。當(dāng)在循環(huán)體內(nèi)執(zhí)行到該語句時(shí),程序?qū)⑻^循環(huán)體中所有剩下的語

17、句,繼續(xù)下一次循環(huán)。 2022/7/14Application of Matlab Language29 例5.9 求100,200之間第一個(gè)能被21整除的整數(shù)。程序如下:for n = 100:200 if rem(n,21)=0; continue end breakendn程序輸出結(jié)果為:n = 105Matlab程序設(shè)計(jì)第9講 2022/7/14Application of Matlab Language31 5.3 函數(shù)文件 函數(shù)文件是另一種形式的M文件,每一個(gè)函數(shù)文件都定義一個(gè)函數(shù)。Matlab提供的標(biāo)準(zhǔn)函數(shù)大部分是由函數(shù)文件定義的。5.3.1 函數(shù)文件的基本結(jié)構(gòu) 函數(shù)文件由fun

18、ction語句引導(dǎo),其基本結(jié)構(gòu)為: function 輸出形參表 = 函數(shù)名(輸入形參表) 注釋說明部分 函數(shù)體語句 其中,以function開頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。 當(dāng)輸出形參多于一個(gè)時(shí),應(yīng)該用方括號(hào)括起來。 2022/7/14Application of Matlab Language32 說明:1. 關(guān)于函數(shù)文件名 函數(shù)文件名通常由函數(shù)名再加上擴(kuò)展名.m組成。 當(dāng)函數(shù)文件名與函數(shù)名不同時(shí),Matlab將忽略函數(shù)名而確認(rèn)文件名 因此調(diào)用時(shí)使用函數(shù)文件名。2. 關(guān)于注釋說明部分 注釋說明包括3部分: 緊隨引導(dǎo)行之后以%開頭的第一注釋行。 這一行一般包括大寫的函數(shù)文件名

19、和函數(shù)功能簡(jiǎn)要描述,供lookfor 關(guān)鍵詞查詢和help在線幫助時(shí)使用。 第一注釋行及之后連續(xù)的注釋行。 通常包括函數(shù)輸入/輸出參數(shù)的含義及調(diào)用格式說明等信息,構(gòu)成全 部在線幫助文本。 2022/7/14Application of Matlab Language33 說明: 與在線幫助文本相隔一空行的注釋行。 包括函數(shù)文件編寫和修改的信息,如作者和版本等。3、關(guān)于return語句 如果在函數(shù)文件中插入了return語句,則執(zhí)行到該語句就結(jié)束函數(shù) 的執(zhí)行,流程轉(zhuǎn)至調(diào)用該函數(shù)的位置。通常也不使用return語句。 例5.10 編寫函數(shù)文件,求半徑為r的圓的面積和周長(zhǎng)。 函數(shù)文件如下: func

20、tion s,p = fcircle(r) % FCIRCLE calculate the area and perimeter of a circle of radii r % r 圓半徑 % s 圓面積 % p 圓周長(zhǎng) %2006年2月30日編 s = pi*r*r; p = 2*pi*r; 2022/7/14Application of Matlab Language34 說明:將以上函數(shù)文件以文件名fcircle.m保存,然后在命令窗口調(diào)用。s,p = fcircle(10)輸出結(jié)果是: s = 314.1593 p = 62.8319采用help命令或lookfor命令可以顯示出注釋

21、說明部分的內(nèi)容。 help fcircle屏幕顯示 FCIRCLE calculate the area and perimeter of a circle of radii r r 圓半徑 s 圓面積 p 圓周長(zhǎng) 2022/7/14Application of Matlab Language35 5.3.2 函數(shù)調(diào)用 函數(shù)調(diào)用的一般格式是: 輸出實(shí)參表 = 函數(shù)名(輸入實(shí)參表) 注意:函數(shù)調(diào)用時(shí),各實(shí)參出現(xiàn)的順序、個(gè)數(shù),應(yīng)與函數(shù)定義時(shí)相同。例5.11 利用函數(shù)文件,實(shí)現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(,)之間的轉(zhuǎn)換。 函數(shù)文件:tran.m: function rho,theta = tran(

22、x,y) rho = sqrt(x*x+y*y); theta = atan(y/x); 調(diào)用tran.m的命令文件main1.m: x = input(please input x=:); y = input(please input y=:); rho,the = tran(x,y); rho the 2022/7/14Application of Matlab Language36 函數(shù)的嵌套調(diào)用 在Matlab中,函數(shù)可以嵌套調(diào)用,即一個(gè)函數(shù)可以調(diào)用別的函數(shù)。 一個(gè)函數(shù)調(diào)用自身稱為函數(shù)的遞歸調(diào)用。 例5.12 利用函數(shù)的遞歸調(diào)用,求n!。 n!本身就是以遞歸的形式定義的: 顯然,求n!

23、需要求(n-1)!,這時(shí)可采用遞歸調(diào)用。 函數(shù)如下: function f = factor(n) if n后輸入變量名,檢查變量的值。可以分析判斷程序 的正確性。 選擇Debug菜單中的Continue命令,程序繼續(xù)運(yùn)行,在斷點(diǎn)處又暫停,再檢查 變量的值,一直到發(fā)現(xiàn)問題為止。 切換工作空間,結(jié)束對(duì)程序的調(diào)試。打開編輯窗口中的Stack下拉列表框,從 中選擇Base,即將工作空間切換到主工作空間。然后選擇Debug菜單中的Set Clear Breakpoint 命令清楚已設(shè)置的斷點(diǎn),在選擇Continue命令,去除白色 箭頭,完成調(diào)試。 2022/7/14Application of Mat

24、lab Language44 5.5 Matlab矩陣分析與處理5.5.1 特殊矩陣常見的特殊矩陣有零矩陣、幺矩陣、單位矩陣等,這類特殊矩陣在應(yīng)用中具有通用性。1、通用的特殊矩陣常用的產(chǎn)生通用特殊矩陣的函數(shù)有: zeros:產(chǎn)生全0矩陣(零矩陣)。 ones: 產(chǎn)生全1矩陣(幺矩陣)。 eye: 產(chǎn)生單位矩陣。 rand:產(chǎn)生01間均勻分布的隨機(jī)矩陣。 randn:產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣。 產(chǎn)生(0,1)區(qū)間均勻分布隨機(jī)矩陣使用rand函數(shù) 產(chǎn)生均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布隨機(jī)矩陣使用randn函數(shù) 2022/7/14Application of Matlab Lan

25、guage45 例5.16 建立隨機(jī)矩陣: 在區(qū)間20,50內(nèi)均勻分布的5階隨機(jī)矩陣。 均值為0.6,方差為0.1的5階正態(tài)分布隨機(jī)矩陣。命令如下: x = 20+(50-20)*rand(5) x = 48.5039 42.8629 38.4630 32.1712 21.7367 26.9342 33.6940 43.7581 48.0641 30.5860 38.2053 20.5551 47.6544 47.5071 44.3950 34.5795 44.6422 42.1462 32.3081 20.2958 46.7390 33.3411 25.2880 46.8095 24.166

26、7 y = 0.6 + sqrt(0.1)*randn(5) 2022/7/14Application of Matlab Language46 5.5 矩陣結(jié)構(gòu)變換1、對(duì)角陣與三角陣 只有對(duì)角線上有非零元素的矩陣稱為對(duì)角矩陣,在研究矩陣時(shí), 有時(shí)候需要將矩陣的對(duì)角線上的元素提取出來形成一個(gè)列向量,有 時(shí)也需要用一個(gè)向量構(gòu)造一個(gè)對(duì)角陣。 (1)提取矩陣的對(duì)角線元素函數(shù):diag 例如: A = 1,2,3;4,5,6; D = diag(A) D = 1 5 diag函數(shù)還有一種形式:diag(A,k)提取第k條對(duì)角線的元素。 例如: D1 = diag(A,1) D = 2 6 2022/7

27、/14Application of Matlab Language47 5.5 矩陣結(jié)構(gòu)變換(2)構(gòu)造對(duì)角矩陣 如果V是一個(gè)m個(gè)元素的向量,diag(V)將產(chǎn)生一個(gè)mm對(duì)角矩陣,其主對(duì)角線元素即為向量V的元素。 例如: diag(1,2,-1,4) ans = 1 0 0 0 0 2 0 0 0 0 -1 0 0 0 0 4 例如: diag(1:3,-1) ans = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 2022/7/14Application of Matlab Language48 例5.17 建立一個(gè)55矩陣A,然后將A的第一行元素乘以1,第二行乘以2,第五行乘以5。解: 用一個(gè)對(duì)角矩陣左乘一個(gè)矩陣時(shí),相當(dāng)于用對(duì)角陣的第一個(gè)元素乘以該矩陣的第一行,依次類推。命令如下: A = ones(5); D = diag(1:5); D * A

溫馨提示

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