挺好的——matlab循環(huán)語(yǔ)句_第1頁(yè)
挺好的——matlab循環(huán)語(yǔ)句_第2頁(yè)
挺好的——matlab循環(huán)語(yǔ)句_第3頁(yè)
挺好的——matlab循環(huán)語(yǔ)句_第4頁(yè)
挺好的——matlab循環(huán)語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩4頁(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 基本語(yǔ)句1.循環(huán)語(yǔ)句forfor  i=s1:s3:s2    循環(huán)語(yǔ)句組end解釋:首先給i賦值s1;然后,判斷i是否介于s1與s2之間;如果是,則執(zhí)行循環(huán)語(yǔ)句組,i=i+s3(否則,退出循環(huán).);執(zhí)行完畢后,繼續(xù)下一次循環(huán)。例:求1到100的和,可以編程如下:   sum=0   for i=1:1:100     sum=sum+i   end

2、   這個(gè)程序也可以用while語(yǔ)句編程。      注:for循環(huán)可以通過(guò)break語(yǔ)句結(jié)束整個(gè)for循環(huán).2.循環(huán)語(yǔ)句while  例:sum=0;i=1;      while(i<=100)       sum=sum+i;i=i+1;      end  

3、0;   3.if語(yǔ)句  if(條件)    語(yǔ)句  end    if(條件)    語(yǔ)句  else    語(yǔ)句  end  if(條件)    語(yǔ)句  elseif    語(yǔ)句  en

4、d    4.關(guān)系表達(dá)式: =,>,<,>=,<=,=(精確等于)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    -

5、6    11    -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ì)語(yǔ)言是一種被稱為第四代編程語(yǔ)言的高級(jí)程序設(shè)計(jì)語(yǔ)言,其程序簡(jiǎn)潔,可讀性很強(qiáng),容易調(diào)試。同時(shí),MATLAB的編程效率比C/C+語(yǔ)言要高得多。 MATLAB編程環(huán)境有很多。常用的有: 1.命令窗口 2.word窗口 3.M-文件編輯器,這是最好的編程環(huán)境。 M-文件的擴(kuò)展名為“.

6、m”。M-文件的格式分為兩種:   l M-腳本文件,也可稱為“命令文件”。    M-函數(shù)文件。這是matlab程序設(shè)計(jì)的主流。l     保存后的文件可以隨時(shí)調(diào)用。     二、MATLAB程序結(jié)構(gòu) 按照現(xiàn)代程序設(shè)計(jì)的觀點(diǎn),任何算法功能都可以通過(guò)三種基本程序結(jié)構(gòu)來(lái)實(shí)現(xiàn),這三種結(jié)構(gòu)是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。其中順序結(jié)構(gòu)是最基本的結(jié)構(gòu),它依照語(yǔ)句的自然順序逐條地執(zhí)行程序的各條語(yǔ)句。如果要根據(jù)輸入數(shù)據(jù)的實(shí)際情況進(jìn)行邏輯判斷,對(duì)不同的結(jié)果進(jìn)行不同的處理,可以使用選擇結(jié)構(gòu)。如果需要反

7、復(fù)執(zhí)行某些程序段落,可以使用循環(huán)結(jié)構(gòu)。 1  順序結(jié)構(gòu) 順序結(jié)構(gòu)是由兩個(gè)程序模塊串接構(gòu)成。一個(gè)程序模塊是完成一項(xiàng)獨(dú)立功能的邏輯單元,它可以是一段程序、一個(gè)函數(shù),或者是一條語(yǔ)句。 看圖可知,在順序結(jié)構(gòu)中,這兩個(gè)程序模塊是順序執(zhí)行的,即先執(zhí)行<程序模塊1>,然后執(zhí)行<程序模塊2>。 實(shí)現(xiàn)順序結(jié)構(gòu)的方法非常簡(jiǎn)單,只需將程序語(yǔ)句順序排列即可。 2  選擇結(jié)構(gòu) 在MATLAB中,選擇結(jié)構(gòu)可由兩種語(yǔ)句來(lái)實(shí)現(xiàn)。 (1)  if語(yǔ)句 if語(yǔ)句的最簡(jiǎn)單用法為: if  表達(dá)式; 程序模塊; end

