第四周----Matlab程序設(shè)計_第1頁
第四周----Matlab程序設(shè)計_第2頁
第四周----Matlab程序設(shè)計_第3頁
第四周----Matlab程序設(shè)計_第4頁
第四周----Matlab程序設(shè)計_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Matlab程序設(shè)計一、一、M文件文件1.M文件概述文件概述 若要一次執(zhí)行大量的Matlab命令,可將這些命令存放于一個擴展名為m的文件中,使用時只需要在Matlab提示符號下輸入此文件的文件名就可以了。此種包含Matlab命令的文件都是以m為擴展名,因此通稱為M文件(M-files)。2. M文件的建立和打開文件的建立和打開 為建立新的M文件,啟動M文件編輯器有3種方法:(1)菜單操作。從MATLAB主窗口的File菜單中選擇New菜單項,再選擇M-file命令,屏幕上將出現(xiàn)M文件編輯器窗口。(2) 命令操作。在MATLAB命令窗口輸入命令edit,啟動M文件編輯器后,輸入M文件的內(nèi)容并存盤

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

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

4、式,并接受該輸入。 調(diào)用格式:調(diào)用格式: A=input(提示信息,選項提示信息,選項); 其中提示信息為一個字符串,選項用于提示用戶輸入什么樣的數(shù)據(jù)。例如:a=input(輸入一個數(shù):)。如果在input函數(shù)調(diào)用時采用s選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令: 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文件存盤,然后運行abc.m文件。2、disp函數(shù)函數(shù)disp函數(shù):命令窗口輸出函數(shù)調(diào)用格式: disp(輸出項)注:輸出項為字符串或矩陣。例如 disp(Hello,MATLAB)輸出為: Hello,MATLAB3fprintf函數(shù)函數(shù) fprintf函數(shù):設(shè)置顯示格式,把格式化數(shù)據(jù)寫入文件 調(diào)用格式: fprintf(輸出項) fprintf函數(shù)經(jīng)常是disp函數(shù)的一個有用替換,由于它提供了對結(jié)果更多的控制.當準備把格式化的數(shù)據(jù)寫到一個文件中去時,按系統(tǒng)默認的狀態(tài)它在命令窗口顯示結(jié)果.例如: i=1; fprintf(sin(%d)=,i)

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

7、件 函數(shù)文件 定義行 無需定義行 必須有 輸入輸出變量 無 有 數(shù)據(jù)傳送 直接訪問work space中所有變量 通過函數(shù)形參傳遞數(shù)據(jù)編程方法 直接選取MATLAB中執(zhí)行的語句 精心設(shè)計完成指定功能 用途 重復(fù)操作 MATLAB功能擴展 1、命令文件、命令文件 將需要運行的命令編輯到一個命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會順序執(zhí)行命令文件中的命令?!纠?】 建立一個命令文件求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,將會執(zhí)行該命令文件.注意: 1. test.m的前兩行是注解,可以使程序易于被了解與管理,不妨礙程序的執(zhí)行. 2. 命令文件可以直接使用工作空間的變量,而且在命令文件中設(shè)定的變量,也都在工作空間中看得到.【例3】 建立一個命令文件將變量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,將會執(zhí)行該命令文件.2、

9、函數(shù)文件、函數(shù)文件 函數(shù)文件是另一種形式的M文件,每一個函數(shù)文件都定義一個函數(shù)。事實上,MATLAB提供的標準函數(shù)大部分都是由函數(shù)文件定義的。(1) 函數(shù)文件格式函數(shù)文件格式 函數(shù)文件由function語句引導(dǎo),其格式為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說明部分 (可以不寫) 函數(shù)體 注:其中以function開頭的一行為引導(dǎo)行,表示該M文件是一個函數(shù)文件。函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當輸出形參多于一個時,則應(yīng)該用方括號括起來?!纠?】 建立一個函數(shù)文件計算一個正整數(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ù)進行計算了。如上面定義fact函數(shù)后,調(diào)用它求5的fact數(shù)。 輸出實參表=函數(shù)名(輸入實參表) 要注意的是,函數(shù)調(diào)用時各實參出現(xiàn)的順序、個數(shù),應(yīng)與函數(shù)定義時形參的順序、個數(shù)一致,否則會出錯。函數(shù)調(diào)用時,先將實參傳遞給相應(yīng)的形參,從而實現(xiàn)參數(shù)傳遞,然后再執(zhí)行函數(shù)的功能。 例如:要使用fact函數(shù),直接鍵入函數(shù)名fact及輸入變量值就可以了: y=fact(5) y=120 其中,u和n是形參,y和5是實參,在執(zhí)行fact(5

11、)的時候,Matlab會跳入一個下層的暫時工作空間,將變量n(形參)的值設(shè)定為5(實參),也就是將實參5傳遞給形參n,進行各項函數(shù)的內(nèi)部運算,所有內(nèi)部運算所產(chǎn)生的變量(包括輸入變量n、暫時變量i、以及輸出變量u)都保存在此暫時工作空間中運算完畢后,Matlab會將最后輸出變量u(形參)的值設(shè)定給變量y(實參),也就是將形參u傳遞給實參y,并清除此暫時空間及其包含的所有變量使用者無法看到這些變量的值 另外,Matlab函數(shù)也可以遞歸調(diào)用,也就是說,一個函數(shù)可以呼叫它本身【例5】 利用函數(shù)的遞歸調(diào)用,求n! n!本身就是以遞歸的形式定義的:顯然,求n!需要求(n-1)!,這時可采用遞歸調(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、邏輯運算符、邏輯運算符邏輯操作符 說明 與 或 非 、循環(huán)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(1)for語句語句for語句的格式為:for 變量矩陣 運算式; end其中變量的值會被依次設(shè)定為矩陣的每一列,來執(zhí)行介于for和end之間的運算式因此,若無意外情況,運算式執(zhí)行的次數(shù)會等于矩陣的列數(shù)【例6】輸出一個長度為的調(diào)和數(shù)列x=zeros(1,6);for

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

14、位整數(shù)各位數(shù)字的立方和等于該數(shù)本身則稱該數(shù)為水仙花數(shù)。輸出全部水仙花數(shù)。 100112ii(2) while語句語句while語句的一般格式為:while 條件式 循環(huán)體語句 end其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)。【例8】用while循環(huán)輸出一個長度為的調(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)的嵌套 如果一個循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個循環(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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論