第5章MATLAB程序設(shè)計(jì)教學(xué)教材_第1頁(yè)
第5章MATLAB程序設(shè)計(jì)教學(xué)教材_第2頁(yè)
第5章MATLAB程序設(shè)計(jì)教學(xué)教材_第3頁(yè)
第5章MATLAB程序設(shè)計(jì)教學(xué)教材_第4頁(yè)
第5章MATLAB程序設(shè)計(jì)教學(xué)教材_第5頁(yè)
已閱讀5頁(yè),還剩61頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第5章

MATLAB程序設(shè)計(jì)

MATLAB有兩種常用工作方式:(1)直接交互的指令行操作方式;(2)M文件中的編程工作方式。5.1M文件中的功能和特點(diǎn)

(1)MATLAB程序文件中一個(gè)ASCⅡ碼文件,擴(kuò)展名一律為“.m”,可用任何字處理軟件進(jìn)行編輯和修改。

(2)

MATLAB 是程序性的語(yǔ)言是解釋性語(yǔ)言。

(3)M文件大大擴(kuò)展了MATLAB的能力5.2M文件的建立與使用1、M文件的形式

M文件中有兩種形式

(1)命令文件

(ScriptFile)

也叫做腳本文件

(2)函數(shù)文件(FunctionFile)2、腳本M文件

(1)

建立

用記事本(Notebook)編寫(xiě)程序;

在MATLAB系統(tǒng)下選擇:“file”→“new”→“m-file”

(2)內(nèi)容:按照程序的功能,依據(jù)MATLAB的程序結(jié)構(gòu),組織的合法的MATLAB命令。(4)注意

(1)命令文件中的語(yǔ)句可以訪(fǎng)問(wèn)MATLAB工作區(qū)(workspace)中的所有變量。運(yùn)行過(guò)程中所有產(chǎn)生的變量均是全局變量。(2)“%”開(kāi)始的行為注釋行,不予執(zhí)行。(3)若將文件未存放在系統(tǒng)的搜索目錄下時(shí),運(yùn)用該文件之前,應(yīng)先進(jìn)入該目錄。(如cdd:\mywok)(3)運(yùn)行

在命令窗口直接鍵入文件名.m3、函數(shù)文件(1)建立 用記事本(Notebook)編寫(xiě)程序 在MATLAB系統(tǒng)下選擇:“file”→“new”→“m-file”(2)函數(shù)文件的格式Function輸出參數(shù)=函數(shù)名(輸入?yún)?shù)表)函數(shù)體(3)函數(shù)體的內(nèi)容

函數(shù)定義行

Hi行:幫助信息的第一行,用于提示函數(shù)的功能,當(dāng)用命令Lookfor查詢(xún)?cè)摵瘮?shù)的幫助信息時(shí)將顯示該行內(nèi)容。

幫助體

函數(shù)體函數(shù)名命名規(guī)則同變量名。以字母、下劃線(xiàn)和數(shù)字組成,不識(shí)別函數(shù)名共31個(gè)字符。輸入?yún)?shù):用中括號(hào)“[]”括起來(lái),參數(shù)兩兩之間用逗號(hào)隔開(kāi)。輸出參數(shù):函數(shù)m文件的運(yùn)算結(jié)果傳到調(diào)用處,當(dāng)參數(shù)不只一個(gè)時(shí),用逗號(hào)隔開(kāi)。函數(shù)文件名由函數(shù)名再加后綴“m”組成。函數(shù)文件中定義變量為局部變量,函數(shù)文件命令運(yùn)行結(jié)束,該類(lèi)變量會(huì)自動(dòng)釋放。如果變量在程序運(yùn)行前就已存在的話(huà),程序運(yùn)行后它不會(huì)受到影響(4)注意

(5)應(yīng)用舉例函數(shù)表示函數(shù)m文件的內(nèi)容為:function