8、if語(yǔ)句的另一種用法為: if  表達(dá)式 程序模塊1 else 程序模塊2 end 例1  使用if語(yǔ)句判斷學(xué)生的成績(jī)是否及格。 程序: clear   n=input(輸入n= )   m=60;if  nm, r=不及格      else r=及格 end     練習(xí)一:將例1寫入M-文件編輯器,然后在command window 調(diào)用這個(gè)程序。   

9、0; 當(dāng)針對(duì)多個(gè)條件進(jìn)行選擇時(shí),可以采用下面的格式: if  表達(dá)式1        程序模塊1           elseif  表達(dá)式2                  程序模塊2    &#

10、160;                          elseif  表達(dá)式n                      程序模塊n  

11、;       else             程序模塊n+1         end 例2  將百分制的學(xué)生成績(jī)轉(zhuǎn)換為五分制輸出。 程序: clear n=input(輸入n= ) if  n>=90 chji=優(yōu)秀 elseif  n>=80

12、 chji=良好 elseif  n>=70 chji=中等 elseif  n>=60 chji=及格 else chji=不及格 end 練習(xí)二:將例2寫入M-文件編輯器,然后在command window 調(diào)用這個(gè)程序。 (2)  switch語(yǔ)句 switch語(yǔ)句可以替代多分支的if語(yǔ)句,而且switch語(yǔ)句簡(jiǎn)潔明了,可讀性更好。其格式為: switch  表達(dá)式    case  數(shù)值1   &

13、#160;            程序模塊1 case  數(shù)值2           程序模塊2 otherwise 程序模塊n end 其中的otherwise模塊可以省略。 switch語(yǔ)句的執(zhí)行過(guò)程是:首先計(jì)算表達(dá)式的值,然后將其結(jié)果與每一個(gè)case后面的數(shù)值依次進(jìn)行比較,如果相等,則執(zhí)行該case的程序模塊;如果都不相等,則執(zhí)行otherwise模塊中的語(yǔ)句。

14、如圖3所示。 例3  用switchcase開關(guān)結(jié)構(gòu)將百分制的學(xué)生成績(jī)轉(zhuǎn)換為五分制的成績(jī)輸出。 程序: clear x=58   switch  fix(x/10)     case  10,9         y=優(yōu)秀     case  8        

15、 y=良好     case  7         y=中等     case  6         y=及格     otherwise         y=不及格 end &#

16、160; 練習(xí)三:將例3寫入M-文件編輯器,然后在command window 調(diào)用這個(gè)程序。 3  循環(huán)結(jié)構(gòu) 循環(huán)結(jié)構(gòu)的流程圖如圖4所示它可以多次重復(fù)執(zhí)行某一組語(yǔ)句。循環(huán)是計(jì)算機(jī)解決問(wèn)題的主要手段。程序命令后面輸入與不輸入“;”的區(qū)別是,當(dāng)輸入半角的分號(hào)時(shí),命令中的變量會(huì)自動(dòng)列表儲(chǔ)存在 workspace中,變量的值不會(huì)在window command中顯示出來(lái);當(dāng)不輸入半角的分號(hào)時(shí),變量不僅也會(huì)自動(dòng)儲(chǔ)存在workspace中,還會(huì)在window command窗口中顯示出變量的值。Matlab取整函數(shù)有: fix, floor, ceil, round

17、.具體應(yīng)用方法如下:   fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;    floor,顧名思義,就是地板,所以是取比它小的整數(shù),即朝負(fù)無(wú)窮方向取整,如floor(-1.3)=-2; floor(1.3)=1; floor(-1.8)=-2,floor(1.8)=1    ceil與floor相反,它的意思是天花板,也就是取比它大的最小整數(shù),即朝正無(wú)窮方向取整,如ceil(-1.3)=-1; ceil(1.3)=2;ceil(-1.8)=-1,ceil(1.8)=2    round四

