版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1第3章MATLAB程序設(shè)計2本章學(xué)習(xí)內(nèi)容M文件的基本知識程序控制結(jié)構(gòu)函數(shù)式M文件程序調(diào)試3本章學(xué)習(xí)目標(biāo)掌握M文件的基本知識掌握Matlab常用的程序控制結(jié)構(gòu)掌握函數(shù)式M文件的編寫和調(diào)用方法掌握M文件編輯器的使用方法了解Matlab中函數(shù)參數(shù)的可調(diào)性了解Matlab程序調(diào)試方法4什么是M文件M文件的分類M文件的編輯與運(yùn)行1.M文件的基本知識nextpartgogo5M文件的分類return(1)命令式M文件(ScriptFile)(2)函數(shù)式M文件(FunctionFile)examplereturn例3-1將華氏溫度f轉(zhuǎn)換為攝氏溫度c。(教材P57)clear;%清除工作空間中的變量clc;f=input('InputFahrenheittemperature:');c=5*(f-32)/9命令式M文件ex3_1.mfunctionc=f2c(f)c=5*(f-32)/9函數(shù)式M文件f2c.m7M文件的編輯與運(yùn)行return(1)M文件的編輯:Matlab文本編輯器(默認(rèn))(2)M文件的運(yùn)行:命令式M文件——直接在文本編輯器中運(yùn)行或以調(diào)用方式運(yùn)行函數(shù)式M文件——若無輸入?yún)?shù),可直接運(yùn)行或以調(diào)用方式運(yùn)行
若有輸入?yún)?shù),需要以調(diào)用方式運(yùn)行8順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)2.程序控制結(jié)構(gòu)nextpartgogogo應(yīng)用實例分析return順序結(jié)構(gòu)編程實例:求一元二次方程ax2+bx+c=0的根。
(教材P60例3-3)a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);[通過幫助自學(xué)]input(),disp()的用法10return選擇結(jié)構(gòu)(1)if語句(2)switch語句(3)try語句gogogo(1)if語句if
條件語句組endif
條件語句組1else
語句組2endif
條件1
語句組1elseif
表達(dá)式2
語句組2elseif
表達(dá)式3
語句組3elseif……else
語句組nendexamplereturnreturn%該函數(shù)用于判斷某一年是否為閏年%使用格式為isleapyear(y),其中y是用戶所要計算的年份functionisleapyear(year)sign=0;if
rem(year,4)==0&rem(year,100)~=0|rem(year,400)==0sign=1;end
ifsign==1
fprintf('%4dyearisaleapyear.\n',year)else
fprintf('%4dyearisnotaleapyear.\n',year)endif語句編程實例:isleapyear.mreturn(2)switch語句switch
表達(dá)式
case
值1
語句組1
case值2
語句組2
case
值3
語句組3……
otherwise
語句組nendexamplereturnswitch語句編程實例:ex_switch.mscore=input('pleaseinputyourscore:\n');switch
fix(score/10)
case
{9,10}disp('excellent.');case
8disp('good.');
case
7disp('okay.');
case
6disp('pass.');case
num2cell(5:-1:0)disp('fail.');
otherwisedisp('inputerror.');end注意寫法!switch
表達(dá)式
case
值1
語句組1
case值2
語句組2
case
值3
語句組3……
otherwise
語句組nendreturn(3)try語句try
語句組1catch
語句組2endexample語義:先試探性執(zhí)行語句組1,若執(zhí)行過程中有錯誤,則將錯誤信息→lasterr,轉(zhuǎn)而執(zhí)行語句組2。returnA=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr
try語句編程實例:ex3_7.m17return循環(huán)結(jié)構(gòu)(1)for語句(2)while語句(3)break語句和continue語句(4)循環(huán)的嵌套gogogo(1)for語句returnfor循環(huán)變量=初值:步長:終值循環(huán)體語句endfor
循環(huán)變量=矩陣表達(dá)式循環(huán)體語句endexampleexamplereturn例3-9當(dāng)n=100時,求y的值(教材P66)y=0;n=100;fori=1:ny=y+1/(2*i-1);endyn=100;i=1:2:2*n-1;y=sum(1./i)說明:
在實際的matlab編程中,采用循環(huán)語句或降低其執(zhí)行速度,所以,通常會借助矩陣來替代循環(huán)。for循環(huán)變量=初值:步長:終值循環(huán)體語句endreturns=0;a=[123136311];fork=as=s+k;endass=0;a=[123136311];s=sum(a,2)as執(zhí)行過程:依次取出矩陣的第i列元素給循環(huán)變量,然后執(zhí)行循環(huán)體語句。(2)while語句returnwhile
條件 循環(huán)體語句end
examplenotselected=[5,8,25,33,34,39,42,43,44,45,46,48,51,56,57,60];%未選修的學(xué)生學(xué)號fori=1:5no(i)=unidrnd(65);
whileany(no(i)==notselected) no(i)=unidrnd(65);
endend從學(xué)號1~65中任意抽取5個,不能是未選修的學(xué)號returnreturn(3)break語句和continue語句x=1:10;y=1:10;figure(1);axis([110110]);holdonfori=1:10
if(rem(i,3)==0)plot(x(i),y(i),'r*','linewidth',2)
continue
endplot(x(i),y(i),'bo','linewidth',2)pause(1)endholdoffnotselected=[5,8,25,33,34,39,42,43,44,4546,51,56,57,60];%未選修的學(xué)生學(xué)號
fori=1:5no(i)=unidrnd(65);
if(i>1)rolled=no(1:i-1);end
whileany(no(i)==notselected)|(i>1&any(no(i)==rolled))no(i)=unidrnd(65);endendno應(yīng)用實例:從已選修名單中抽取5位學(xué)生學(xué)號,且不能重復(fù)抽取return253.函數(shù)式M文件函數(shù)式M文件的基本結(jié)構(gòu)函數(shù)式M文件的調(diào)用函數(shù)參數(shù)的可調(diào)性全局變量與局部變量nextpartgogogo(自學(xué))26(1)函數(shù)式M文件示例(2)函數(shù)式M文件的語法結(jié)構(gòu)函數(shù)式M文件的基本結(jié)構(gòu)returngogo(1)函數(shù)式M文件示例nextfunctionc=f2c(f)c=5*(f-32)/9f2c.m引導(dǎo)行/定義行函數(shù)體returnfunctions=sum(A,dim)%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.
%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend注釋函數(shù)體引導(dǎo)行functions=sum(A,dim)ifnargin==1&any(size(A)==1)s=sym(0);fork=1:prod(size(A))s=s+A(k);endelseifnargin==1|dim==1s=sym(zeros(1,size(A,2)));fori=1:size(A,1)s=s+A(i,:);endelses=sym(zeros(size(A,1),1));forj=1:size(A,2);s=s+A(:,j);endend引導(dǎo)行/定義行函數(shù)體%SUMSumoftheelements.%Forvectors,SUM(X)isthesumoftheelementsofX.%Formatrices,SUM(X)orSUM(X,1)isarowvectorofcolumnsums%andSUM(X,2)isacolumnvectorofrowsums.%%SeealsoPROD.
%Copyright1993-2002TheMathWorks,Inc.%$Revision:1.9$$Date:2002/04/1503:07:07$①②③sum.m(2)函數(shù)式M文件的語法結(jié)構(gòu)returnfunction
輸出形參表=函數(shù)名(輸入形參表)注釋說明部分函數(shù)體部分說明:①輸入?yún)?shù):若有多個,用逗號間隔②輸出參數(shù):可以沒有;若有多個,參數(shù)之間用逗號間隔且輸出形參表用[]括起來。③函數(shù)體中可以有return語句,也可以沒有functionc=f2c(f)c=5*(f-32)/930函數(shù)式M文件的調(diào)用return[輸出實參表]=函數(shù)名(輸入實參表)說明:可嵌套調(diào)用,也可遞歸調(diào)用!examplereturnfcircle.mfunction[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長
%2009年10月15日編s=pi*r*r;p=2*pi*r;>>[area,perimeter]=fcircle(10)area=314.1593perimeter=62.831932函數(shù)參數(shù)的可調(diào)性returnMATLAB中,傳遞給函數(shù)的輸入?yún)?shù)和輸出參數(shù)可變。系統(tǒng)用預(yù)定義變量nargin和nargout分別記錄調(diào)用時實際的輸入?yún)?shù)和輸出參數(shù)個數(shù)。examplereturnfunctionM=myrand10(m,n)ifnargin==0M=unidrnd(10);elseifnargin==1M=unidrnd(10,m,m);elseM=unidrnd(10,m,n);end①編寫函數(shù)式文件myrand10.m②在命令窗口或其它M文件中調(diào)用>>A=myrand10;>>B=myrand10(2);>>C=myrand10(2,3);344.程序調(diào)試nextpart1.程序錯誤:①語法錯誤②邏輯錯誤2.程序調(diào)試方法:①通過注釋,一段一段執(zhí)行程序;在命令窗口輸出中間結(jié)果;②通過調(diào)試菜單debug調(diào)試(自行練習(xí))355.補(bǔ)充:常用的程序控制命令nextpart命令功能命令功能return返回key
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年合伙經(jīng)營合同標(biāo)準(zhǔn)樣本(二篇)
- 2024年小學(xué)教師繼續(xù)教育工作計劃范本(三篇)
- 2024年小學(xué)生心理健康教育計劃范文(三篇)
- 2024年安全生產(chǎn)責(zé)任追究制度范本(五篇)
- 2024年小學(xué)英語教學(xué)工作總結(jié)參考范本(三篇)
- 【《SX房地產(chǎn)公司財務(wù)風(fēng)險探究及優(yōu)化策略(數(shù)據(jù)論文)》14000字】
- 工廠防洪防汛應(yīng)急預(yù)案(12篇)
- 2024年實習(xí)期工作總結(jié)范本(六篇)
- 2024年學(xué)生暑假計劃范本(六篇)
- 2024年垃圾運(yùn)輸合同范本(四篇)
- 北京市道德與法治初一上學(xué)期期中試卷及答案指導(dǎo)(2024年)
- DL∕T 1919-2018 發(fā)電企業(yè)應(yīng)急能力建設(shè)評估規(guī)范
- 小學(xué)作文稿紙語文作文作業(yè)格子模板(可打印編輯)
- 氫氧化鈉(CAS:1310-73-2)安全技術(shù)說明書
- 手井施工檢驗批質(zhì)量驗收記錄[共2頁]
- (完整版)油罐換底工程施工方案
- 書法實習(xí)報告(共6篇)
- 中醫(yī)治療痔瘡醫(yī)案62例
- 農(nóng)村義務(wù)教育經(jīng)費(fèi)保障機(jī)制改革中省專項資金支付管理暫行辦法
- 定義新運(yùn)算知識梳理
- 用友銀企聯(lián)云服務(wù)ppt課件
評論
0/150
提交評論