第四周----Matlab程序設(shè)計(jì)_第1頁(yè)
第四周----Matlab程序設(shè)計(jì)_第2頁(yè)
第四周----Matlab程序設(shè)計(jì)_第3頁(yè)
第四周----Matlab程序設(shè)計(jì)_第4頁(yè)
第四周----Matlab程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(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、Matlab程序設(shè)計(jì)一、一、M文件文件1.M文件概述文件概述 若要一次執(zhí)行大量的Matlab命令,可將這些命令存放于一個(gè)擴(kuò)展名為m的文件中,使用時(shí)只需要在Matlab提示符號(hào)下輸入此文件的文件名就可以了。此種包含Matlab命令的文件都是以m為擴(kuò)展名,因此通稱為M文件(M-files)。2. M文件的建立和打開(kāi)文件的建立和打開(kāi) 為建立新的M文件,啟動(dòng)M文件編輯器有3種方法:(1)菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項(xiàng),再選擇M-file命令,屏幕上將出現(xiàn)M文件編輯器窗口。(2) 命令操作。在MATLAB命令窗口輸入命令edit,啟動(dòng)M文件編輯器后,輸入M文件的內(nèi)容并存盤

2、。(3) 命令按鈕操作。單擊MATLAB主窗口工具欄上的New M-File命令按鈕,啟動(dòng)M文件編輯器后,輸入M文件的內(nèi)容并存盤。 打開(kāi)已有的M文件,也有3種方法:(1)菜單操作。從MATLAB主窗口的File菜單中選擇Open命令,則屏幕出現(xiàn)Open對(duì)話框,在Open對(duì)話框中選中所需打開(kāi)的M文件。在文檔窗口可以對(duì)打開(kāi)的M文件進(jìn)行編輯修改,編輯完成后,將M文件存盤。(2) 命令操作。在MATLAB命令窗口輸入命令:edit 文件名,則打開(kāi)指定的M文件。(3) 命令按鈕操作。單擊MATLAB主窗口工具欄上的Open File命令按鈕,再?gòu)膹棾龅膶?duì)話框中選擇所需打開(kāi)的M文件。3M文件的保存和運(yùn)行文

3、件的保存和運(yùn)行 編輯完程序后,要運(yùn)行該程序,則必須先進(jìn)行保存。要保存M文件,只需要點(diǎn)擊M文件編輯器File菜單下的Save As命令或者直接點(diǎn)擊M文件編輯器工具欄上的Save命令按鈕,打開(kāi)保存對(duì)話框,輸入文件名就可以了。 要運(yùn)行編輯完的程序有兩種方法:第一,點(diǎn)擊M文件編輯器Debug菜單下的Run命令;第二,點(diǎn)擊M文件編輯器的工具欄上的Run命令按鈕,就會(huì)將該M文件保存后運(yùn)行。 注意:M文件的命名和變量命名的規(guī)則一樣,不能用漢字命名,用漢字命名的M文件運(yùn)行時(shí)將會(huì)出錯(cuò)。二、二、M文件數(shù)據(jù)的輸入輸出文件數(shù)據(jù)的輸入輸出1、input函數(shù)函數(shù) input函數(shù)用于提示用戶應(yīng)該從鍵盤輸入數(shù)值、字符串和表達(dá)