18、舍五入到最近的整數(shù),如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。 在MATLAB中,循環(huán)結(jié)構(gòu)可以由兩種語(yǔ)句結(jié)構(gòu)實(shí)現(xiàn)。 (1) forend 循環(huán)結(jié)構(gòu)。其格式為:                         for i=V,循環(huán)體結(jié)構(gòu),end  

19、0;  其中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=1 2 5  s=0;  for k=a,  s=s+k2;  end,  s,   該例題只是為了說(shuō)明for語(yǔ)句的格式,事實(shí)上,用下面的語(yǔ)句求和更為簡(jiǎn)單。 命令: p=sum(a.2)   練習(xí)四:建

20、立MATLAB與word的連接,在新建的m-book中寫入上面的程序,并用notebook菜單運(yùn)行之。 循環(huán)結(jié)構(gòu)里面還可以包含循環(huán)結(jié)構(gòu),形成多重循環(huán)。 例5    設(shè)計(jì)一個(gè)九九乘法表。 程序: clear for  i=1:9 for  j=1:9 a(i , j)=i*j; end end        a,       練習(xí)五:直接在命令窗編寫上面的程序。 試運(yùn)行

21、下面的程序,并加以分析: 程序: disp(     九九乘法表 ),for i=1:9, for j=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ì)

22、精度 解:解題的思路是,讓y值不斷減小,直到MATLAB分不出1+y與1的差別為止。 程序: y=1; while  1+y>1;  y1=y;  y=y/2; end,y1說(shuō)明: for循環(huán)與while循環(huán)的區(qū)別是,for語(yǔ)句的循環(huán)次數(shù)是確定的,而while語(yǔ)句的循環(huán)次數(shù)是不確定的。 一定要注意在循環(huán)結(jié)構(gòu)體內(nèi)設(shè)置“修改條件表達(dá)式的語(yǔ)句”,以免進(jìn)入“死循環(huán)”。 一旦出現(xiàn)死循環(huán),在命令窗用ctrl+c可使程序中止。 注意程序的可讀性。 練習(xí)六:在M-文件編輯器內(nèi)編寫上面的腳本文件,并利用菜單或快捷按鈕運(yùn)行之。

23、三、M-文件 M文件是包含MATLAB代碼的文件。M文件按其內(nèi)容和功能可分為腳本M文件和函數(shù)M文件這兩大類。 1、腳本M文件 腳本M文件是許多MATLAB代碼按順序組成的命令集合,不接受參數(shù)的輸入和輸出,與MATLAB工作區(qū)共享變量空間。腳本文件一般用來(lái)實(shí)現(xiàn)一個(gè)相對(duì)獨(dú)立的功能,比如對(duì)某個(gè)數(shù)據(jù)集進(jìn)行某種分析、繪圖,求解方程等等。 前面的幾個(gè)例題都是腳本文件的類型。 2、函數(shù)M文件 MATLAB的M-函數(shù)是由function語(yǔ)句引導(dǎo)的,其基本格式如下: function 輸出形參列表 = 函數(shù)名 (輸入形參列表) 注釋說(shuō)明語(yǔ)句段,由%引導(dǎo); 函數(shù)體語(yǔ)句 函數(shù)

24、文件需要在M-文件編輯器(editor)中編寫。寫完以后,按照當(dāng)前的搜索路徑保存。以后就可以隨時(shí)調(diào)用這個(gè)函數(shù)了。 與腳本M文件不同的是,調(diào)用函數(shù)M文件時(shí)需要輸入自變量的實(shí)際值。 隨便打開一個(gè)M-文件看一看: open lsqlin 編程實(shí)例 例7. 定義一個(gè)函數(shù)  f(x)=sin(x)2, 其中x以“度”為單位。然后再調(diào)用該函數(shù)。 解:在M-文件編輯器內(nèi)寫入下面的文件: function y=sinsd(x) %自變量x以“度”為單位。 a=x/180*pi; %a以弧度表示y=sin(a).2; 將上面的文件保存之后即可隨時(shí)調(diào)用。

