建模培訓(xùn)matlab教程之二圖像及其補充_第1頁
建模培訓(xùn)matlab教程之二圖像及其補充_第2頁
建模培訓(xùn)matlab教程之二圖像及其補充_第3頁
建模培訓(xùn)matlab教程之二圖像及其補充_第4頁
建模培訓(xùn)matlab教程之二圖像及其補充_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB 軟件及其應(yīng)用 Application of Matlab Language8/22/20221數(shù)據(jù)和函數(shù)的可視化8/22/20222引言世界頂級的數(shù)值計算工具軟件MATLAB具有極其強大的數(shù)據(jù)可視化功能,可制作具有出版質(zhì)量圖形。詳細(xì)介紹MATLAB這一部分的內(nèi)容可以寫一本書。我們只能介紹MATLAB數(shù)據(jù)可視化的基礎(chǔ),2-D數(shù)據(jù)可視化、3-D數(shù)據(jù)可視化初步。二維圖形是將平面坐標(biāo)上的數(shù)據(jù)點連接起來的平面圖形。可以采用直角坐標(biāo)系、對數(shù)坐標(biāo)、極坐標(biāo)等形式。數(shù)據(jù)點可以用向量或矩陣形式給出,類型可以是實型或復(fù)型。3.1 二維曲線繪圖的基本操作plot指令的基本調(diào)用格式 (1)plot(x)

2、x為向量時,以該元素的下標(biāo)為橫坐標(biāo)、元素值為縱坐標(biāo)繪出曲線x為實數(shù)二維數(shù)組時,則按列繪制每列元素值相對其下標(biāo)的曲線,曲線數(shù)等于x數(shù)組的列數(shù)。x為復(fù)數(shù)二維數(shù)組時,則按列分別以數(shù)組的實部和虛部為橫、縱坐標(biāo)繪制多條曲線(2)plot(x, y)x、y為同維數(shù)組時,繪制以x、y元素為橫縱坐標(biāo)的曲線x為向量,y為二維數(shù)組、且其列數(shù)或行數(shù)等于x的元素數(shù)時,繪制多條不同顏色的曲線x為二維數(shù)組,y為向量時,情況與上相同,只是y仍為縱坐標(biāo)。(3)plot(x1, y1, x2, y2, )繪制以x1為橫坐標(biāo)、y1為縱坐標(biāo)的曲線1,以x2為橫坐標(biāo)、y2為縱坐標(biāo)的曲線2,等等。其中x為橫坐標(biāo),y為縱坐標(biāo),繪制y=f

3、(x)函數(shù)曲線。 例3.1使用直角坐標(biāo)系在0,2區(qū)間內(nèi),繪制曲線x = 0:pi/100:2*pi;y = 2*exp(-0.5*x).*sin(2*pi*x);plot(x,y)例3.2 使用參數(shù)方程繪制曲線繪制曲線t = -pi:pi/100:pi;x = t.*cos(3*t);y = t.*sin(t).2;plot(x,y)例3.3 繪制復(fù)雜曲線用圖形表示連續(xù)調(diào)制波形 及其包絡(luò)線。t=(0:pi/100:pi);%長度為101的時間采樣列向量y1=sin(t)*1,-1;%包絡(luò)線函數(shù)值,是(101x2)的矩陣y2=sin(t).*sin(9*t);%長度為101的調(diào)制波列向量t3=p

4、i*(0:9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,r:,t,y2,b,t3,y3,bo)axis(0,pi,-1,1)%控制軸的范圍 Matlab作圖通過描點、連線實現(xiàn),故在畫一個曲線圖形之前,必須先取得該圖形上的一系列的點的坐標(biāo)(即橫坐標(biāo)、縱坐標(biāo)),然后將該點集的坐標(biāo)傳給Matlab函數(shù)畫圖。 命令:PLOT(X,Y,S)PLOT(X,Y)-畫實線PLOT(X1,Y1,S1,X2,Y2,S2,Xn,Yn,Sn) -將多條線畫在一起X,Y:向量,分別表示點集的橫坐標(biāo)和縱坐標(biāo)線型y 黃色 . 點 - 連線m 洋紅 o 圈 : 短虛線c 藍(lán)綠色 x x-符號 -.

