MATLAB程序設(shè)計ppt課件_第1頁
MATLAB程序設(shè)計ppt課件_第2頁
MATLAB程序設(shè)計ppt課件_第3頁
MATLAB程序設(shè)計ppt課件_第4頁
MATLAB程序設(shè)計ppt課件_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1第3章 MATLAB 3.1 M 3.2 數(shù)據(jù)的輸入輸出 3.3 選擇結(jié)構(gòu) 3.4 循環(huán)結(jié)構(gòu) 3.5 函數(shù)文件 3.6 目錄目錄23.1 M文件編程vM文件的功能和特點MATLAB是解釋性語言是解釋性語言語法簡單語法簡單調(diào)試容易調(diào)試容易人機交互性強人機交互性強開放性、可擴展性強開放性、可擴展性強33.1.1 M文件的建立與編輯1.建立新的M文件(1)菜單操作:直接點擊菜單New Script(2)命令操作:在MATLAB命令窗口輸入命令edit。(3)命令窗口的New菜單 Script命令。 2. 編輯已有的M文件open打開M文件4 3.1.2 M文件的分類文件的分類分類:命令文件分類:命

2、令文件(Script File/腳本文件腳本文件)函數(shù)文件函數(shù)文件(Function File)1、命令文件、命令文件(1)將需要運行的命令編輯到一個命令文件中,然后在MATLAB命令窗口輸入該命令文件的名字,就會順序執(zhí)行命令文件中的命令。 (2) 對于一些比較簡單的問題 ,在指令窗中直接輸入指令計算. (3)對于復(fù)雜計算,采用命令文件最為合適.MATLAB只是按文件所寫的指令執(zhí)行.5命令文件命令文件vM命令文件的特點是:命令文件的構(gòu)成比較簡單,只是一串按用戶意圖排列而成的(包括控制流和指令命令文件的構(gòu)成比較簡單,只是一串按用戶意圖排列而成的(包括控制流和指令在內(nèi)的)在內(nèi)的)MATLABMAT

3、LAB指令集合指令集合M M文件中定義的變量為全局變量文件中定義的變量為全局變量. .命令文件運行后命令文件運行后 ,所產(chǎn)生的所有變量都駐留在,所產(chǎn)生的所有變量都駐留在 MATLABMATLAB基本工作空間(基本工作空間( workspace workspace)中。只要用戶不使用清除指令()中。只要用戶不使用清除指令(clearclear),), MATLABMATLAB指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中指令窗不關(guān)閉,這些變量將一直保存在基本工作空間中6 例3.1 建立一個命令文件將變量a,b的值互換,然后運行該命令文件。 首先建立命令文件并以文件名e1.m存盤: clear;

4、 a=1:10; b=11,12,13,14;15,16,17,18; c=a;a=b;b=c; a b 然后在MATLAB的命令窗口中輸入e1,將會執(zhí)行該命令文件。目錄目錄7函數(shù)文件函數(shù)文件v與命令文件不同與命令文件不同 ,函數(shù)文件猶如一個,函數(shù)文件猶如一個“黑箱黑箱”,把一些數(shù)據(jù)送進并經(jīng)加工處理,再把,把一些數(shù)據(jù)送進并經(jīng)加工處理,再把結(jié)果送出來結(jié)果送出來.vMATLAB提供的函數(shù)指令大部分都是由函數(shù)文件定義的提供的函數(shù)指令大部分都是由函數(shù)文件定義的.用用M文件自定義函數(shù),開頭為文件自定義函數(shù),開頭為: function yname = fname(xname)yname: 因變量名,因變量

5、名,fname: 函數(shù)名,函數(shù)名,xname:自變量名:自變量名. 文件名為文件名為fname,即與函,即與函數(shù)名相同數(shù)名相同.8 例3.2 建立一個函數(shù)文件將變量a,b的值互換,然后在命令窗口調(diào)用該函數(shù)文件。 首先建立函數(shù)文件e2.m: function a,b=e2(a,b) % ee2 c=a;a=b;b=c;調(diào)用:a,b=e2(2,3) 然后在MATLAB的命令窗口調(diào)用該函數(shù)文件: clear; x=1:10; y=11,12,13,14;15,16,17,18; x,y=e2(x,y)目錄目錄9由上例可以看出函數(shù)文件的一般格式為:function 輸出表函數(shù)名(輸入表) 注釋說明部分