y=foft(x)y=1./(1+exp(-x))文件名為:foftfplot('foft',[020],1e-04)數(shù)學(xué)函數(shù)曲線(xiàn)的繪圖fplot(fun,lims)其中:fun表示函數(shù)名,定義函數(shù)的M文件名lims=[XMINXMAXYMINYMAX]函數(shù)的極小值點(diǎn)和零值點(diǎn)l

單變量函數(shù)的局部極小值點(diǎn)

fmin(‘F’,x1,x2,options)F函數(shù)名,x1,x2指定極小值區(qū)間,options第一個(gè)分量為正時(shí),則顯示函數(shù)的運(yùn)行步驟。Options(1)屏幕上是否顯示最小值的迭代過(guò)程,非0時(shí),顯示,為0時(shí)不顯示,默認(rèn)為0Options(2)迭代時(shí)自變量的誤差控程限,默認(rèn)為1.0e-04Options(3)為迭代時(shí)函數(shù)值的誤差控程限,函數(shù)fmins使用該參數(shù)Options(4)為迭代時(shí)最大的迭代次數(shù),函數(shù)fmin默認(rèn)值為500,fmins為200步。舉例:定義函數(shù)文件humps.mfunctiony=humps(x)y=1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6figure(1)subplot(2,2,1),fplot(‘humps’,[-5,5]),gridonsubplot(2,2,2),fplot(‘humps’,[-5,5-1025]),gridonsubplot(2,2,3),fplot(‘5*sin(x)’,[-1,1]),gridonsubplot(2,2,3),fplot(‘[5*sin(x),humps]’,[-1,1])gridonx=fmin(‘humps’,0.3,1)極小值點(diǎn)x函數(shù)的極小值為:humps(x)

l

函數(shù)的零點(diǎn)fzero(‘F’,猜測(cè)值)得到零點(diǎn)的區(qū)間l

多變量函數(shù)的局部極小值點(diǎn)fmins(‘函數(shù)名’,初始極值向量,options)得到向量附近的一個(gè)極小值舉例:定義函數(shù)

function

b=two_var(v)x=v(1);y=v(2)b=x.^2+y.^2-x.^2*y.^2給定初始值:v=[-0.7–1.2]調(diào)用函數(shù):a=fmins(‘two_var’,v)options與單變量時(shí)相同

數(shù)值積分

quad(‘F’,A,B,TOL,TRACE)

其中:‘F’為函數(shù)名,A和B指定積分區(qū)間,TOL迭代誤差,TRACE,采用的遞歸的辛浦生方法。quad8(‘F’,A,B,TOL,TRACE)

其中:‘F’為函數(shù)名,A和B指定積分區(qū)間,TOL迭代誤差,TRACE,采用的newton-cotes方法。dblquad(‘F’,inmin,inmax,outnmin,outinmax)其中:

inmin與inmax,分別為內(nèi)層積分的上下限,outnmin與outinmax,分別為外層積分的上下限舉例:定義函數(shù)

functiony=ex542f(x)y=-x.*x+115

調(diào)用函數(shù):

s=quad(‘ex542f’,0,10)

例建立一個(gè)命令文件將變量a,b的值互換,然后運(yùn)行該命令文件。首先建立命令文件并以文件名exch.m存盤(pán):clear;a=1:10;b=[11,12,13,14;15,16,17,18];c=a;a=b;b=c;ab然后在MATLAB的命令窗口中輸入exch,將會(huì)執(zhí)行該命令文件。例建立一個(gè)函數(shù)文件將變量a,b的值互換,然后在命令窗口調(diào)用該函數(shù)文件。首先建立函數(shù)文件fexch.m:function[a,b]=exch(a,b)c=a;a=b;b=c;然后在MATLAB的命令窗口調(diào)用該函數(shù)文件:clear;x=1:10;y=[11,12,13,14;15,16,17,18];[x,y]=fexch(x,y)5.2