4、式,并接受該輸入。 調(diào)用格式:調(diào)用格式: A=input(提示信息,選項(xiàng)提示信息,選項(xiàng)); 其中提示信息為一個(gè)字符串,選項(xiàng)用于提示用戶輸入什么樣的數(shù)據(jù)。例如:a=input(輸入一個(gè)數(shù):)。如果在input函數(shù)調(diào)用時(shí)采用s選項(xiàng),則允許用戶輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令: xm=input(Whats your name?,s) 在命令窗口輸入:Huo Lujing 輸出: Huo Lujing 例1:求一元二次方程的根。 a=input(a=); b=input(b=); c=input(c=); d=b*b-4*a*c; x=(-b+sqrt(d)/(2*a),(-b-

5、sqrt(d)/(2*a) 將該程序以abc.m文件存盤,然后運(yùn)行abc.m文件。2、disp函數(shù)函數(shù)disp函數(shù):命令窗口輸出函數(shù)調(diào)用格式: disp(輸出項(xiàng))注:輸出項(xiàng)為字符串或矩陣。例如 disp(Hello,MATLAB)輸出為: Hello,MATLAB3fprintf函數(shù)函數(shù) fprintf函數(shù):設(shè)置顯示格式,把格式化數(shù)據(jù)寫入文件 調(diào)用格式: fprintf(輸出項(xiàng)) fprintf函數(shù)經(jīng)常是disp函數(shù)的一個(gè)有用替換,由于它提供了對(duì)結(jié)果更多的控制.當(dāng)準(zhǔn)備把格式化的數(shù)據(jù)寫到一個(gè)文件中去時(shí),按系統(tǒng)默認(rèn)的狀態(tài)它在命令窗口顯示結(jié)果.例如: i=1; fprintf(sin(%d)=,i)

6、 fprintf(%12.8fn,sin(i) %f表示輸入或者輸出的位浮點(diǎn)類型,12.8f表示以位有效數(shù)字,位小數(shù)的形式輸出,如果不足位,則以實(shí)際輸出的有效數(shù)字位數(shù)為準(zhǔn),但必須是位小數(shù)三、三、M文件的分類文件的分類 M文件根據(jù)調(diào)用方式的不同分兩類:命令文件(Script file)和函數(shù)文件(Function file) 命令文件:將原本要在MATLAB環(huán)境下直接輸入的多條語(yǔ)句,存放為.m后綴的文件,在命令行鍵入文件名,替代多條語(yǔ)句,一次執(zhí)行成批命令。 函數(shù)文件:以固定格式書寫的程序代碼, 第一行是函數(shù)定義行。和C語(yǔ)言,F(xiàn)ortran等語(yǔ)言程序一樣。 命令文件和函數(shù)文件的聯(lián)系和區(qū)別: 命令文

7、件 函數(shù)文件 定義行 無(wú)需定義行 必須有 輸入輸出變量 無(wú) 有 數(shù)據(jù)傳送 直接訪問(wèn)work space中所有變量 通過(guò)函數(shù)形參傳遞數(shù)據(jù)編程方法 直接選取MATLAB中執(zhí)行的語(yǔ)句 精心設(shè)計(jì)完成指定功能 用途 重復(fù)操作 MATLAB功能擴(kuò)展 1、命令文件、命令文件 將需要運(yùn)行的命令編輯到一個(gè)命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會(huì)順序執(zhí)行命令文件中的命令。【例2】 建立一個(gè)命令文件求1到3的立方值%This is my first test M-file%Huo Lujing, March 5,2009fprintf(Start of test.m!n);for i=1:3

8、 fprintf(i=%d-i3=%dn,i,i3);endfprintf(End of test.m!n);在MATLAB的命令窗口中輸入test,將會(huì)執(zhí)行該命令文件.注意: 1. test.m的前兩行是注解,可以使程序易于被了解與管理,不妨礙程序的執(zhí)行. 2. 命令文件可以直接使用工作空間的變量,而且在命令文件中設(shè)定的變量,也都在工作空間中看得到.【例3】 建立一個(gè)命令文件將變量a,b的值互換。 turn.m文件: a=1:9; b=11,12,13;14,15,16;17,18,19; c=a; a=b; b=c; a b 在MATLAB的命令窗口中輸入turn,將會(huì)執(zhí)行該命令文件.2、

9、函數(shù)文件、函數(shù)文件 函數(shù)文件是另一種形式的M文件,每一個(gè)函數(shù)文件都定義一個(gè)函數(shù)。事實(shí)上,MATLAB提供的標(biāo)準(zhǔn)函數(shù)大部分都是由函數(shù)文件定義的。(1) 函數(shù)文件格式函數(shù)文件格式 函數(shù)文件由function語(yǔ)句引導(dǎo),其格式為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說(shuō)明部分 (可以不寫) 函數(shù)體 注:其中以function開(kāi)頭的一行為引導(dǎo)行,表示該M文件是一個(gè)函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于一個(gè)時(shí),則應(yīng)該用方括號(hào)括起來(lái)?!纠?】 建立一個(gè)函數(shù)文件計(jì)算一個(gè)正整數(shù)n的階乘(factorial),并將此函數(shù)文件存

10、檔于fact.m.function u=fact(n)%求正整數(shù)n的階乘u=1;for i=1:n u=u*i;end(2)函數(shù)調(diào)用函數(shù)調(diào)用 函數(shù)文件編制好后,就可調(diào)用函數(shù)進(jìn)行計(jì)算了。如上面定義fact函數(shù)后,調(diào)用它求5的fact數(shù)。 輸出實(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ù)的功能。 例如:要使用fact函數(shù),直接鍵入函數(shù)名fact及輸入變量值就可以了: y=fact(5) y=120 其中,u和n是形參,y和5是實(shí)參,在執(zhí)行fact(5

11、)的時(shí)候,Matlab會(huì)跳入一個(gè)下層的暫時(shí)工作空間,將變量n(形參)的值設(shè)定為5(實(shí)參),也就是將實(shí)參5傳遞給形參n,進(jìn)行各項(xiàng)函數(shù)的內(nèi)部運(yùn)算,所有內(nèi)部運(yùn)算所產(chǎn)生的變量(包括輸入變量n、暫時(shí)變量i、以及輸出變量u)都保存在此暫時(shí)工作空間中運(yùn)算完畢后,Matlab會(huì)將最后輸出變量u(形參)的值設(shè)定給變量y(實(shí)參),也就是將形參u傳遞給實(shí)參y,并清除此暫時(shí)空間及其包含的所有變量使用者無(wú)法看到這些變量的值 另外,Matlab函數(shù)也可以遞歸調(diào)用,也就是說(shuō),一個(gè)函數(shù)可以呼叫它本身【例5】 利用函數(shù)的遞歸調(diào)用,求n! n!本身就是以遞歸的形式定義的:顯然,求n!需要求(n-1)!,這時(shí)可采用遞歸調(diào)用。遞歸調(diào)

12、用函數(shù)文件factor.m如下:function u=factor(n)if n=1 u=1;else u=n *factor(n-1); %遞歸調(diào)用求(n-1)!end在命令窗口輸入:y=factor(5)輸出:y= 120四、程序流程控制四、程序流程控制1、邏輯運(yùn)算符、邏輯運(yùn)算符邏輯操作符 說(shuō)明 與 或 非 、循環(huán)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(1)for語(yǔ)句語(yǔ)句for語(yǔ)句的格式為:for 變量矩陣 運(yùn)算式; end其中變量的值會(huì)被依次設(shè)定為矩陣的每一列,來(lái)執(zhí)行介于for和end之間的運(yùn)算式因此,若無(wú)意外情況,運(yùn)算式執(zhí)行的次數(shù)會(huì)等于矩陣的列數(shù)【例6】輸出一個(gè)長(zhǎng)度為的調(diào)和數(shù)列x=zeros(1,6);for

13、 i=1:6x(i)=1/i;endformat rat %使用分?jǐn)?shù)來(lái)表示數(shù)值disp(x)注:1.矩陣x最初是一個(gè)行列的零矩陣,在for循環(huán)中,變量i的值依次是到,因此矩陣x的第i個(gè)元素的值依次被設(shè)為1/i2.本例使用zeros來(lái)預(yù)先配置了一個(gè)適當(dāng)大小的矩陣,若不預(yù)先配置矩陣,程序仍可執(zhí)行,但此時(shí)Matlab需要?jiǎng)討B(tài)地增加(或減?。┚仃嚨拇笮。蚨档统绦虻膱?zhí)行效率所以在使用一個(gè)矩陣時(shí),若能在事前知道其大小,則最好先使用zeros或ones等命令來(lái)預(yù)先配置所需要的矩陣的大小【例7】求 的值sum=0;for i=1:100 sum=sum+(2*i-1);endsum思考(水仙花問(wèn)題)一個(gè)三

14、位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù)。輸出全部水仙花數(shù)。 100112ii(2) while語(yǔ)句語(yǔ)句while語(yǔ)句的一般格式為:while 條件式 循環(huán)體語(yǔ)句 end其執(zhí)行過(guò)程為:若條件成立,則執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)?!纠?】用while循環(huán)輸出一個(gè)長(zhǎng)度為的調(diào)和數(shù)列x=zeros(1,6);i=1;while i=6x(i)=1/i;i=i+1;enddisp(x)思考:使用while循環(huán)結(jié)構(gòu)求出 的值。 50012ii(3)循環(huán)的嵌套循環(huán)的嵌套 如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱為循環(huán)的嵌套,或稱為多重循環(huán)結(jié)構(gòu)。 多重循環(huán)的嵌套層數(shù)可以是任意的。可以按照嵌套層數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處

溫馨提示

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