6、 函數(shù)體語句函數(shù)文件的第一行必須是以關(guān)鍵字function開始,表明該文件是函數(shù)文件輸入表是以逗號相分隔的形參輸出表是函數(shù)的返回值如果返回值只有一個方括號可以省略;如果返回值不止一個,輸出表中的各個變量要以逗號隔開10標準的函數(shù)文件基本結(jié)構(gòu)標準的函數(shù)文件基本結(jié)構(gòu) (1)函數(shù)定義行(關(guān)鍵字)函數(shù)定義行(關(guān)鍵字function)functionout1,out2,. = (in1,in2,.)輸入和輸出(返回)的參數(shù)個數(shù)分別由輸入和輸出(返回)的參數(shù)個數(shù)分別由nargin和和nargout兩個兩個MATLAB保留的變量來給保留的變量來給出。出。 11標準的函數(shù)文件基本結(jié)構(gòu)標準的函數(shù)文件基本結(jié)構(gòu) (

7、2)第一行幫助行,即)第一行幫助行,即H1行以(行以(%)開頭,作為)開頭,作為lookfor指令搜索的行,可以使程式易指令搜索的行,可以使程式易于了解與管理。特別要說明的是,第一注解行通常用來簡短說明此于了解與管理。特別要說明的是,第一注解行通常用來簡短說明此M檔案的功能,以便檔案的功能,以便lookfor能以關(guān)鍵字比對的方式來找出此能以關(guān)鍵字比對的方式來找出此M檔案。檔案。 舉例來說,舉例來說,e2.m的第一注解行包含的第一注解行包含ee2這個字,因此如果鍵入這個字,因此如果鍵入lookfor ee2,MATLAB即可列出所有在第一注解行包含即可列出所有在第一注解行包含ee2的的M檔案,因

8、而檔案,因而e2.m也會被列名在內(nèi)。也會被列名在內(nèi)。 12(3)函數(shù)體說明及有關(guān)注解)函數(shù)體說明及有關(guān)注解,以(以(%)開頭,用以說明函數(shù)的作用及有關(guān)內(nèi))開頭,用以說明函數(shù)的作用及有關(guān)內(nèi)容容(4)函數(shù)體語句)函數(shù)體語句函數(shù)體內(nèi)使用的除返回和輸入變量這些在函數(shù)體內(nèi)使用的除返回和輸入變量這些在function語句中直接引用的變量以語句中直接引用的變量以外的所有變量都是局部變量,即在該函數(shù)返回之后,這些變量會自動在外的所有變量都是局部變量,即在該函數(shù)返回之后,這些變量會自動在MATLAB的工作空間中清除掉。如果希望這些中間變量成為在整個程序中的工作空間中清除掉。如果希望這些中間變量成為在整個程序中都

9、起作用的變量,則可以將它們設(shè)置為全局變量都起作用的變量,則可以將它們設(shè)置為全局變量.13 例3.3 編寫函數(shù)文件求半徑為r的圓的面積和周長。 函數(shù)文件如下: function s,p=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圓半徑圓半徑 %s 圓面積圓面積 %p 圓周長圓周長 s=pi*r*r; p=2*pi*r; 將以上函數(shù)文件以文件名fcircle.m存入c:matlabr11work下,然后在MATLAB命令窗口調(diào)用該函數(shù): s,p=fcircle(10)目錄目錄s = 1

