挺好的——matlab循環(huán)語句.doc_第1頁
挺好的——matlab循環(huán)語句.doc_第2頁
挺好的——matlab循環(huán)語句.doc_第3頁
挺好的——matlab循環(huán)語句.doc_第4頁
挺好的——matlab循環(huán)語句.doc_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Matlab 基本語句1.循環(huán)語句forfori=s1:s3:s2循環(huán)語句組end解釋:首先給i賦值s1;然后,判斷i是否介于s1與s2之間;如果是,則執(zhí)行循環(huán)語句組,i=i+s3(否則,退出循環(huán).);執(zhí)行完畢后,繼續(xù)下一次循環(huán)。例:求1到100的和,可以編程如下:sum=0fori=1:1:100sum=sum+iend這個(gè)程序也可以用while語句編程。注:for循環(huán)可以通過break語句結(jié)束整個(gè)for循環(huán).2.循環(huán)語句while例:sum=0;i=1;while(i,=,=,=(精確等于)5.邏輯表達(dá)式:|(或),&(且)6.n,m=size(A)(A為矩陣)這樣可以得到矩陣A的行和列數(shù)n=length(A),可以得到向量A的分量個(gè)數(shù);如果是矩陣,則得到矩陣A的行與列數(shù)這兩個(gè)數(shù)字中的最大值。7.!后面接Dos命令可以調(diào)用運(yùn)行一個(gè)dos程序。8.常見函數(shù):poly():為求矩陣的特征多項(xiàng)式的函數(shù),得到的為特征多項(xiàng)式的各個(gè)系數(shù)。如a=1,0,0;0,2,0;0,0,3,則poly(a)1-611-6。相當(dāng)于poly(a)1入3+(-6)入2+11入+(-6)。compan():可以求矩陣的伴隨矩陣.sin()等三角函數(shù)。 MATLAB在數(shù)學(xué)建模中的應(yīng)用(3)一、程序設(shè)計(jì)概述 MATLAB所提供的程序設(shè)計(jì)語言是一種被稱為第四代編程語言的高級(jí)程序設(shè)計(jì)語言,其程序簡潔,可讀性很強(qiáng),容易調(diào)試。同時(shí),MATLAB的編程效率比C/C+語言要高得多。 MATLAB編程環(huán)境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件編輯器,這是最好的編程環(huán)境。 M-文件的擴(kuò)展名為“.m”。M-文件的格式分為兩種: l M-腳本文件,也可稱為“命令文件”。 M-函數(shù)文件。這是matlab程序設(shè)計(jì)的主流。l 保存后的文件可以隨時(shí)調(diào)用。 二、MATLAB程序結(jié)構(gòu) 按照現(xiàn)代程序設(shè)計(jì)的觀點(diǎn),任何算法功能都可以通過三種基本程序結(jié)構(gòu)來實(shí)現(xiàn),這三種結(jié)構(gòu)是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。其中順序結(jié)構(gòu)是最基本的結(jié)構(gòu),它依照語句的自然順序逐條地執(zhí)行程序的各條語句。如果要根據(jù)輸入數(shù)據(jù)的實(shí)際情況進(jìn)行邏輯判斷,對(duì)不同的結(jié)果進(jìn)行不同的處理,可以使用選擇結(jié)構(gòu)。如果需要反復(fù)執(zhí)行某些程序段落,可以使用循環(huán)結(jié)構(gòu)。 1順序結(jié)構(gòu) 順序結(jié)構(gòu)是由兩個(gè)程序模塊串接構(gòu)成。一個(gè)程序模塊是完成一項(xiàng)獨(dú)立功能的邏輯單元,它可以是一段程序、一個(gè)函數(shù),或者是一條語句??磮D可知,在順序結(jié)構(gòu)中,這兩個(gè)程序模塊是順序執(zhí)行的,即先執(zhí)行,然后執(zhí)行。 實(shí)現(xiàn)順序結(jié)構(gòu)的方法非常簡單,只需將程序語句順序排列即可。 2選擇結(jié)構(gòu) 在MATLAB中,選擇結(jié)構(gòu)可由兩種語句來實(shí)現(xiàn)。 (1)if語句 if語句的最簡單用法為: if表達(dá)式; 程序模塊; end if語句的另一種用法為: if表達(dá)式 程序模塊1 else 程序模塊2 end 例1使用if語句判斷學(xué)生的成績是否及格。 程序: clear n=input(輸入n=) m=60;ifnm, r=不及格 else r=及格 end 練習(xí)一:將例1寫入M-文件編輯器,然后在commandwindow調(diào)用這個(gè)程序。 當(dāng)針對(duì)多個(gè)條件進(jìn)行選擇時(shí),可以采用下面的格式: if 表達(dá)式1 程序模塊1 elseif表達(dá)式2程序模塊2 elseif表達(dá)式n 程序模塊nelse程序模塊n+1 end 例2將百分制的學(xué)生成績轉(zhuǎn)換為五分制輸出。 程序: clear n=input(輸入n=) ifn=90 chji=優(yōu)秀 elseifn=80 chji=良好 elseifn=70 chji=中等 elseifn=60 chji=及格 else chji=不及格 end 練習(xí)二:將例2寫入M-文件編輯器,然后在commandwindow調(diào)用這個(gè)程序。 (2)switch語句 switch語句可以替代多分支的if語句,而且switch語句簡潔明了,可讀性更好。其格式為: switch表達(dá)式 case數(shù)值1 程序模塊1 case數(shù)值2 程序模塊2 otherwise 程序模塊n end 其中的otherwise模塊可以省略。 switch語句的執(zhí)行過程是:首先計(jì)算表達(dá)式的值,然后將其結(jié)果與每一個(gè)case后面的數(shù)值依次進(jìn)行比較,如果相等,則執(zhí)行該case的程序模塊;如果都不相等,則執(zhí)行otherwise模塊中的語句。如圖3所示。例3用switchcase開關(guān)結(jié)構(gòu)將百分制的學(xué)生成績轉(zhuǎn)換為五分制的成績輸出。 程序: clear x=58 switchfix(x/10) case10,9 y=優(yōu)秀 case8 y=良好 case7 y=中等 case6 y=及格 otherwise y=不及格 end 練習(xí)三:將例3寫入M-文件編輯器,然后在commandwindow調(diào)用這個(gè)程序。 3循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)的流程圖如圖4所示它可以多次重復(fù)執(zhí)行某一組語句。循環(huán)是計(jì)算機(jī)解決問題的主要手段。程序命令后面輸入與不輸入“;”的區(qū)別是,當(dāng)輸入半角的分號(hào)時(shí),命令中的變量會(huì)自動(dòng)列表儲(chǔ)存在 workspace中,變量的值不會(huì)在window command中顯示出來;當(dāng)不輸入半角的分號(hào)時(shí),變量不僅也會(huì)自動(dòng)儲(chǔ)存在workspace中,還會(huì)在window command窗口中顯示出變量的值。Matlab取整函數(shù)有: fix, floor, ceil, round.具體應(yīng)用方法如下: fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1; floor,顧名思義,就是地板,所以是取比它小的整數(shù),即朝負(fù)無窮方向取整,如floor(-1.3)=-2; floor(1.3)=1; floor(-1.8)=-2,floor(1.8)=1 ceil與floor相反,它的意思是天花板,也就是取比它大的最小整數(shù),即朝正無窮方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;ceil(-1.8)=-1,ceil(1.8)=2 round四舍五入到最近的整數(shù),如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。在MATLAB中,循環(huán)結(jié)構(gòu)可以由兩種語句結(jié)構(gòu)實(shí)現(xiàn)。 (1)forend 循環(huán)結(jié)構(gòu)。其格式為: fori=V,循環(huán)體結(jié)構(gòu),end 其中V為一個(gè)行向量,循環(huán)變量i每次從V中取一個(gè)數(shù)值,執(zhí)行一次循環(huán)體的內(nèi)容,如此下去,直到完成V中的所有分量,就自動(dòng)結(jié)束循環(huán)體的執(zhí)行。 例4計(jì)算s=12+22+52。 程序: a=125;s=0; fork=a, s=s+k2; end, s, 該例題只是為了說明for語句的格式,事實(shí)上,用下面的語句求和更為簡單。 命令: p=sum(a.2) 練習(xí)四:建立MATLAB與word的連接,在新建的m-book中寫入上面的程序,并用notebook菜單運(yùn)行之。 循環(huán)結(jié)構(gòu)里面還可以包含循環(huán)結(jié)構(gòu),形成多重循環(huán)。 例5設(shè)計(jì)一個(gè)九九乘法表。 程序: clear fori=1:9 forj=1:9 a(i,j)=i*j; end enda, 練習(xí)五:直接在命令窗編寫上面的程序。 試運(yùn)行下面的程序,并加以分析: 程序:disp(九九乘法表),fori=1:9, forj=1:i,pi(j)=j*i;end,disp(pi),end 大括號(hào) 用于單元陣列的賦值 中括號(hào) 用于形成一個(gè)向量或矩陣小括號(hào) 通常用于一般的算術(shù)表達(dá)式,指示優(yōu)先運(yùn)算,還用于表示函數(shù)變量、向量下標(biāo)和矩陣下標(biāo)等到(2)whileend 循環(huán)結(jié)構(gòu)。其格式為: while(表達(dá)式) 循環(huán)結(jié)構(gòu)體 end 例6求MATLAB的相對(duì)精度 解:解題的思路是,讓y值不斷減小,直到MATLAB分不出1+y與1的差別為止。 程序: y=1;while1+y1;y1=y;y=y/2;end,y1說明: for循環(huán)與while循環(huán)的區(qū)別是,for語句的循環(huán)次數(shù)是確定的,而while語句的循環(huán)次數(shù)是不確定的。 一定要注意在循環(huán)結(jié)構(gòu)體內(nèi)設(shè)置“修改條件表達(dá)式的語句”,以免進(jìn)入“死循環(huán)”。 一旦出現(xiàn)死循環(huán),在命令窗用ctrl+c可使程序中止。 注意程序的可讀性。 練習(xí)六:在M-文件編輯器內(nèi)編寫上面的腳本文件,并利用菜單或快捷按鈕運(yùn)行之。 三、M-文件 M文件是包含MATLAB代碼的文件。M文件按其內(nèi)容和功能可分為腳本M文件和函數(shù)M文件這兩大類。 1、腳本M文件 腳本M文件是許多MATLAB代碼按順序組成的命令集合,不接受參數(shù)的輸入和輸出,與MATLAB工作區(qū)共享變量空間。腳本文件一般用來實(shí)現(xiàn)一個(gè)相對(duì)獨(dú)立的功能,比如對(duì)某個(gè)數(shù)據(jù)集進(jìn)行某種分析、繪圖,求解方程等等。 前面的幾個(gè)例題都是腳本文件的類型。 2、函數(shù)M文件 MATLAB的M-函數(shù)是由function語句引導(dǎo)的,其基本格式如下: function輸出形參列表=函數(shù)名(輸入形參列表) 注釋說明語句段,由%引導(dǎo); 函數(shù)體語句 函數(shù)文件需要在M-文件編輯器(editor)中編寫。寫完以后,按照當(dāng)前的搜索路徑保存。以后就可以隨時(shí)調(diào)用這個(gè)函數(shù)了。 與腳本M文件不同的是,調(diào)用函數(shù)M文件時(shí)需要輸入自變量的實(shí)際值。 隨便打開一個(gè)M-文件看一看: openlsqlin 編程實(shí)例 例7.定義一個(gè)函數(shù)f(x)=sin(x)2,其中x以“度”為單位。然后再調(diào)用該函數(shù)。 解:在M-文件編輯器內(nèi)寫入下面的文件: functiony=sinsd(x) %自變量x以“度”為單位。 a=x/180*pi; %a以弧度表示y=sin(a).2; 將上面的文件保存之后即可隨時(shí)調(diào)用。 命令: t=sinsd(45) t= 0.5000 命令: helpsinsd 命令: t=sinsd(45,60) t= 0.50000.7500 表明該函數(shù)對(duì)元素群運(yùn)算有效。上面的語句相當(dāng)于 命令: x=45,60;t=sinsd(x) t= 0.50000.7500 命令: x=45,60;30,90;f=sinsd(x) f= 0.50000.7500 0.25001.0000 將源文件中最后一行的“.”去掉,再運(yùn)行以上兩條命令,我們會(huì)發(fā)現(xiàn)什么?(不能以矩陣的方式求解)例8.在MATLAB中,一個(gè)函數(shù)可以調(diào)用其它函數(shù),也可以調(diào)用自身,即遞歸調(diào)用。下面利用遞歸算法編寫一個(gè)函數(shù),用來計(jì)算Fibonacci數(shù)列的第k項(xiàng)。 Fibonacci數(shù)列: 1,1,2,3,5,8,13,21, M-函數(shù)文件: functiona=my_fibo(k) ifk=1|k=2,a=1; else,a=my_fibo(k-1)+my_fibo(k-2);end 將這個(gè)文件寫入M-文件編輯器并以名稱“my_fibo.m”保存,以后就可以調(diào)用這個(gè)函數(shù)。 遞歸算法無疑是解決某一類問題的有效方法,但不宜濫用,因?yàn)樗倪\(yùn)算速tic和toc用來記錄matlab命令執(zhí)行的時(shí)間。tic用來保存當(dāng)前時(shí)間,而后使用toc來記錄程序完成時(shí)間。兩者往往結(jié)合使用,用法如下:ticoperationstoc顯示時(shí)間單位:秒度往往很慢。 命令: tic,n=my_fibo(26),toc n= 121393 elapsed_time= 34.4290(與計(jì)算機(jī)的運(yùn)行有關(guān)) 下面我們嘗試用一般的循環(huán)語句來求解這個(gè)問題。 程序: tic,n=1,1;fork=3:100,n(k)=n(k-1)+n(k-2);end,toc, elapsed_time= 0.0100 命令: n(1:26) ans= Columns1through81123581321 Columns9through16345589144233377610987 Columns17through24159725844181676510946 177112865746368 Columns25through2675025121393 例9.可變輸入變量個(gè)數(shù)的函數(shù) MATLAB提供的conv()函數(shù)可用來求兩個(gè)多項(xiàng)式的乘積。對(duì)于多個(gè)多項(xiàng)式的連乘,則不能直接使用此函數(shù),需要用該函數(shù)嵌套使用,用起來很不方便。下面編寫一個(gè)MATLAB函數(shù),使它能直接處理任意多個(gè)多項(xiàng)式的乘積問題。 1. Matlab中使用varargin來實(shí)現(xiàn)參數(shù)可變的函數(shù)2. 只要將最后一個(gè)參數(shù)設(shè)置為varargin,就可以實(shí)現(xiàn)3. 在這個(gè)函數(shù)里,varargin就是一個(gè)cell數(shù)組,它包含了用戶輸入的參數(shù)M-函數(shù)文件: functiona=convs(varargin) a=1; fori=1:length(varargin) a=conv(a,varargini); end 形參varargin是一個(gè)特殊的字符串,它把輸入變量列表轉(zhuǎn)換成一個(gè)元胞數(shù)組,每一個(gè)輸入變量都是這個(gè)元胞數(shù)組的一個(gè)元素。下面調(diào)用這個(gè)函數(shù),求解 d=(x4+2x3+4x2+5)(x+2)(x2+2x+3) 命令: p=1,2,4,0,5;q=1,2;f=1,2,3; d=convs(p,q,f) d= 16193645443530 命令: convs(p,q,f,1,1,1,3,1,1) ans= 1115617637657867864852731590 例10 關(guān)于break、continue、return的用法。 當(dāng)程序運(yùn)行過程中出現(xiàn)return命令時(shí),程序停止運(yùn)行。break、continue用在循環(huán)語句

溫馨提示

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