




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Matlab控制流1、for循環(huán)結構 for循環(huán)結構的語法形式為: for x=array (commands) end 其中,for指令后的變量x稱為循環(huán)變量,而for與end之間的組命令稱為循環(huán)體。循環(huán)體被重復執(zhí)行的次數(shù)是確定的,該次數(shù)由for指令后面的數(shù)組array的列數(shù)決定。換言之,循環(huán)變量依次取數(shù)組的各列,對于每個變量值,循環(huán)體被執(zhí)行一次。例例1一個簡單的一個簡單的for循環(huán)示例。循環(huán)示例。for i=1:10; %i依次取依次取1,2,10 x(i)=i; %對每個對每個i值,重復執(zhí)行由該指令構成的循環(huán)體值,重復執(zhí)行由該指令構成的循環(huán)體end; x %要求顯示運行后數(shù)組要求顯示運行
2、后數(shù)組x的值的值x = 1 2 3 4 5 6 7 8 9 10 說明:循環(huán)不會因為在循環(huán)體內(nèi)對循環(huán)變量重新置值而中說明:循環(huán)不會因為在循環(huán)體內(nèi)對循環(huán)變量重新置值而中斷;在斷;在for后面的表達式中的數(shù)組可以為任何合法的后面的表達式中的數(shù)組可以為任何合法的Matlab數(shù)數(shù)組;循環(huán)結構可以嵌套使用;為了得到高效代碼,應盡量提高組;循環(huán)結構可以嵌套使用;為了得到高效代碼,應盡量提高代碼的向量化程度,而避免使用循環(huán)結構;為了得到高效代代碼的向量化程度,而避免使用循環(huán)結構;為了得到高效代碼,在循環(huán)指令之前應盡量對數(shù)組進行預定義。碼,在循環(huán)指令之前應盡量對數(shù)組進行預定義。2、while循環(huán)結構while
3、循環(huán)結構的語法形式為: while expression (commands) end 在while和end之間的“組命令”被稱為循環(huán)體。當Matlab碰到while指令時,首先檢測expression的值,如其值為邏輯真(非零),則執(zhí)行組命令。當組命令執(zhí)行完畢,繼續(xù)檢測表達式的值,若表達式值仍為真,循環(huán)執(zhí)行組命令;而一旦表達式值為假時,結束循環(huán)。例2 Fibonacci數(shù)組的元素滿足Fibonacci 規(guī)則: ;且 。現(xiàn)要求該數(shù)組中第一個大于10000的元素。 a(1)=1;a(2)=1;i=2;while a(i)8 sums=number*0.95*cost;end,sums sums
4、= 114.0000 例4 用for循環(huán)指令來尋求Fibonacc數(shù)組中第一個大于10000的元素。n=100;a=ones(1,n);for i=3:n a(i)=a(i-1)+a(i-2); if a(i)=10000 a(i), break; %跳出所在的一級循環(huán)跳出所在的一級循環(huán) end;end,i ans = 10946i = 21 4、switch-case結構 switch-case指令的一般語法結構形式如下:switch ex ex為一標量或字符串 case test1 (commands 1) 當ex等于test1時,執(zhí)行組命令1,然后跳 出該結構 case test2 ca
5、se testk (commands k) 當ex等于testk時,執(zhí)行該組命令k,然后 跳出該結構 otherwise otherwise指令可以不存在 (commands) 表達式不等于前面所有檢測值時,則執(zhí)行 該組命令end 當遇到switch結構時,Matlab將表達式的值依次和各個case指令后面的檢測值進行比較。如果比較結果為假,則取下一個檢測值再來比較,而一旦比較結果為真,Matlab將執(zhí)行相應的一組命令,然后跳出該結構。如果所有的比較結構都為假,即表達式的值和所有的檢測值都不等,Matlab將執(zhí)行otherwise后面的一組命令,由此可見上述結構保證了至少有一組命令會得到執(zhí)行。
6、 switch指令后面的表達式應為一個標量或者為一個字符串。對于標量形式的表達式,比較這樣進行:表達式=檢測值i。而對于字符串,Matlab將調(diào)用函數(shù)strcmp來實現(xiàn)比較:strcmp(表達式,檢測值i)。 strcmp用來比較兩個字符串是否完全相同 比如: a = 學生;b = 學生; strcmp(a,b)ans =1 返回1,則表示兩個字符串是相同的;否則就不同 case指令后面的檢測值不僅可以為一個標量值或一個字符串,還可以為一個元胞數(shù)組。如果一個檢測值時一個元胞數(shù)組,Matlab將把表達式的值和該元胞數(shù)組中的所有元素進行比較,如果元胞數(shù)組中某個元素和表達式的值相等,Matlab認為
7、此次比較結果為真,從而執(zhí)行與該檢測值相應的一組命令。 元胞數(shù)組是MATLAB中特有的一種數(shù)據(jù)類型,是數(shù)組的一種,其內(nèi)部元素可以是屬于不同的數(shù)據(jù)類型,概念理解上,可以認為它和c語言里面的結構體、c+里面的對象很類似。matlab中用char(n)來定義,當然最基本的是包裹式定義,比如先定義了一個字符型的變量a,并賦值,然后定義一個長整型b,并賦值最后用大括號來打包裹c=a,b來形成元胞c,當然進一步可以將c再包裹進去如d=a,b,c,abc,123都是合法的。 v例例4 學生的成績管理,用來演示學生的成績管理,用來演示switch結構的應用。結構的應用。vclear;v%劃分區(qū)域:滿分(劃分區(qū)域
8、:滿分(100),優(yōu)秀(),優(yōu)秀(90-99),良好(),良好(80-89),及格(),及格(60-79),不及格(),不及格(60)vfor i=1:10;ai=89+i;bi=79+i;ci=69+i;di=59+i;end;c=d,c;vName= Jack,Marry,Peter, Rose, Tom;vMark=72,83,56,94,100;Rank=cell(1,5);v%創(chuàng)建一個含創(chuàng)建一個含5個元素的框架數(shù)組個元素的框架數(shù)組S,它有三個域,它有三個域vS=struct(Name,Name,Marks,Mark,Rank,Rank);v%根據(jù)學生的分數(shù),求出相應的等級根據(jù)學生的分
9、數(shù),求出相應的等級vfor i=1:5v switch S(i).Marksv case 100 v S(i).Rank=滿分滿分;v case av S(i).Rank= 優(yōu)秀優(yōu)秀;v case b v S(i).Rank= 良好良好;v case c v S(i).Rank= 及格及格;v otherwise v S(i).Rank=不及格不及格;v endvend %將學生姓名,得分,登記等信息打印出來。disp(學生姓名學生姓名 , 得分得分 , 等級等級);disp( )for i=1:5;disp(S(i).Name,blanks(6),num2str(S(i).Marks),bl
10、anks(6),S(i).Rank);end; Matlab的switch指令不同于C語言的switch指令。當matlab檢測到某個檢測值和表達式的值相等,將執(zhí)行相應的一組命令,執(zhí)行完畢,自動跳出switch結構,而無需使用break指令。5、try-catch結構 try-catch指令的語法結構形式如下: try (commands 1) 組命令1總被執(zhí)行。若正確,則跳出此結構 catch (commands 2) 僅當組命令1出現(xiàn)執(zhí)行錯誤,組命令2才被 執(zhí)行 end 只有當Matlab在執(zhí)行組命令1時出現(xiàn)了錯誤后,組命令2才會被執(zhí)行。 可調(diào)用lasterr函數(shù)查詢出錯原因。如果函數(shù)la
11、sterr的運行結果為一個空串,則表明組命令1被成功執(zhí)行了。 當執(zhí)行組命令2時又出錯,Matlab將終止該結構。例5 try-catch結構應用實例:對 魔方陣的行進行援引,當“行下標”超出魔方陣的最大行數(shù)時,將改向?qū)ψ詈笠恍械脑?,并顯示“出錯”警告。clear,N=4;A=magic(3); %設置設置3行行3列魔方陣列魔方陣Atry A_N=A(N,:) %取取A的第的第N行元素行元素catch A_end=A(end,:) %如果取如果取A(N,:)出錯,則改取出錯,則改取A的最后一行的最后一行endlasterr %顯示出錯原因顯示出錯原因A_end = 4 9 2ans = Ind
12、ex exceeds matrix dimensions. )33( 6、控制流的其他常用指令1)return指令 通常,當被調(diào)函數(shù)執(zhí)行完后,Matlab會自動地把控制轉至主調(diào)函數(shù)或者指令窗。如果在被調(diào)函數(shù)中插入了return指令,可以強制Matlab結束執(zhí)行該函數(shù)并把控制轉出。2)input和keyboard指令 (1)input input指令將Matlab的“控制權”暫時交給用戶。此后,用戶通過鍵盤鍵入數(shù)值、字符串或者表達式,并經(jīng)“回車”把鍵入內(nèi)容輸入工作空間,同時把“控制權”交還給Matlab。常用的格式如下: v=input(message) 將用戶鍵入的內(nèi)容賦給變 量vv=inpu
13、t(message,s) 將用戶鍵入的內(nèi)容作為 字符串賦給變量v 指令中message是將要顯示在屏幕上的字符串,這是必不可少的。 對于第一種調(diào)用格式,用戶可以輸入數(shù)值、字符串、元胞數(shù)組等各種形式的數(shù)據(jù)。 對于第二種調(diào)用格式,不管鍵入什么,總以字符串形式賦給變量v(2)keyboard 當程序遇到keyboard時,Matlab將“控制權”交給鍵盤,用戶可以從鍵盤輸入各種合法的Matlab指令,只有當用戶使用return指令結束輸入后,“控制權”才交還給程序。 它與input的不同在于:它允許輸入任意多個Matlab指令,而input只能輸入賦給變量的“值”,即數(shù)值、字符串或元胞數(shù)組等。3)y
14、esinput指令 yesinput指令是一個智能輸入指令,它提供了一個缺省輸入值,并可以對輸入范圍進行檢查。其調(diào)用形式如下: v=yesinput(Prompt,Default,Possib)該指令涉及用戶和Matlab的交互操作,因此無法在notebook中運行。 Prompt為文字提示,Default為缺省設置“值”,possib為可選“值”的范圍。4)pause指令 pause 暫停執(zhí)行文件,等待用戶按 任意鍵繼續(xù) pause(n) 在繼續(xù)執(zhí)行之前,暫停n秒5)break指令 break指令導致包含有該指令的while、for指令的終止。通過使用break指令,可不比等待循環(huán)的自然結束
15、,而根據(jù)循環(huán)內(nèi)部另設的某種條件是否滿足,去決定是否退出循環(huán)。6)error和warning指令 在編寫M文件時,常用的警示指令有: error(message) 顯示出錯信息message,終止 程序 errortrap 錯誤發(fā)生后,程序繼續(xù)執(zhí)行與否的雙位 開關 lasterr 顯示Matlab自動判斷的最新出錯原因并 終止程序 warning(message) 顯示警告信息message, 程序繼續(xù)運行 lastwarn 顯示Matlab自動給出的最新警告,程序 繼續(xù)運行v胞元數(shù)組胞元數(shù)組(cell Arry)的基本組分是胞元(cell),每個胞元本身在數(shù)組中是平等的,只能以下標區(qū)分。胞元可以存放任何類型、任何大小的數(shù)組,如任意維數(shù)值數(shù)組、字符串數(shù)組、符號對象等,而且同一個胞元數(shù)組中各胞元中的內(nèi)容可以不同。與數(shù)值數(shù)組一樣,胞元數(shù)組維數(shù)不受限制,可以一維、二維或更高維,不過
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧課堂省級課題申報書
- 數(shù)字孿生課題申報書
- 課題立項申報書幼兒園
- 孔子學堂課題申報書
- 兵團課題申報書
- 經(jīng)濟類課題申報書范例
- 城市更新課題申報書范本
- 醫(yī)院消防勞務合同范本
- 課題申報書是啥
- 教育科研方法課題申報書
- 保險公司客戶服務質(zhì)量提升手冊
- 成語故事-一諾千金-課件
- 餐廚廢棄物處理臺賬記錄表
- 鋼筋工安全操作規(guī)程
- 國家基本藥物培訓課件
- 煤礦安全管理人員考試題庫與答案(G卷)
- SMP-07-008-00 印刷性包裝材料管理規(guī)程
- 2024年深圳市優(yōu)才人力資源有限公司招考聘用綜合網(wǎng)格員(派遣至吉華街道)高頻難、易錯點500題模擬試題附帶答案詳解
- 旅游景區(qū)物業(yè)管理服務方案
- 華能內(nèi)蒙古東部能源有限公司招聘筆試題庫2024
- 山東省濟南市2024年中考數(shù)學試卷【附真題答案】
評論
0/150
提交評論