版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第八章M文獻程序設計基礎
計算機及信息工程學院第1頁8.1M文獻
M文獻是由MATLAB命令或函數組成文本文獻,以.m為擴展名。M文獻有兩種形式:命令文獻(Script)函數文獻(Function)8.1.1命令文獻命令文獻沒有輸入輸出參數,是最簡單M文獻。變量為工作區(qū)變量。第2頁【例8-1】建立命令文獻,繪制花瓣圖。在編輯器中編輯命令,繪制花瓣圖:%繪制花瓣圖theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).^2;rho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;fork=1:4subplot(2,2,k)%循環(huán)控制
polar(theta,rho(k,:))%繪制極坐標圖end第3頁8.1.2函數文獻函數文獻能夠介紹輸入參數和返回輸出參數,函數在自己工作空間中操作局部變量。MATLAB函數文獻有下列部分組成:函數定義行H1行幫助文本第一行,以“%”開始幫助文本函數體注釋第4頁【例8-2】生成矢量,并調用average函數。在編輯器中比較下列代碼:functiony=average(x)%AVERAGEMeanofvectorelements.%AVERAGE(X),whereXisavector,isthemeanofvectorelements.%Non-vectorinputresultsinanerror.[m,n]=size(x);if(~((m==1)|(n==1))|(m==1&n==1))error('Inputmustbeavector')end第5頁y=sum(x)/length(x);%Actualcomputation將上面代碼保存在文獻名為average.m文獻中。在命令窗口生成矢量,并調用average函數。>>z=1:99;>>average(z)第6頁8.1.3局部變量和全局變量用關鍵字global定義全局變量。8.2數據及數據文獻8.2.1數據類型8.2.2數據文獻MATLAB允許介紹數據文獻能夠分為下列幾類:以.mat為擴展名二進制數據文獻。由save和load命令直接存取。以.txt、.dat等為擴展名ASCⅡ碼數據文獻。用load或save命令讀入或存放。第7頁以.bmp、jpg、tif等為擴展名圖形文獻。使用imread和imwrite命令讀入和存放。以.wav為擴展名聲音文獻。使用waveread和wavwrite命令讀入和存放。8.2.3數據輸入向導8.2.4數據輸入和輸出第8頁8.3程序流程控制
8.3.1循環(huán)語句MATLAB提供了兩種循環(huán)方式:for-end循環(huán)和while-end循環(huán)。1、for循環(huán)for循環(huán)一般形式為:
forv=體現式語句體
endfor和end必須配對使用。第9頁【例8-3】簡單for循環(huán)示例。n=10;fori=1:nx(i)=(i+1).^2;endxx=49162536496481100121for循環(huán)能夠嵌套,但需要注意是,在相同中每一種for都必須與end相匹配。第10頁【例8-4】for循環(huán)嵌套。m=3;n=4;fori=1:mforj=1:na(i,j)=1/(i+j-1);endendformatrataa=11/21/31/41/21/31/41/51/31/41/51/6
第11頁【例8-5】利用非1步長for循環(huán),產生0~20以內偶數。fori=0:2:20a(i/2+1)=i;endaa=061218281420410161/6
第12頁2、while循環(huán)while循環(huán)一般體現式是:
while體現式語句體
endwhile與end必須配對第13頁【例8-6】利用while循環(huán),求解使n!達成100位數第一種n是多少?。n=1;whileprod(1:n)<1e100n=n+1;endnn=70
第14頁
8.3.2條件語句1、if-end語句
if-end語句是最簡單條件語句,其一般形式為:
if體現式語句體
end第15頁2、if-else-end語句if-else-end語句在if和end之間增加一種else選擇,其一般形式為:if體現式語句體1;else
語句體2;end第16頁【例8-7】應用if-else-end條件語句,判斷學生是否通過學業(yè)。if((attendance>=0.90)&(grade>=60))%判斷出席率和成績
pass=1;%滿足條件為通過elsefail=1;%不然為不通過end;第17頁3、if-elseif-end語句在else子句中嵌套if語句,組成elseif構造,其一般形式為:if體現式1
語句體1;elseif體現式2
語句體2;
else
語句體3;end第18頁【例8-8】用色彩辨別數據點范圍。n=100;x=1:n;y=randn(1,n);%建立100個元素隨機行矢量holdonfori=1:nify(i)<-1plot(x(i),y(i),'*g')%不大于-1點用綠色*標出
elseify(i)>=-1&y(i)<=1
第19頁plot(x(i),y(i),'ob')%在-1與1之間點用蘭色o標出
elseify(i)>=1plot(x(i),y(i),'xr')%大于1點用紅色x標出
endendholdoff第20頁8.3.3分支語句分支語句為switch-case-end,其一般形式為:.switch多半是(數值或字符串)case數值或字符串1
語句體1:case數值或字符串2
語句體2:…otherwise語句體n;end第21頁【例8-9】使用switch-case-end語句,檢查輸入數據值。switchinput_numcase-1disp('negativeone');%當input_num=-1時顯示
case0disp('zero');%當input_num=0時顯示
case1disp('positiveone');%當input_num=1時顯示
otherwisedisp('othervalue');%當input_num等于其他值時顯示end第22頁8.3.4檢測語句檢測語句try-catch主要用于檢測錯誤并變化流程,其一般形式為:try
語句體1catch
語句體2end使用lasterr函數查詢最后錯誤信息,但查詢成果為空字符串時表達語句體1成功執(zhí)行。第23頁【例8-10】使用try-catch語句,判斷錯誤語句。n=4;a=magic(3) %設置3×3矩陣atrya_n=a(n,:), %取a第n行元素catcha_end=a(end,:), %假如取a第n行犯錯,則改取a最后一行endlasterr %顯示犯錯原因第24頁a=816357492a_end=492ans=Indexexceedsmatrixdimensions.第25頁8.3.5其他流程控制語句1、continue語句
continue語句用于在for循環(huán)和while循環(huán)中跳過某些執(zhí)行語句。在for循環(huán)和while循環(huán)中,假如出現continue語句,則跳過循環(huán)體中所有剩下語句,繼續(xù)下一次循環(huán),在嵌套循環(huán)中,continue控制執(zhí)行本嵌套中下一次循環(huán)。第26頁【例8-11】使用continue語句,顯示文獻行數。fid=fopen('magic.m','r');%打開magic.m文獻count=0;%計數器置零while~feof(fid)%while循環(huán)判斷條件:是否文獻末尾
line=fgetl(fid);%從文獻中讀行
ifisempty(line)|strncmp(line,'%',1)%判斷是否為空行或注釋行
continue%假如是空行或注釋行繼續(xù)下一次循環(huán)
endcount=count+1;第27頁%假如不是空行或注釋行計數器加1enddisp(sprintf('%dlines',count));%顯示剔除后行數25lines第28頁2、break語句
break語句用于終止for循環(huán)和while循環(huán)執(zhí)行?!纠?-12】break語句使用方法。fid=fopen('dft.m','r');%打開fft.m文獻s='';%創(chuàng)建空字符數組while~feof(fid)%while循環(huán)判斷條件:是否文獻末尾
line=fgetl(fid);%從文獻中讀行
ifisempty(line)%假如是空行
break%退出循環(huán)
end
第29頁s=strvcat(s,line);%假如不是空行,將該行寫入字符數組enddisp(s)%顯示字符數組成果3、return語句return語句用于終止目前命令序列,并返回到調用函數或鍵盤,也用于終止keyboard方式。第30頁8.4程序調試與優(yōu)化借助于程序調試器(Debugger)。8.4.1程序直接調試法8.4.2調試器使用8.4.3程序設計優(yōu)化1、以矩陣運算替代循環(huán)運算2、數據預定義3、內存管理第31頁表8-4MATLAB語言內存管理函數函數名說明clear從內存中清除所有變量及函數pack重新分派內存quit退出MATLAB環(huán)境,釋放所有內存save把指定變量存放至磁盤load從磁盤中調出指定變量第32頁8.4.4M文獻調用統(tǒng)計1、profile函數實現M文獻調用統(tǒng)計函數為profile,其調用格式為:profileon開始統(tǒng)計M文獻調用,并清除一起統(tǒng)計。profileon–detaillevel按函數指定level開始統(tǒng)計M文獻調用,餅清除一起統(tǒng)計。profileon–history統(tǒng)計確定序列函數調用。profileoff中斷M文獻調用統(tǒng)計。第33頁profileresume重新開始M文獻調用統(tǒng)計,并保存本來統(tǒng)計。profileclear清除M文獻調用統(tǒng)計。profilereport中斷M文獻調用統(tǒng)計,并將統(tǒng)計以html格式輸出。profilereportbasename中斷M文獻調用統(tǒng)計,并將統(tǒng)計保存至目前目錄下basename文獻中。profileplot中斷M文獻調用統(tǒng)計,并將成果以條狀圖繪圖。s=profile(‘status’)形式目前調用狀態(tài)。stats=profile(‘info’)中斷并返回統(tǒng)計成果。第34頁2、調用統(tǒng)計成果顯示下面以求解微分方程為例,介紹調用統(tǒng)計使用辦法:【例8-16】調用統(tǒng)計應用實例。profileon-detailbuiltin-history[t,y]=ode23(@vdp1,[020],[20]);profilereportode_reportprofileplot第35頁8.5函數句柄函數句柄是MATLAB6所特有一種語言,用于在使用函數過程中保存函數有關信息,尤其是有關函數執(zhí)行信息。它主要有下列長處:實現函數間互相調用;取得函數加載所有方式;拓寬子函數以及局部函數使用范圍;提供函數調用過程中可靠性;減少程序設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校購買心理課程合同范例
- 推廣員合同范例
- 店鋪進貨合同范例
- 業(yè)主勞務公司合同范例
- 工程沙石供應合同范例
- 正規(guī)購買設備合同范例
- 包子店雇人合同范例
- 建筑電工勞務合同范例
- 品牌銷售合同范例
- 合伙經營鏟車合同范例
- 游戲王統(tǒng)一規(guī)則
- 小學語文人教一年級上冊(統(tǒng)編)-富全學校語文教案丁代英
- 水庫建設項目施工組織設計
- 系統(tǒng)集成類項目施工組織計劃方案
- 國家開放大學實驗學院生活中的法律第三單元測驗答案
- 詩朗誦社團活動記錄
- 第3章 細胞命運的決定(章節(jié)課程)
- 《積極心理學》課程教學大綱.docx
- 2014年吉林省長春市中考模擬數學
- 《金融工程原理-無套利均衡分析》筆記01
- 論文巖棉用酚醛樹脂體系
評論
0/150
提交評論