25、 命令: t=sinsd(45)  t =     0.5000   命令: help sinsd   命令: t=sinsd(45,60)   t =     0.5000    0.7500   表明該函數(shù)對(duì)元素群運(yùn)算有效。上面的語(yǔ)句相當(dāng)于 命令: x=45,60;t=sinsd(x)   t =   &

26、#160; 0.5000    0.7500   命令: x=45,60;30,90;f=sinsd(x)   f =     0.5000    0.7500     0.2500    1.0000   將源文件中最后一行的“.”去掉,再運(yùn)行以上兩條命令,我們會(huì)發(fā)現(xiàn)什么?(不能以矩陣的方式求解) 例8.&

27、#160;在MATLAB中,一個(gè)函數(shù)可以調(diào)用其它函數(shù),也可以調(diào)用自身,即遞歸調(diào)用。下面利用遞歸算法編寫一個(gè)函數(shù),用來(lái)計(jì)算Fibonacci數(shù)列的第k項(xiàng)。 Fibonacci數(shù)列: 1,1,2,3,5,8,13,21, M-函數(shù)文件: function a=my_fibo(k) if k=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ù)。 遞歸算法無(wú)疑是解決某一類問(wèn)題的有效方法,但不宜濫用,因?yàn)樗倪\(yùn)算速tic和toc用

28、來(lái)記錄matlab命令執(zhí)行的時(shí)間。   tic用來(lái)保存當(dāng)前時(shí)間,而后使用toc來(lái)記錄程序完成時(shí)間。   兩者往往結(jié)合使用,用法如下:   tic   operations   toc   顯示時(shí)間單位:秒度往往很慢。 命令: tic,  n= my_fibo(26)  ,toc   n =     

29、 121393 elapsed_time =    34.4290(與計(jì)算機(jī)的運(yùn)行有關(guān)) 下面我們嘗試用一般的循環(huán)語(yǔ)句來(lái)求解這個(gè)問(wèn)題。 程序: tic,n=1,1;for k=3:100,n(k)=n(k-1)+n(k-2);end,toc,   elapsed_time =     0.0100   命令: n(1:26)   ans =   Columns 1 throug

30、h 8         1       1       2       3       5 8 13        21

31、   Columns 9 through 16        34      55      89     144     233 377      610  

32、     987   Columns 17 through 24      1597    2584    4181    6765   10946 17711    28657     46368

33、  Columns 25 through 26     75025  121393   例9. 可變輸入變量個(gè)數(shù)的函數(shù) MATLAB提供的conv( )函數(shù)可用來(lái)求兩個(gè)多項(xiàng)式的乘積。對(duì)于多個(gè)多項(xiàng)式的連乘,則不能直接使用此函數(shù),需要用該函數(shù)嵌套使用,用起來(lái)很不方便。下面編寫一個(gè)MATLAB函數(shù),使它能直接處理任意多個(gè)多項(xiàng)式的乘積問(wèn)題。 1. Matlab中使用varargin來(lái)實(shí)現(xiàn)參數(shù)可變的函數(shù)2. 只要將最后一個(gè)參數(shù)設(shè)置為varargi

34、n,就可以實(shí)現(xiàn)3. 在這個(gè)函數(shù)里,varargin就是一個(gè)cell數(shù)組,它包含了用戶輸入的參數(shù)M-函數(shù)文件: function a=convs(varargin) a=1; for i=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

35、,3; d=convs(p,q,f)   d =      1     6    19    36    45    44    35    30   命令: convs(p,q,f,1,1,1,3,1,1)&

36、#160;  ans =     1    11    56   176   376   578   678   648   527   315 90   例10  關(guān)于break、continue、return的用法。 當(dāng)程序運(yùn)行過(guò)程中出現(xiàn)return命令

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論