數(shù)據(jù)的輸入輸出1、input函數(shù)格式:A=input(提示信息,選項(xiàng));其中:提示信息為一個(gè)字符串,用于提示用戶(hù)輸入什么樣的數(shù)據(jù)。如果在input函數(shù)調(diào)用時(shí)采用's'選項(xiàng),則允許用戶(hù)輸入一個(gè)字符串。例如,想輸入一個(gè)人的姓名,可采用命令:xm=input('What''syourname?','s')

2、disp函數(shù)格式:disp(輸出項(xiàng))其中輸出項(xiàng)既可以為字符串,也可以為矩陣。注意:用disp函數(shù)顯示矩陣時(shí)將不顯示矩陣的名字,而且其格式更緊密,且不留任何沒(méi)有意義的空行。

例1求一元二次方程ax2+bx+c=0的根。程序如下: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))]);5.3M文件的程序結(jié)構(gòu)1、順序結(jié)構(gòu)2、分支結(jié)構(gòu)(1)if(條件)(命令組)end(2)if(條件)(命令組1)else(命令2)end當(dāng)條件成立時(shí),則執(zhí)行語(yǔ)句組,執(zhí)行完之后繼續(xù)執(zhí)行if語(yǔ)句的后繼語(yǔ)句,若條件不成立,則直接執(zhí)行if語(yǔ)句的后繼語(yǔ)句

2、分支結(jié)構(gòu)(3)if

elseif結(jié)構(gòu)

if(條件1)命令組1elseif(條件2)命令組2else命令序列end例2

刪除數(shù)據(jù)中的無(wú)關(guān)數(shù)據(jù):一般認(rèn)為,誤差大于3倍標(biāo)準(zhǔn)差的數(shù)據(jù)項(xiàng),就認(rèn)為是無(wú)關(guān)項(xiàng),因此可以從數(shù)據(jù)中刪除,為此可刪除所找列的無(wú)關(guān)項(xiàng)ifexist('c:\matlabbk\sj.txt')loadc:\matlabbk\sj.txt[i,j]=size(sj)mu=mean(sj)sigma=std(sj)outliers=abs(sj-ones(i,1)*mu)>3*ones(i,1)*sigmasj(outliers)=[]elsesj=rand(40,3)end例3:輸入一個(gè)字符,若為大寫(xiě)字母,則輸出其后繼字符,若為小寫(xiě)字母,則輸出其前導(dǎo)字符,若為數(shù)字字符則輸出其對(duì)應(yīng)的數(shù)值,若為其他字符則原樣輸出。

程序如下:

c=input('請(qǐng)輸入一個(gè)字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+1));elseifc>='a'&c<='z'disp(setstr(abs(c)-1));elseifc>='0'&c<='9'disp(abs(c)-abs('0'));elsedisp(c);end例4:畫(huà)出下列分段函數(shù)所表示的曲面。[X,Y]=meshgrid(-3:0.1:3);T=X+Y;

ifT>1Z=0.54*exp(-0.75*X.^2-3.75*Y.^2-1.5*Y);

elseifT>-1andT<=1Z=0.7575*exp(-X.^2-6*Y.^2);

else

Z=0.5457*exp(-0.75*X.^2-3.75*Y.^2+1.5*Y);

endsurf(X,Y,Z)%plot3(X,Y,Z)%mesh(X,Y,Z)4、switch語(yǔ)句格式為:switch表達(dá)式case表達(dá)式1語(yǔ)句組1case表達(dá)式2語(yǔ)句組2……case表達(dá)式m語(yǔ)句組motherwise語(yǔ)句組m+1end例5:某商場(chǎng)對(duì)顧客所購(gòu)買(mǎi)的商品實(shí)行打折銷(xiāo)售,標(biāo)準(zhǔn)如下(商品價(jià)格用price來(lái)表示):price<200沒(méi)有折扣200≤price<5003%折扣500≤price<10005%折扣1000≤price<25008%折扣2500≤price<500010%折扣5000≤price14%折扣輸入所售商品的價(jià)格,求其實(shí)際銷(xiāo)售價(jià)格。price=input('請(qǐng)輸入商品價(jià)格');switchfix(price/100)case{0,1}%價(jià)格小于200rate=0;case{2,3,4}%價(jià)格大于等于200但小于500rate=3/100;casenum2cell(5:9)%價(jià)格大于等于500但小于1000rate=5/100;casenum2cell(10:24)%價(jià)格大于等于1000但小于2500rate=8/100;casenum2cell(25:49)%價(jià)格大于等于2500但小于5000rate=10/100;otherwise%價(jià)格大于等于5000rate=14/100;endprice=price*(1-rate)%輸出商品實(shí)際銷(xiāo)售價(jià)格try語(yǔ)句(試探性執(zhí)行語(yǔ)句)語(yǔ)句格式為: try語(yǔ)句組1catch語(yǔ)句組2endtry語(yǔ)句先試探性執(zhí)行語(yǔ)句組1,如果語(yǔ)句組1在執(zhí)行過(guò)程中出現(xiàn)錯(cuò)誤,則將錯(cuò)誤信息賦給保留的lasterr變量,并轉(zhuǎn)去執(zhí)行語(yǔ)句組2。這種試探性執(zhí)行語(yǔ)句是其他高級(jí)語(yǔ)言所沒(méi)有的。例6:矩陣乘法運(yùn)算要求兩矩陣的維數(shù)相容,否則會(huì)出錯(cuò)。先求兩矩陣的乘積,若出錯(cuò),則自動(dòng)轉(zhuǎn)去求兩矩陣的點(diǎn)乘。程序如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr%顯示出錯(cuò)原因3、循環(huán)結(jié)構(gòu)(1)fort=e1:e2:e3

end

首先計(jì)算三個(gè)表達(dá)式的值,再將表達(dá)式1的值賦給循環(huán)變量,如果此時(shí)循環(huán)變量的值介于表達(dá)式1和表達(dá)式3的值之間,則執(zhí)行循環(huán)體語(yǔ)句,否則結(jié)束循環(huán)的執(zhí)行。執(zhí)行完一次循環(huán)之后,循環(huán)變量自增一個(gè)表達(dá)式2的值,然后再判斷循環(huán)變量的值是否介于表達(dá)式1和表達(dá)式3之間,如果滿(mǎn)足仍然執(zhí)行循環(huán)體,直至不滿(mǎn)足為止。這時(shí)將結(jié)束for語(yǔ)句的執(zhí)行,而繼續(xù)執(zhí)行for語(yǔ)句后面的語(yǔ)句。例1:已知求y的表達(dá)式,y=1/1+1/2^2+1/3^2+……+1/n^2當(dāng)n=100時(shí),求y的值。程序如下:y=0;n=100;fori=1:ny=y+1/i/i;endy在實(shí)際MATLAB編程中,為提高程序的執(zhí)行速度,常用向量運(yùn)算來(lái)代替循環(huán)操作:n=100;i=1:n;f=1./i.^2;y=sum(f)例如2:求定積分。程序如下:a=0;b=3*pi;n=1000;h=(b-a)/n;x=a:h:b;f=exp(-0.5*x).*sin(x+pi/6);fori=1:ns(i)=(f(i)+f(i+1))*h/2;ends=sum(s)事實(shí)上,MATLAB提供了有關(guān)數(shù)值積分的標(biāo)準(zhǔn)函數(shù),實(shí)際應(yīng)用中可直接調(diào)用這些函數(shù)求數(shù)值積分。

例3:fori=1:2x=input('x:')ifx>0y=x.^2+1subplot(1,2,1)plot(x,y)holdonelsey=x.^2-1subplot(1,2,2)plot(x,y)holdonendpauseend例4:用循環(huán)語(yǔ)句編寫(xiě)M文件計(jì)算ex的值,其中x,n為輸入變量,ex的近似表達(dá)式為functiony=e(x,n)y=1;s=1;fori=1:ns=s*i;y=y+x^i/s;endyy=e(1,100)y=2.7183

for語(yǔ)句更一般的格式:for循環(huán)變量=矩陣表達(dá)式循環(huán)體語(yǔ)句end執(zhí)行過(guò)程是依次將矩陣的各列元素賦給循環(huán)變量,然后執(zhí)行循環(huán)體語(yǔ)句,直至各列元素處理完畢。實(shí)際上,“表達(dá)式1:表達(dá)式2:表達(dá)式3”是一個(gè)僅為一行的矩陣(行向量),因而列向量是單個(gè)數(shù)據(jù)。例5:已知5個(gè)學(xué)生4門(mén)功課的成績(jī),求每名學(xué)生的總成績(jī)。程序如下:s=0;a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87];fork=as=s+k;enddisp(s');(2)While表達(dá)式<語(yǔ)句體>end其執(zhí)行過(guò)程為:若條件成立,則執(zhí)行循環(huán)體語(yǔ)句,執(zhí)行后再判斷條件是否成立,如果不成立則跳出循環(huán)例6:根據(jù)矩陣指數(shù)的冪級(jí)數(shù)展開(kāi)式求矩陣指數(shù)。程序如下:X=input('X=');E=zeros(size(X));F=eye(size(X));n=1;whilenorm(F,1)>0E=E+F;F=F*X/n;n=n+1;endEexpm(X)%調(diào)用MATLAB矩陣指數(shù)函數(shù)求矩陣指數(shù)

循環(huán)的嵌套如果一個(gè)循環(huán)結(jié)構(gòu)的循環(huán)體又包括一個(gè)循環(huán)結(jié)構(gòu),就稱(chēng)為循環(huán)的嵌套,或稱(chēng)為多重循環(huán)結(jié)構(gòu)。可以按照嵌套層數(shù),分別叫做二重循環(huán)、三重循環(huán)等。處于內(nèi)部的循環(huán)叫作內(nèi)循環(huán),處于外部的循環(huán)叫作外循環(huán)。在設(shè)計(jì)多重循環(huán)時(shí),要特別注意內(nèi)、外循環(huán)之間的關(guān)系,以及各語(yǔ)句放置的位置,不要搞錯(cuò)。

例7

用篩選法求某自然數(shù)范圍內(nèi)的全部素?cái)?shù)。程序如下:m=input('m=');p=2:m;fori=2:sqrt(m)n=find(rem(p,i)==0&p~=i);p(n)=[];endp綜合實(shí)例用MATLAB求解問(wèn)題時(shí),一般要經(jīng)歷建模和編程兩個(gè)過(guò)程,只有在建模正確的前提下,方能得出正確的結(jié)果。