5、 長短線r 紅色 + 加號 - 長虛線1.曲線圖解例 在0,2*pi用紅線畫sin(x),用綠圈畫cos(x).x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,r,x,z,g0)2.符號函數(shù)(顯函數(shù)、隱函數(shù)、參數(shù)方程)畫圖(1)ezplotezplot(x(t),y(t),tmin,tmax) :在區(qū)間tminttmax繪制參數(shù)方程x=x(t),y=y(t)的函數(shù)圖ezplot(f(x),a,b) :在axb內(nèi)繪制顯函數(shù)f=f(x)的函數(shù)圖ezplot(f(x,y),xmin,xmax,ymin,ymax) : 在區(qū)間xminxxmax、 ym

6、inyymax繪制隱函數(shù)f(x,y)=0的函數(shù)圖例 在0,pi上畫y=cos(x)的圖形解 輸入命令 ezplot(cos(x),0,pi)解 輸入命令 ezplot(cos(t)3,sin(t)3,0, 2*pi)解 輸入命令ezplot(exp(x)+sin(x*y),-2,0.5,0,2)(2)fplot注意:1fun必須是M文件的函數(shù)名或是獨立變量為x的字符串2fplot函數(shù)不能畫參數(shù)方程和隱函數(shù)圖形, 但在一個圖上可以畫多個圖形。fplot(fun,lims): 繪制字符串fun指定的函數(shù)在lims=xmin,xmax圖形解 先建M文件myfun1.m: function Y=myf

7、un1(x) Y=exp(2*x)+sin(3*x2)再輸入命令:fplot(myfun1,-1,2)解 輸入命令: fplot(tanh(x),sin(x),cos(x),2*pi*-1, 1, 1, 1)例 在-2,2范圍內(nèi)繪制函數(shù)tanh的圖形解 fplot(tanh,-2,2)例 x、y的取值范圍都在-2,2, 畫函數(shù)tanh(x),sin(x),cos(x)的圖形。,3. 對數(shù)坐標(biāo)圖說明:很多工程問題,通過對數(shù)據(jù)進(jìn)行對數(shù)轉(zhuǎn)換可更清晰地看出數(shù)據(jù)的某些特征,在對數(shù)坐標(biāo)系中描繪數(shù)據(jù)點的曲線,可直接地表現(xiàn)對數(shù)轉(zhuǎn)換。對數(shù)轉(zhuǎn)換有雙對數(shù)坐標(biāo)轉(zhuǎn)換和單軸對數(shù)坐標(biāo)轉(zhuǎn)換兩種。雙對數(shù)坐標(biāo)轉(zhuǎn)換:loglog函

8、數(shù)單軸對數(shù)坐標(biāo)轉(zhuǎn)換:semilogx、semilogy函數(shù)loglog(X, Y) :x、y坐標(biāo)都是以10為底的對數(shù)比例坐標(biāo)系semilogx(X, Y):x坐標(biāo)軸是對數(shù)坐標(biāo)系semilogy():y坐標(biāo)軸是對數(shù)坐標(biāo)系plotyy:兩個y坐標(biāo)軸,左、右邊各一個三維圖形1、空間曲線2、空間曲面 空 間 曲 線 1、 一條曲線 例 在區(qū)間0,10*pi畫出參數(shù)曲線x=sin(t),y=cos(t), z=t. 解 t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) rotate3d %旋轉(zhuǎn)n維向量,分別表示曲線上點集的橫坐標(biāo)、縱坐標(biāo)、函數(shù)值指定顏色、線形等PLOT3(x

9、,y,z,s)2、多條曲線例 畫多條曲線觀察函數(shù)Z=(X+Y)2. meshgrid(x,y) 作用:產(chǎn)生一個以向量x為行、向量y為列的矩陣其中x,y,z都是mn矩陣,對應(yīng)的每一列表示一條曲線解 x=-3:0.1:3;y=1:0.1:5; X,Y=meshgrid(x,y); Z=(X+Y).2; plot3(X,Y,Z) PLOT3(x,y,z)例 畫函數(shù)Z=(X+Y)2的圖形. 解 x=-3:0.1:3; y=1:0.1:5; X,Y=meshgrid(x,y); Z=(X+Y).2; surf(X,Y,Z) shading flat %將當(dāng)前圖形變得平滑(1) surf(x,y,z)畫出

