第3章 MATLAB程序設(shè)計 南京信息工程大學(xué)MATLAB_第1頁
第3章 MATLAB程序設(shè)計 南京信息工程大學(xué)MATLAB_第2頁
第3章 MATLAB程序設(shè)計 南京信息工程大學(xué)MATLAB_第3頁
第3章 MATLAB程序設(shè)計 南京信息工程大學(xué)MATLAB_第4頁
第3章 MATLAB程序設(shè)計 南京信息工程大學(xué)MATLAB_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論