單自由度系統(tǒng)有阻尼自由振動(dòng)1.建立計(jì)算模型

由動(dòng)力學(xué)可知,單自由度有阻尼自由振動(dòng)的振動(dòng)方程為:無(wú)量剛化后有:其中

,上述方程的解為:其中

x0

表示初始位置,

v0

表示初始速度。

參數(shù)ωn=10,x0=1,v0=0,計(jì)算的終止時(shí)間t=2。試求ξ從0.1到1運(yùn)動(dòng)方程的解,并畫(huà)出波形。2.MATLAB編程

編寫(xiě)M文件ex1.m%首先清空MATLAB的工作空間clear;%給定初值

wn=10;tf=2;x0=1;v0=0;%計(jì)算不同的ξ值所對(duì)應(yīng)的振型

for

j=1:10;eta(j)=0.1*j;wd(j)=wn*sqrt(1-eta(j)^2);%求振幅A

a=sqrt((wn*x0*eta(j)+v0)^2+(x0*wd(j))^2)/wd(j);綜合實(shí)例%求相位角phi=atan2(wd(j)*x0,v0+eta(j)*wn*x0);%設(shè)定自變量數(shù)組t

t=0:tf/1000:tf;%求過(guò)渡過(guò)程

x(j,:)=a*exp(-eta(j)*wn*t).*sin(wd(j)*t+phi);end%在同一個(gè)圖形窗口中繪制不同的ξ值所對(duì)應(yīng)的振型