10、3823/44 p = 7100/113 14例3.4 建立一個自變量為m, n的函數(shù),用其構(gòu)造mn矩陣,其元素隨機取均勻分布在09中的整數(shù): function a=randint(m,n) a=floor(10*rand(m,n);以上兩句存為M文件randint.m. 用法: A=randint(2,3) %z則A為23矩陣,其元素為隨機取自09中的整數(shù). 函數(shù)M文件中的變量為局部變量,要想在Command Window 或其他M文件中可調(diào)用,必須在這些地方把此變量說明為global: 例如,global a; 注意,M文件必須存放在MATLAB的搜索路徑中才可被調(diào)用. 15 函數(shù)調(diào)用 函

11、數(shù)調(diào)用的一般格式是: 輸出實參表=函數(shù)名(輸入實參表)例3.5 利用函數(shù)文件,實現(xiàn)直角坐標(x,y)與極坐標(,)之間的轉(zhuǎn)換。 函數(shù)文件tran.m: function rho,theta=tran(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目錄目錄16 例3.6 利用函數(shù)的遞歸調(diào)用,求n!。 遞歸調(diào)用函數(shù)文件factor.m: function f=f

12、actor(n) if n main2Please input n=:5s = 15317 函數(shù)所傳遞參數(shù)的可調(diào)性 在調(diào)用函數(shù)時,MATLAB用兩個永久變量nargin和nargout分別記錄調(diào)用該函數(shù)時的輸入實參和輸出實參的個數(shù)。只要在函數(shù)文件中包含這兩個變量,就可以準確地知道該函數(shù)文件被調(diào)用時的輸入輸出參數(shù)個數(shù),從而決定函數(shù)如何進行處理。目錄目錄18 例3.7 nargin用法示例。 函數(shù)文件examp.m: function fout=examp(a,b,c) if nargin=1 fout=a; elseif nargin=2 fout=a+b; elseif nargin=3 fo

13、ut=(a*b*c)/2; end 命令文件mydemo.m: x=1:3;y=1;2;3; examp(x) examp(x,y) examp(x,y,3)目錄目錄 mydemoans = 1 2 3ans = 2 4 6ans = 21193.2 數(shù)據(jù)的輸入輸出3.2.1 input函數(shù) 調(diào)用格式為: A=input(提示信息,選項); 其中,提示信息為一個字符串,用于提示用戶輸入什么樣的數(shù)據(jù)。 如果在input函數(shù)調(diào)用時采用s選項,則允許用戶輸入一個字符串。例如,想輸入一個人的姓名,可采用命令: xm=input(Whats your name?,s) Whats your name?x

14、iaoweixm = xiaowei目錄目錄20 3.2.2 disp函數(shù) 調(diào)用格式為 disp(輸出項) 其中輸出項既可以為字符串,也可以為矩陣。 注意:用disp函數(shù)顯示矩陣時將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒有意義的空行。目錄目錄21 例3.4 求一元二次方程ax2 +bx+c=0的根。 程序如下: 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)目錄目錄di

15、sp(x) 顯示顯示x的內(nèi)容,與的內(nèi)容,與x 的區(qū)別是:的區(qū)別是:前者僅顯示前者僅顯示x的內(nèi)容,后者多個的內(nèi)容,后者多個x=.a=? 3b=? 4c=? 9x1=-0.66667+1.5986i,x2=-0.66667-1.5986i22 3.2.3 pause函數(shù) 其調(diào)用格式為: pause(延遲秒數(shù)) 如果省略延遲時間,直接使用pause,則將暫停程序,直到用戶按任一鍵后程序繼續(xù)執(zhí)行。 若要強行中止程序的運行可使用Ctrl+C命令。目錄目錄23MATLAB流程控制流程控制v循環(huán)語句循環(huán)語句 for, whilev條件轉(zhuǎn)移條件轉(zhuǎn)移 if end, if elseif else endv開關(guān)語

16、句開關(guān)語句 switch casev注釋語句注釋語句 %v中斷語句中斷語句 breakv暫停語句暫停語句 pausev回顯語句回顯語句 echo on/off24 3.3 選擇結(jié)構(gòu) 3.3.1 if語句 在在MATLAB中,中,if語句有語句有3種格式。種格式。 1.單分支單分支if語句語句 語句格式為:語句格式為: if 條件 語句組 end 當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行當條件成立時,則執(zhí)行語句組,執(zhí)行完之后繼續(xù)執(zhí)行if語句的后繼語句,若條語句的后繼語句,若條件不成立,則直接執(zhí)行件不成立,則直接執(zhí)行if語句的后繼語句。語句的后繼語句。目錄目錄25 2.雙分支if語句 語句格

17、式為: if 條件 語句組1 else 語句組2 end 當條件成立時,執(zhí)行語句組1,否則執(zhí)行語句組2,語句組1或語句組2執(zhí)行后,再執(zhí)行if語句的后繼語句。目錄目錄26 例3.4計算分段函數(shù)值目錄目錄2cos(1)1,10,10 xxxyx xx x程序如下: x=input(請輸入請輸入x的值的值:); if x=10 y=cos(x+1)+sqrt(x*x+1); else y=x*sqrt(x+sqrt(x); end y請輸入請輸入x的值的值:y = 47.18931227 3.多分支if語句語句格式為:if 條件1 語句組1 elseif 條件2 語句組2 elseif 條件m 語句

18、組m else 語句組m+1end目錄目錄2829 例3.5 輸入一個字符,若為大寫字母,則輸出其后繼字符,若為小寫字母,則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對應(yīng)的數(shù)值,若為其他字符則原樣輸出。目錄目錄 c=input(請輸入一個字符,s); if c=A & c=a& c=0& c *Inner matrix dimensions must agree.36 3.4 循環(huán)結(jié)構(gòu) 3.4.1 for語句基本格式基本格式for 循環(huán)變量起始值:步長:終止值循環(huán)變量起始值:步長:終止值 循環(huán)體循環(huán)體end步長缺省值為步長缺省值為1 1,可以在正實數(shù)或負實數(shù)范圍內(nèi)任意指定。對

19、于正數(shù),循環(huán)變量的,可以在正實數(shù)或負實數(shù)范圍內(nèi)任意指定。對于正數(shù),循環(huán)變量的值大于終止值時,循環(huán)結(jié)束;對于負數(shù),循環(huán)變量的值小于終止值時,循環(huán)結(jié)束。值大于終止值時,循環(huán)結(jié)束;對于負數(shù),循環(huán)變量的值小于終止值時,循環(huán)結(jié)束。循環(huán)結(jié)構(gòu)可以嵌套使用。循環(huán)結(jié)構(gòu)可以嵌套使用。目錄目錄37 for i=1:5for i=1:5 for j=1:5 for j=1:5 a(i,j)=1/(i+j-1); a(i,j)=1/(i+j-1); end endendenda=a= 1.0000 0.5000 0.3333 0.2500 0.2000 1.0000 0.5000 0.3333 0.2500 0.200

20、0 0.5000 0.3333 0.2500 0.2000 0.16670.5000 0.3333 0.2500 0.2000 0.1667 0.3333 0.2500 0.2000 0.1667 0.1429 0.3333 0.2500 0.2000 0.1667 0.1429 0.2500 0.2000 0.1667 0.1429 0.1250 0.2500 0.2000 0.1667 0.1429 0.1250 0.2000 0.1667 0.1429 0.1250 0.1111 0.2000 0.1667 0.1429 0.1250 0.111138 例例3.8 已知求已知求y的表達式

21、,的表達式, 當當n=100時,求時,求y的值。的值。 目錄目錄在實際在實際MATLAB編程中,為提高程序的執(zhí)行速度,常用向量運算來編程中,為提高程序的執(zhí)行速度,常用向量運算來代替循環(huán)操作:代替循環(huán)操作: n=100; i=1:n; f=1./i.2; y=sum(f)11/ /niyi i程序如下:程序如下: y=0;n=100; for i=1:n y=y+1/i/i; end yy = 2047/1252 39 例3.9 求定積分 。程序如下: a=0;b=3*pi;n=1000; h=(b-a)/n; x=a:h:b; f=exp(-0.5*x).*sin(x+pi/6); for i

22、=1:n s(i)= (f(i)+f(i+1)*h/2; end s=sum(s) 目錄目錄1320()sin()6xexdx 事實上,MATLAB提供了有關(guān)數(shù)值積分的標準函數(shù),實際應(yīng)用中可直接調(diào)用這些函數(shù)求數(shù)值積分。s = 754/837 40for語句更一般的格式:語句更一般的格式:for 循環(huán)變量=矩陣表達式 循環(huán)體語句 end 執(zhí)行過程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語句,直至各列元素處理完畢。實際上,“表達式1:表達式2:表達式3”是一個僅為一行的矩陣(行向量),因而列向量是單個數(shù)據(jù)。目錄目錄41 例3.10 已知5個學生4門功課的成績,求每名學生的總成績。程序如下

23、:s=0;a=65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87for k=a s=s+k;enddisp(s);目錄目錄a = 65 76 56 78 98 83 74 85 76 67 78 79 98 58 42 73 67 89 76 87 275 340 300 271 319 42 3.4.2 while語句 while語句一般用于不能事先確定循環(huán)次數(shù)的情況 while語句的一般格式為: while (條件) 循環(huán)體語句 end 其執(zhí)行過程為:若條件成立,則執(zhí)行循環(huán)體語句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出

24、循環(huán)(如圖3.5所示)。目錄目錄43While循環(huán)和循環(huán)和for循環(huán)的區(qū)別在于,循環(huán)的區(qū)別在于,while循環(huán)結(jié)構(gòu)的循環(huán)體被執(zhí)行的次數(shù)不是確定的,而循環(huán)結(jié)構(gòu)的循環(huán)體被執(zhí)行的次數(shù)不是確定的,而for結(jié)構(gòu)中循環(huán)體的執(zhí)行次數(shù)是確定的。結(jié)構(gòu)中循環(huán)體的執(zhí)行次數(shù)是確定的。44例 用循環(huán)求解例 用循環(huán)求解 最小的 m45用用while循環(huán)語句編寫一個計算循環(huán)語句編寫一個計算1000以內(nèi)的以內(nèi)的Fibonacci數(shù):數(shù): f=1 1; i=1; while f(i)+f(i+1)1000 f(i+2)=f(i)+f(i+1); i=i+1; end f= 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 98746 例例3.11 產(chǎn)生一個長度為的調(diào)和數(shù)列。產(chǎn)生一個長度為的調(diào)和數(shù)列。 程序如下:程序如下: X=zeros(1,6); i=1; while i=6 X(i)=1/i; i=i+1; end format rat %使用分數(shù)表示數(shù)值使用分數(shù)表示數(shù)值 disp(X)目錄目錄Columns 1 through 5 1 1/2 1/3 1/4 1/5 Column 6 1/6 47 與循環(huán)結(jié)構(gòu)相關(guān)的還有一個break語句,當在

溫馨提示

  • 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

提交評論