資源描述:
《matlab筆記 m文件》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、Matlab筆記之十一----◎#有關(guān)M文件編寫?!騠or循環(huán)結(jié)構(gòu):forx=array(commands)endwhile循環(huán)結(jié)構(gòu):whileexpression(commands)enda(1)=1a(2)=1i=2whilea(i)<=10000a(i+1)=a(i-1)+a(i)i=i+1end;ia(i)單分支:ifexpression(commands)end雙分支:ifexpression(commands1)else(commands2)end多分支:ifexpression1(commands)elseifexpression2(commands)……
2、……else(commands)end如果判決條件expression為一個(gè)空數(shù)組,MATLAB認(rèn)為條件為假(false)。表達(dá)式有時(shí)由多個(gè)邏輯子表達(dá)式組成的,MATLAB將盡可能少地檢測這些子表達(dá)式的值。例如,表達(dá)式為:(子表達(dá)式1
3、子表達(dá)式2),當(dāng)MATLAB檢測到子表達(dá)式1的值為真時(shí),它就認(rèn)為表達(dá)式為真,而不再對子表達(dá)式2進(jìn)行檢測。又如,表達(dá)式為:(子表達(dá)式1&子表達(dá)式2),當(dāng)MATLAB檢測到子表達(dá)式1的值為假時(shí),它就認(rèn)為表達(dá)式值為假的,從而跳過該結(jié)構(gòu)。if指令判決和break指令的配合使用,可以強(qiáng)制終止for循環(huán)或while循環(huán)。switch-case結(jié)構(gòu):s
4、witchexex為一標(biāo)量或字符串。casetest1(commands1)當(dāng)ex等于test1時(shí),執(zhí)行組命令1,然后跳出該結(jié)構(gòu)。casetest2……casetestk(commandsk)當(dāng)ex等于testk時(shí),執(zhí)行組命令k,然后跳出該結(jié)構(gòu)。otherwiseotherwise指令可以不存在(commands)表達(dá)式不等于前面所有檢測值時(shí),則執(zhí)行該組命令。end1當(dāng)遇到switch結(jié)構(gòu)時(shí),MATLAB將表達(dá)式的值依次和各個(gè)case指令后面的檢測值進(jìn)行比較。如果比較結(jié)果為假,則取下一個(gè)檢測值再比較,一旦比較結(jié)果為真,MATLAB將執(zhí)行相應(yīng)的一組命令,然后跳出該結(jié)構(gòu)。如
5、果所有的比較結(jié)果都為假,即表達(dá)式的值和所有的檢測都不等,MATLAB將執(zhí)行otherwise后面的一組命令。由此可見上述結(jié)構(gòu)保證了至少有一組命令會得到執(zhí)行。2switch指令后面的表達(dá)式應(yīng)為一個(gè)標(biāo)量或者為一個(gè)字符串。對于標(biāo)量形式的表達(dá)式,比較這樣進(jìn)行:表達(dá)式==檢測值i。而對于字符串,MATLAB將調(diào)用函數(shù)strcmp來實(shí)現(xiàn)比較:strcmp(表達(dá)式,檢測值i)。3case指令后面的檢測值不僅可以為一個(gè)標(biāo)量值或一個(gè)字符串,還可以為一個(gè)元胞數(shù)組。如果一個(gè)檢測值是一個(gè)元胞數(shù)組,MATLAB將把表達(dá)式的值和該元胞數(shù)組中的所有元素進(jìn)行比較;如果元胞數(shù)組中某個(gè)元素和表達(dá)式的值相等
6、,MATLAB認(rèn)為此次比較結(jié)果為真,從而執(zhí)行與該檢測值相應(yīng)的一組命令。fori=1:10a{i}=89+ib{i}=79+ic{i}=69+id{i}=59+iendc=[d,c]Name={'Jack','Marry','Peter','Rose','Tom'};Mark={72,83,56,94,100};Rank=cell(1,5);%創(chuàng)建一個(gè)含5個(gè)元素的架構(gòu)數(shù)組S,它有三個(gè)域S=struct('Name',Name,'Marks',Mark,'Rank',Rank);fori=1:5switchS(i).Markscase100%得分為100時(shí)S(i).Rank
7、='滿分';%列為‘滿分’等級casea%得分在90和99之間S(i).Rank='優(yōu)秀';%列為‘優(yōu)秀’等級caseb%得分在80和89之間S(i).Rank='良好';%列為‘良好’等級casec%得分在60和79之間S(i).Rank='及格';%列為‘及格’等級Otherwise%得分低于60S(i).Rank='不及格';%列為‘不及格’等級endend%將學(xué)生姓名,得分,登記等信息打印出來disp(['學(xué)生姓名','得分','等級']);disp('')fori=1:5disp([S(i).Name,blanks(6),num2str(S(i).Marks)
8、,blanks(6),S(i).Rank]);end;try-catch結(jié)構(gòu):try(commands1)組命令1總被執(zhí)行。若正確,則跳出此結(jié)構(gòu)。catch(commands2)僅當(dāng)組命令1出現(xiàn)執(zhí)行錯(cuò)誤,組命令2才被執(zhí)行。end只有當(dāng)MATLAB在執(zhí)行組命令1時(shí)出現(xiàn)了錯(cuò)誤后,組命令2才會被執(zhí)行??烧{(diào)用lasterr函數(shù)查詢出錯(cuò)原因。如果函數(shù)lasterr的運(yùn)行結(jié)果為一個(gè)空串,則表明組命令1被成功執(zhí)行了僅使用lasterr函數(shù)返回最近的出錯(cuò)提示。clearN=3A=magic(3)tryN=N+1A_N=A(N,:)catchA_end=A