10、數(shù)據(jù)點(x,y,z)表示的曲面數(shù)據(jù)矩陣。分別表示數(shù)據(jù)點的橫坐標(biāo)、縱坐標(biāo)、函數(shù)值空 間 曲 面(2) Mesh(x,y,z) 解 x=-3:0.1:3; y=1:0.1:5; X,Y=meshgrid(x,y); Z=(X+Y).2; mesh(X,Y,Z) 例 畫出曲面Z=(X+Y)2在不同視角的網(wǎng)格圖. 畫網(wǎng)格曲面數(shù)據(jù)矩陣。分別表示數(shù)據(jù)點的橫坐標(biāo)、縱坐標(biāo)、函數(shù)值(3)meshz(X,Y,Z) 在網(wǎng)格周圍畫一個curtain圖解 輸入命令: X,Y=meshgrid(-3:.125:3); Z=peaks(X,Y); Meshz(X,Y,Z)例 繪peaks的網(wǎng)格圖在圖形上加格柵、圖例和標(biāo)注定

11、制坐標(biāo)圖形保持分割窗口縮放圖形改變視角圖形處理動 畫處理圖形(1)GRID ON:加格柵GRID OFF:刪除格柵(2)hh = xlabel(string): 在當(dāng)前圖形x軸上加圖例stringhh = title(string):在當(dāng)前圖形頂端上加圖例stringhh = zlabel(string):在當(dāng)前圖形z軸上加圖例stringhh = ylabel(string):在當(dāng)前圖形y軸上加圖例string1、在圖形上加格柵、圖例和標(biāo)注例 在區(qū)間0,2*pi畫sin(x)的圖形,加注圖例“自變量 X”、“函數(shù)Y”、“示意圖”, 并加格柵.解 x=linspace(0,2*pi,30);