plot(t,x(1,:),t,x(2,:),t,x(3,:),t,x(4,:),...t,x(5,:),t,x(6,:),t,x(7,:),t,x(8,:),...t,x(9,:),t,x(10,:))gridon%新建一個(gè)圖形窗口,繪制三維網(wǎng)格圖

figuremesh(x)綜合實(shí)例綜合實(shí)例如果改變初始條件令x0=0,v0=1,其運(yùn)動(dòng)曲線(xiàn)實(shí)際上就是系統(tǒng)的脈沖過(guò)渡函數(shù)。綜合實(shí)例2、氣體分子運(yùn)動(dòng)的麥克斯韋分布曲線(xiàn)通過(guò)本例說(shuō)明如何用復(fù)雜的數(shù)學(xué)公式繪制曲線(xiàn)。利用氣體分子運(yùn)動(dòng)的麥克斯韋速度分布律,求氯分子運(yùn)動(dòng)的速度分布曲線(xiàn),并討論溫度T及分子量mu對(duì)速度分布曲線(xiàn)的影響。(1)建立計(jì)算模型麥克斯韋速度分布律為:其中,m---分子質(zhì)量,m=mu/NA,mu---分子量,NA---阿伏加德羅數(shù)k---波爾茨曼常數(shù)T----氣體的絕對(duì)溫度v----分子速度綜合實(shí)例為研究單個(gè)參數(shù)的影響,先把麥克斯韋分布律編為一個(gè)函數(shù)子程序,以便重復(fù)調(diào)用,同時(shí)將常數(shù)項(xiàng)也放在子程序中。需要強(qiáng)調(diào)的是:子程序不得與主程序放在同一個(gè)M文件中,只能將子程序單獨(dú)做成M文件,并放在與主程序同一個(gè)工作路徑中。2.MATLAB編程

首先建立計(jì)算麥克斯韋分布律的子程序

mxw.mfunctionf=mxw(T,mu,v)%Thesubfunction

mxw.mofex2利用麥克斯韋速度分布律求分子的速度分布曲線(xiàn)的子程序%mu、v、T分別是分子量、分子速度和氣體的絕對(duì)溫度

k=1.381*10^(-23);%波爾茨曼常數(shù)

NA=6.022*10^23;%阿伏加德羅數(shù)m=mu/NA%分子質(zhì)量

f=4*pi*((m/2*pi*k*T)).^(3/2).*v.*v.*exp(-m*v.^2./(2*k*T));綜合實(shí)例編寫(xiě)主程序ex2.m

T=300;mu=28e-3;%給出T和mu的值

v=0:1500;%調(diào)出自變量數(shù)組y=mxw(T,mu,v);%調(diào)用子程序

plot(v,y,'r')%繪制分布曲線(xiàn)

holdon%為了看出不同的T和mu對(duì)曲線(xiàn)形狀的影響,再次給定T和mu,在同一幅圖中繪制分布律曲線(xiàn)的圖形

T=200;mu=28e-3;y=mxw(T,mu,v);plot(v,y,'b')holdonT=300;mu=2e-3;y=mxw(T,mu,v);plot(v,y,'g'))綜合實(shí)例3、方波的分解在連續(xù)信號(hào)系統(tǒng)中,方波可以用相應(yīng)頻率的基波及其奇次諧波合成,這也是將方波展開(kāi)為正弦級(jí)數(shù)的出發(fā)點(diǎn)。本節(jié)將演示這一現(xiàn)象。(1)建立計(jì)算模型

一個(gè)以原點(diǎn)為奇對(duì)稱(chēng)中心的方波y(t)可以用奇次正弦波的疊加來(lái)逼近:

方波的寬度為π,周期為2π。

2.MATLAB編程建立M文件ex3.m%演示基波和奇次諧波合成方波t=0:0.1:10;%首先設(shè)定一個(gè)有101個(gè)點(diǎn)的時(shí)間數(shù)組%繪制頻率w=1(f=1/2π)的正弦基波,并設(shè)置暫停

