第3章 MATLAB程序設(shè)計(jì) 南京信息工程大學(xué)MATLAB_第1頁(yè)
第3章 MATLAB程序設(shè)計(jì) 南京信息工程大學(xué)MATLAB_第2頁(yè)
第3章 MATLAB程序設(shè)計(jì) 南京信息工程大學(xué)MATLAB_第3頁(yè)
第3章 MATLAB程序設(shè)計(jì) 南京信息工程大學(xué)MATLAB_第4頁(yè)
第3章 MATLAB程序設(shè)計(jì) 南京信息工程大學(xué)MATLAB_第5頁(yè)
已閱讀5頁(yè),還剩34頁(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第3章MATLAB程序設(shè)計(jì)2本章學(xué)習(xí)內(nèi)容M文件的基本知識(shí)程序控制結(jié)構(gòu)函數(shù)式M文件程序調(diào)試3本章學(xué)習(xí)目標(biāo)掌握M文件的基本知識(shí)掌握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文件的基本知識(shí)nextpartgogo5M文件的分類return(1)命令式M文件(ScriptFile)(2)函數(shù)式M文件(FunctionFile)examplereturn例3-1將華氏溫度f(wàn)轉(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文件——若無(wú)輸入?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)用實(shí)例分析return順序結(jié)構(gòu)編程實(shí)例:求一元二次方程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))]);[通過(guò)幫助自學(xué)]input(),disp()的用法10return選擇結(jié)構(gòu)(1)if語(yǔ)句(2)switch語(yǔ)句(3)try語(yǔ)句gogogo(1)if語(yǔ)句if

條件語(yǔ)句組endif

條件語(yǔ)句組1else

語(yǔ)句組2endif

條件1

語(yǔ)句組1elseif

表達(dá)式2

語(yǔ)句組2elseif

表達(dá)式3

語(yǔ)句組3elseif……else

語(yǔ)句組nendexamplereturnreturn%該函數(shù)用于判斷某一年是否為閏年%使用格式為isleapyear(y),其中y是用戶所要計(jì)算的年份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語(yǔ)句編程實(shí)例:isleapyear.mreturn(2)switch語(yǔ)句switch

表達(dá)式

case

值1

語(yǔ)句組1

case值2

語(yǔ)句組2

case

值3

語(yǔ)句組3……

otherwise

語(yǔ)句組nendexamplereturnswitch語(yǔ)句編程實(shí)例: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

語(yǔ)句組1

case值2

語(yǔ)句組2

case

值3

語(yǔ)句組3……

otherwise

語(yǔ)句組nendreturn(3)try語(yǔ)句try

語(yǔ)句組1catch

語(yǔ)句組2endexample語(yǔ)義:先試探性執(zhí)行語(yǔ)句組1,若執(zhí)行過(guò)程中有錯(cuò)誤,則將錯(cuò)誤信息→lasterr,轉(zhuǎn)而執(zhí)行語(yǔ)句組2。returnA=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr

try語(yǔ)句編程實(shí)例:ex3_7.m17return循環(huán)結(jié)構(gòu)(1)for語(yǔ)句(2)while語(yǔ)句(3)break語(yǔ)句和continue語(yǔ)句(4)循環(huán)的嵌套gogogo(1)for語(yǔ)句returnfor循環(huán)變量=初值:步長(zhǎng):終值循環(huán)體語(yǔ)句endfor

循環(huán)變量=矩陣表達(dá)式循環(huán)體語(yǔ)句endexampleexamplereturn例3-9當(dāng)n=100時(shí),求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)說(shuō)明:

在實(shí)際的matlab編程中,采用循環(huán)語(yǔ)句或降低其執(zhí)行速度,所以,通常會(huì)借助矩陣來(lái)替代循環(huán)。for循環(huán)變量=初值:步長(zhǎng):終值循環(huán)體語(yǔ)句endreturns=0;a=[123136311];fork=as=s+k;endass=0;a=[123136311];s=sum(a,2)as執(zhí)行過(guò)程:依次取出矩陣的第i列元素給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句。(2)while語(yǔ)句returnwhile

條件 循環(huán)體語(yǔ)句end

examplenotselected=[5,8,25,33,34,39,42,43,44,45,46,48,51,56,57,60];%未選修的學(xué)生學(xué)號(hào)fori=1:5no(i)=unidrnd(65);

whileany(no(i)==notselected) no(i)=unidrnd(65);

endend從學(xué)號(hào)1~65中任意抽取5個(gè),不能是未選修的學(xué)號(hào)returnreturn(3)break語(yǔ)句和continue語(yǔ)句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é)號(hào)

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)用實(shí)例:從已選修名單中抽取5位學(xué)生學(xué)號(hào),且不能重復(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文件的語(yǔ)法結(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文件的語(yǔ)法結(jié)構(gòu)returnfunction

輸出形參表=函數(shù)名(輸入形參表)注釋說(shuō)明部分函數(shù)體部分說(shuō)明:①輸入?yún)?shù):若有多個(gè),用逗號(hào)間隔②輸出參數(shù):可以沒(méi)有;若有多個(gè),參數(shù)之間用逗號(hào)間隔且輸出形參表用[]括起來(lái)。③函數(shù)體中可以有return語(yǔ)句,也可以沒(méi)有functionc=f2c(f)c=5*(f-32)/930函數(shù)式M文件的調(diào)用return[輸出實(shí)參表]=函數(shù)名(輸入實(shí)參表)說(shuō)明:可嵌套調(diào)用,也可遞歸調(diào)用!examplereturnfcircle.mfunction[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圓半徑%s圓面積%p圓周長(zhǎng)

%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)用時(shí)實(shí)際的輸入?yún)?shù)和輸出參數(shù)個(gè)數(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.程序錯(cuò)誤:①語(yǔ)法錯(cuò)誤②邏輯錯(cuò)誤2.程序調(diào)試方法:①通過(guò)注釋,一段一段執(zhí)行程序;在命令窗口輸出中間結(jié)果;②通過(guò)調(diào)試菜單debug調(diào)試(自行練習(xí))355.補(bǔ)充:常用的程序控制命令nextpart命令功能命令功能return返回key

溫馨提示

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