12、y=sin(x); plot(x,y) xlabel(自變量 X) ylabel(函數(shù) Y) title(示意圖) grid on解 x=linspace(0,2*pi,30); y=sin(x); z=cos(x); plot(x,y,x,z) gtext(sin(x);gtext(cos(x)命令gtext(string):在現(xiàn)有圖上用鼠標(biāo)放置標(biāo)注。說明:運行命令gtext(string)時,屏幕上出現(xiàn)當(dāng)前圖形,在圖形上出現(xiàn)一個交叉的十字,該十字隨鼠標(biāo)的移動移動,當(dāng)按下鼠標(biāo)左鍵時,該標(biāo)注string放在當(dāng)前十交叉的位置。例 在區(qū)間0,2*pi畫sin(x),cos(x),并分別標(biāo)注“sin

13、(x)”,”cos(x)”。(3) hh = gtext(string)2、定制坐標(biāo)Axis(xmin xmax ymin ymax zmin zmax)解 x=linspace(0.0001,0.01,1000); y=sin(1./x); plot(x,y) axis(0.005,0.01,1,1)定制圖形坐標(biāo)將坐標(biāo)軸返回到自動缺省值A(chǔ)xis autox、y、z的最大、最小值例 在區(qū)間0.005,0.01顯示sin(1/x)的圖形。3、圖形保持(1) hold on hold off解 x=linspace(0,2*pi,30); y=sin(x); z=cos(x) plot(x,z,r

14、o:) hold on Plot(x,y)保持當(dāng)前圖形, 以便繼續(xù)畫圖到當(dāng)前圖上釋放當(dāng)前圖形窗口例 將y=sin(x)、y=cos(x)分別用點和線畫出在同一屏幕上。(2) figure(h)例 區(qū)間0,2*pi新建兩個窗口分別畫出 y=sin(x);z=cos(x)。解 x=linspace(0,2*pi,100); y=sin(x);z=cos(x); plot(x,y); title(sin(x); pause figure(2); plot(x,z); title(cos(x);新建h窗口,激活圖形使其可見,并把它置于其它圖形之上4、分割窗口h=subplot(mrows,ncols,

15、thisplot) 劃分整個作圖區(qū)域為mrowsncols塊(逐行對塊訪問)并激活第thisplot塊,其后的作圖語句將圖形畫在該塊上。 激活已劃分為mrowsncols塊的屏幕中的第thisplot塊,其后的作圖語句將圖形畫在該塊上。命令Subplot(1,1,1)返回非分割狀態(tài)。subplot(mrows,ncols,thisplot) subplot(1,1,1) 解x=linspace(0,2*pi,100); y=sin(x); z=cos(x); a=sin(x).*cos(x);b=sin(x)./(cos(x)+eps) subplot(2,2,1);plot(x,y),tit

16、le(sin(x) subplot(2,2,2);plot(x,z),title(cos(x) subplot(2,2,3);plot(x,a),title(sin(x)cos(x) subplot(2,2,4);plot(x,b),title(sin(x)/cos(x)例 將屏幕分割為四塊,并分別畫出y=sin(x),z=cos(x),a=sin(x)cos(x),b=sin(x)/cos(x)5、縮放圖形zoom on 單擊鼠標(biāo)左鍵,則在當(dāng)前圖形窗口中,以鼠標(biāo)點中的點為中心的圖形放大2倍;單擊鼠標(biāo)右鍵,則縮小2倍解 x=linspace(0,2*pi,30); y=sin(x); Plot

17、(x,y) zoom on 例 縮放y=sin(x)的圖形zoom off為當(dāng)前圖形打開縮放模式關(guān)閉縮放模式6. 改變視角view (1)view(a,b) 命令view(a,b)改變視角到(a,b),a是方位角,b為仰角。缺省視角為(-37.5,30)。 解 x=-3:0.1:3; y=1:0.1:5; X,Y=meshgrid(x,y); Z=(X+Y).2; subplot(2,2,1), mesh(X,Y,Z) subplot(2,2,2), mesh(X,Y,Z),view(50,-34) subplot(2,2,3), mesh(X,Y,Z),view(-60,70) subplo

18、t(2,2,4), mesh(X,Y,Z),view(0,0,1)例 畫出曲面Z=(X+Y).2在不同視角的網(wǎng)格圖. view用空間矢量表示的,三個量只關(guān)心它們的比例,與數(shù)值的大小無關(guān),x軸view(1, 0, 0),y軸view(0, 1, 0),z軸view(0, 0, 1)。(2)view(x,y,z)7. 動畫 Moviein(),getframe,movie() 函數(shù)Moviein()產(chǎn)生一個幀矩陣來存放動畫中的幀;函數(shù)getframe對當(dāng)前的圖象進(jìn)行快照;函數(shù)movie()按順序回放各幀。 例 將曲面peaks做成動畫。 解 x,y,z=peaks(30); surf(x,y,z)

19、 axis(-3 3 -3 3 -10 10) m=moviein(15); for i=1:15 view(-37.5+24*(i-1),30) m(:,i)=getframe; end movie(m)特殊二、三維圖形1、特殊的二維圖形函數(shù)2、特殊的三維圖形函數(shù)特殊的二維圖形函數(shù)1、極坐標(biāo)圖:polar (theta,rho,s)theta:極角(弧度表示)rho:極半徑s:線型例解:theta=linspace(0,2*pi), rho=sin(2*theta).*cos(2*theta); polar(theta,rho,g) title(Polar plot of sin(2*the

20、ta).*cos(2*theta);2、 散點圖: scatter(X,Y,S,C) 在向量X和Y的指定位置顯示彩色圈X和Y必須大小相同解 輸入命令: load seamount scatter(x,y,5,z)3、平面等值線圖: contour (x,y,z,n) 繪制n個等值線的二維等值線圖解 輸入命令: X,Y=meshgeid(-2:.2:2,-2:.2:3); Z=X.*exp(-X.2-Y.2); C,h=contour(X,Y,Z); clabel(C,h) colormap cool例 繪制seamount散點圖特殊的三維圖形函數(shù)1、空間等值線圖: contour 3(x,y,

21、z,n) 其中n表示等值線數(shù)。例 山峰的三維和二維等值線圖。 解 x,y,z=peaks; subplot(1,2,1) contour3(x,y,z,16,s) grid, xlabel(x-axis),ylabel(y-axis) zlabel(z-axis) title(contour3 of peaks); subplot(1,2,2) contour(x,y,z,16,s) grid, xlabel(x-axis), ylabel(y-axis) title(contour of peaks);Matlab liti404 3、三維散點圖 scatter3(X,Y,Z,S,C) 在向

22、量X,Y和Z指定的位置上顯示彩色圓圈. 向量X,Y和Z的大小必須相同.解 輸入命令:x,y,z=sphere(16);X=x(:)*.5 x(:)*.75 x(:);Y=y(:)*.5 y(:)*.75 y(:);Z=z(:)*.5 z(:)*.75 z(:);S=repmat(1 .75 .5*10,prod(size(x),1);C=repmat(1 2 3,prod(size(x),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),filled),view(-60,60)例 繪制三維散點圖??偨Y(jié):多次疊繪、雙縱坐標(biāo)和多子圖多次疊繪多次調(diào)用plot命令在一幅圖上繪制

23、多條曲線,需要hold指令的配合。 hold on 保持當(dāng)前坐標(biāo)軸和圖形,并可以接受下一次繪制。hold off 取消當(dāng)前坐標(biāo)軸和圖形保持,這種狀態(tài)下,調(diào)用plot繪制完全新的圖形,不保留以前的坐標(biāo)格式、曲線。 例 3.5 重繪曲線重繪波形 及其包絡(luò)線。t=(0:pi/100:pi);%長度為101的時間采樣列向量y1=sin(t)*1,-1;%包絡(luò)線函數(shù)值,是(101x2)的矩陣y2=sin(t).*sin(9*t);%長度為101的調(diào)制波列向量t3=pi*(0:9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,r:)hold onplot(t,y2,b)plot(t

24、3,y3,bo)axis(0,pi,-1,1)%控制軸的范圍 hold off總結(jié):繪制圖形的輔助操作 曲線線形控制符 曲線顏色控制符 符號 - : -.-含義 實線 虛線 點劃線 雙劃線 符號 b g rcmykw含義蘭綠紅青品紅黃黑白曲線的色彩、線型和 數(shù)據(jù)點形曲線的線形控制符、顏色控制符、數(shù)據(jù)點形控制符可以組合使用其先后次序不影響繪圖結(jié)果也可以單獨使用。 坐標(biāo)、刻度和分格線控制 刻度、分格線和坐標(biāo)框 分格線與grid指令 grid on畫出分格線grid off不畫分格線MATLAB的缺省設(shè)置是不畫分格線;分格線的疏密取決于坐標(biāo)刻度(改變坐標(biāo)刻度,可改變分格線的疏密)。坐標(biāo)框box on

25、控制加邊框線box off 控制不加邊框線刻度設(shè)置指令及格式:set(gca, xtick, xs, ytick, ys)xs、ys可以使任何合法的實數(shù)向量,用于分別設(shè)置x、y軸的刻度。圖形標(biāo)識 圖形標(biāo)識包括:圖名(title)坐標(biāo)軸名(xlabel、ylabel)圖形文本注釋(text)圖例(legend)簡捷使用格式 title(s)% s為字符串變量或常量xlabel(s)ylabel(s)legend(s)text(x, y, s)% 指定坐標(biāo)(x, y)處加注文字 圖形標(biāo)識(續(xù))精細(xì)指令形式 字體樣式設(shè)置: fontnamearg arg fontsize arg string 其中

26、,String為要輸出的字符串,其前面的均為屬性控制,使用方法見下表。 圖形標(biāo)識(續(xù))例3.12在正弦曲線上標(biāo)注特殊值t=(0:100)/100*2*pi;y=sin(t);plot(t, y)text(3*pi/4,sin(3*pi/4), fontsize16leftarrowsin(t) = .707 )text(pi, sin(pi), fontsize16leftarrowsin(t) = 0 )text(5*pi/4, sin(5*pi/4), fontsize16sin(t) = -.707rightarrow,. HorizontalAlignment,right)其中,Hor

27、izontalAlignment, right設(shè)置圖形標(biāo)識為水平右對齊例3.13 t = 0:900;plot(t,0.25*exp(-0.005*t)title(fontsize16itAealphat);text(300,.25*exp(-0.005*300),. fontsize14leftarrow0.25ite-0.005itt at itt = 300);2. 特殊圖形直方圖(柱形圖)bar垂直直方圖累計式分組式水平直方圖累計式分組式例3.15x = -2.9:0.2:2.9;bar(x,exp(-x.*x),r)例3.16北京市從業(yè)人員統(tǒng)計1990年1995年2000年第一產(chǎn)業(yè)

28、90.770.673.9(萬人)第二產(chǎn)業(yè) 281.6 271 214.6第三產(chǎn)業(yè) 254.8 323.7 326.5執(zhí)行以下語句:year=1990 1995 2000;people=90.7 281.6 254.8; 70.6 271 323.7; 73.9 214.6 326.5;bar(year, people, stack);legend(fontsize6第一產(chǎn)業(yè), fontsize6第二產(chǎn)業(yè), fontsize6第三產(chǎn)業(yè));累計式直方圖bar(year, people, group); % 分組式直方圖legend(fontsize6第一產(chǎn)業(yè), fontsize6第二產(chǎn)業(yè), fon

29、tsize6第三產(chǎn)業(yè));barh(year, people, group); % 分組式直方圖legend(fontsize6first, fontsize6second, fontsize6third);barh(year, people, stack); % 累積式直方圖legend(fontsize6 first, fontsize6second, fontsize6third);餅圖指令pie 餅圖指令pie 用來表示各元素占總和的百分?jǐn)?shù)。該指令第二輸入變量是與第一變量同長的0-1向量,1使對應(yīng)扇塊突出。a=1,1.6,1.2,0.8,2.1;subplot(1,2,1),pie(a,

30、1 0 1 0 0),legend(1,2,3,4,5)subplot(1,2,2), b=int8(a=min(a)pie3(a,b)colormap(cool) 3. 三維繪圖的基本操作三維線圖指令plot3三維繪圖指令中,plot3最易于理解,它的使用格式與plot十分相似,只是對應(yīng)第3 維空間的參量。t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,b-,x,y,z,bd);view(-82,58);box onlegend(鏈,寶石) 三維線圖繪制結(jié)果三維網(wǎng)線圖(mesh)和曲面圖(surf)畫函數(shù)z=f(x,y)所代表

31、的三維空間曲面,需要做以下的數(shù)據(jù)準(zhǔn)備工作:確定自變量的取值范圍和取值間隔。x=x1:dx:x2;y=y1:dy:y2;構(gòu)成x-y平面上的自變量采樣“格點”矩陣。利用MATLAB指令meshgrid產(chǎn)生“格點”矩陣xa, ya=meshgrid(x,y);計算函數(shù)在自變量采樣“格點”上的函數(shù)值,即z=f(x,y)。網(wǎng)線圖、曲面圖繪制。舉例繪制函數(shù)z=x2+y2的曲面x=-4:4;y=x;x,y=meshgrid(x,y); %生成 x-y 坐標(biāo)“格點”矩陣z=x.2+y.2; %計算格點上的函數(shù)值subplot(1,2,1), mesh(x,y,z); %三維網(wǎng)格圖subplot(1,2,2),

32、 surf(x,y,z); %三維曲面圖colormap(hot); 函數(shù)z=x2+y2的曲面的繪制結(jié)果Matlab程序設(shè)計8/22/202265Matlab命令的執(zhí)行方式交互式命令執(zhí)行方式(命令窗口) 逐條輸入,逐條執(zhí)行,操作簡單、直觀,但速度慢,執(zhí)行過程不能保留。M文件的程序執(zhí)行方式 將命令編成程序存儲在一個文件中(M文件),依次運行文件中的命令,可以重復(fù)進(jìn)行。Matlab程序設(shè)計有傳統(tǒng)高級語言的特征,又有自己獨特的特點,可以利用數(shù)據(jù)結(jié)構(gòu)的特點,使程序結(jié)構(gòu)簡單,編程效率高。5.1 M文件的分類用Matlab語言編寫的程序,稱為M文件。 是由若干Matlab命令組合在一起構(gòu)成的,它可以完成某

33、些操作,也可以實現(xiàn)某種算法。 M文件根據(jù)調(diào)用方式的不同分為兩類: 命令文件(Script File) 函數(shù)文件(Function File) 它們的擴展名都是.m命令文件和函數(shù)文件的區(qū)別命令文件沒有輸入?yún)?shù),也不返回輸出參數(shù);函數(shù)文件可以帶輸入?yún)?shù),也可以返回輸出參數(shù)。命令文件對工作空間中的變量進(jìn)行操作,文件中所有命令的執(zhí)行結(jié)果也返回工作空間中;函數(shù)文件中定義的變量為局部變量,當(dāng)函數(shù)文件執(zhí)行完畢時,這些變量也被清除。命令文件可以直接運行;函數(shù)文件不能直接運行,要以函數(shù)調(diào)用的方式來調(diào)用它。M文件的建立與打開 M文件是一個文本文件,可以用任何編輯程序來建立和編輯,一般最常用的是使用Matlab提供

34、的文本編輯器。 該編輯器是一個集編輯和調(diào)試于一體的工作環(huán)境。5.2 程序控制結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu) 任何復(fù)雜的程序都可以由這3種基本結(jié)構(gòu)構(gòu)成。函數(shù)文件是另一種形式的M文件,每一個函數(shù)文件都定義一個函數(shù)。事實上,MATLAB提供的標(biāo)準(zhǔn)函數(shù)大部分都是由函數(shù)文件定義的。四. 函數(shù)文件1函數(shù)文件格式函數(shù)文件由function語句引導(dǎo),其格式為: function 輸出形參表=函數(shù)名(輸入形參表) 注釋說明部分 函數(shù)體注:其中函數(shù)名的命名規(guī)則與變量名相同。輸入形參為函數(shù)的輸入?yún)?shù),輸出形參為函數(shù)的輸出參數(shù)。當(dāng)輸出形參多于1個時,則應(yīng)該用方括號括起來?!纠?】 編寫函數(shù)文件求小于任意自然數(shù)n的Fib

35、onacci數(shù)列各項。 function f=ffib(n) %用于求Fibonacci數(shù)列的函數(shù)文件 %f=ffib(n) %1999年9月30日編 f=1,1; i=1; while f(i)+f(i+1)n f(i+2)=f(i)+f(i+1); i=i+1; end將以上函數(shù)文件以文件名ffib.m存盤,然后在MATLAB命令窗口輸入以下命令,可求小于2 000的Fibonacci數(shù)。 ffib(2000)四. 函數(shù)文件2函數(shù)調(diào)用 函數(shù)文件編制好后,就可調(diào)用函數(shù)進(jìn)行計算了。如上面定義ffib函數(shù)后,調(diào)用它求小于2000的Fibonacci數(shù)。函數(shù)調(diào)用的一般格式是: 輸出實參表=函數(shù)名(

36、輸入實參表)四. 函數(shù)文件函數(shù)調(diào)用 函數(shù)調(diào)用的一般格式是: 輸出實參表 = 函數(shù)名(輸入實參表) 注意:函數(shù)調(diào)用時,各實參出現(xiàn)的順序、個數(shù),應(yīng)與函數(shù)定義時相同。例5.11 利用函數(shù)文件,實現(xiàn)直角坐標(biāo)(x,y)與極坐標(biāo)(,)之間的轉(zhuǎn)換。 函數(shù)文件:tran.m: function rho,theta = tran(x,y) rho = sqrt(x*x+y*y); theta = atan(y/x); 調(diào)用tran.m的命令文件main1.m: x = input(please input x=:); y = input(please input y=:); rho,the = tran(x,y

37、); rho the函數(shù)的嵌套調(diào)用 在Matlab中,函數(shù)可以嵌套調(diào)用,即一個函數(shù)可以調(diào)用別的函數(shù)。 一個函數(shù)調(diào)用自身稱為函數(shù)的遞歸調(diào)用。 例5.12 利用函數(shù)的遞歸調(diào)用,求n!。 n!本身就是以遞歸的形式定義的: 顯然,求n!需要求(n-1)!,這時可采用遞歸調(diào)用。 函數(shù)如下: function f = factor(n) if n后輸入變量名,檢查變量的值。可以分析判斷程序 的正確性。 選擇Debug菜單中的Continue命令,程序繼續(xù)運行,在斷點處又暫停,再檢查 變量的值,一直到發(fā)現(xiàn)問題為止。 切換工作空間,結(jié)束對程序的調(diào)試。打開編輯窗口中的Stack下拉列表框,從 中選擇Base,即

38、將工作空間切換到主工作空間。然后選擇Debug菜單中的Set Clear Breakpoint 命令清楚已設(shè)置的斷點,在選擇Continue命令,去除白色 箭頭,完成調(diào)試。矩陣求逆與線性方程組求解5.6.1 矩陣的逆 對于一個方陣A,如果存在一個與其同階的方陣B,使得: (I為單位矩陣)則稱B為A的逆矩陣,當(dāng)然,A也是B的逆矩陣。求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。例5.18 求方陣A的逆矩陣,且驗證。 A = 1,-1,1;5,-4,3;2,1,1; B = inv(A); A*B ans = 1.0000 0 0 -0.0000 1.0000 0 -0.0000 0 1.0000 用矩

39、陣求逆方法解線性方程組 將包含n個未知數(shù),由n個方程構(gòu)成的線性方程組表示為:其矩陣表示形式為:其中: 求逆矩陣的方法解線性方程組命令如下: A = 1,2,3;1,4,9;1,8,27; b = 5,-2,6; x = inv(A)*b %x = Ab x = 23.0000 -14.5000 3.6667也可以運用左除運算符求解。矩陣行列式值 把一個方程看做一個行列式,并按行列式的規(guī)則求值,稱為行列式的值。在Matlab中,使用函數(shù)det(A)得到。例如: A = rand(5) A = 0.9501 0.7621 0.6154 0.4057 0.0579 0.2311 0.4565 0.7919 0.9355 0.3529 0.6068 0.0185 0.9218 0.9169 0.8132 0.4860 0.8214 0.7382 0.4103 0.0099 0.8913 0.4447 0.1763 0.8936 0.1389 B = det(A) B = -0.0071Matlab數(shù)值計算8/22/202286多項式(polynomial) 問題多項式的MATLAB表達(dá)多項式由一個行向量表示該向量元素是該多項式的系數(shù)且按降冪次序排列 如:多項式x412x325x116由行

溫馨提示

  • 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

提交評論