y=sin(t);plot(t,y)pause%疊加3次諧波,繪圖并設(shè)置暫停y=sin(t)+sin(3*t)/3;plot(t,y)pause%疊加1、3、5、7、9次諧波,繪圖并設(shè)置暫停y=sin(t)+sin(3*t)/3+sin(5*t)/5+sin(7*t)/7+sin(9*t)/9;plot(t,y)pause綜合實(shí)例%為了繪制三維曲面,需要將各次波形數(shù)據(jù)存儲(chǔ)為一個(gè)三維數(shù)組,因此需要重新定義y,重新編程,本例將求至19次諧波t=0:0.031:3.14;y=zeros(10,max(size(t)));x=zeros(size(t));fork=1:2:19x=x+sin(k*t)/k;y((k+1)/2,:)=x;end

pause%將各個(gè)波形疊合繪出,并設(shè)置暫停

plot(t,y(1,:),t,y(2,:),t,y(3,:),t,y(4,:),t,y(5,:),...t,y(7,:),t,y(8,:),t,y(9,:))pause%將各個(gè)波形繪制成三維網(wǎng)格圖mesh(y)pause綜合實(shí)例4、程序流控制交互包括兩個(gè)方面,輸入數(shù)據(jù)和暫停。

input命令格式:n=input(‘顯示信息字符串’)通過(guò)鍵盤(pán)輸入的數(shù)據(jù)可以是數(shù)值也可以是字符串。

pause命令:系統(tǒng)暫停狀態(tài),也進(jìn)入鍵盤(pán)主控狀態(tài)

keyboard進(jìn)入鍵盤(pán)主控狀態(tài),直接修改或輸入變量,用return可退出鍵盤(pán)控制狀態(tài),系統(tǒng)繼續(xù)執(zhí)行后續(xù)操作.

echoechoon/off顯示/不顯示命令文件中的控制echo兩種狀態(tài)下切換

5.4函數(shù)變量及變量的作用域

控制輸入變量的函數(shù)(1)nargin:控制輸入變量的個(gè)數(shù),使得在編程過(guò)程中,可以實(shí)現(xiàn)不定參數(shù)輸入的操作(2)varargin:實(shí)現(xiàn)不定數(shù)目輸入變量的函數(shù)設(shè)計(jì)。對(duì)函數(shù)的一切輸入變量均存儲(chǔ)在varargin命名的細(xì)胞數(shù)組中。例:當(dāng)輸入一個(gè)矩陣時(shí),求行列式值,當(dāng)輸入二個(gè)矩陣時(shí),求矩陣和Functionc=test69(a,b)if(nargin==1)c=det(a)elseif(nargin==2)c=a+bend5.4函數(shù)變量及變量的作用域Function[mathavg,engavg,chineseavg]=test610(varargin)l=length(varargin)mathsum=0engsum=0chinesesum=0fori=1:lmathsum=mathsum+varargin{i}(1)engsum=engsum+varargin{i}(2)chinesesum=chinesesum+varargin{i}(3)endmathavg=mathsum/lengavg=engsum/lchineseavg=chinesesum/l調(diào)用:test610([60,70,80],[45,80,90])控制輸出變量的函數(shù)Nargout:控制輸出變量的個(gè)數(shù),使得在編程過(guò)程中,可以實(shí)現(xiàn)不定參數(shù)輸入的操作。Varargout:現(xiàn)不定數(shù)目輸出變量的函數(shù)設(shè)計(jì)。5.4函數(shù)變量及變量的作用域全局變量與局部變量

函數(shù)M文件的內(nèi)部變量是局部的,其他函數(shù)文件無(wú)法使用。為解決函數(shù)之間的傳遞數(shù)據(jù)的問(wèn)題,就需要在函數(shù)文件執(zhí)行之前,定義變量為全局變量,其作用域是整個(gè)MATLAB的工作區(qū),即全程有效。命令的格式:globalxyz舉例:z=α(x-1)2+β(y+1)2定義過(guò)程:函數(shù)M文件的內(nèi)容:functio

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論