第三章_Matlab圖形繪制[1]_第1頁
第三章_Matlab圖形繪制[1]_第2頁
第三章_Matlab圖形繪制[1]_第3頁
第三章_Matlab圖形繪制[1]_第4頁
第三章_Matlab圖形繪制[1]_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三章第三章 Matlab圖形繪制圖形繪制05101520250102030-10-5051005101520250102030-10-50510510152025510152025-2-1012-2-1012-2-1012主要內(nèi)容主要內(nèi)容3.1. 3.1. 二維曲線的繪制二維曲線的繪制3.2. 3.2. 三維曲線的繪制三維曲線的繪制3.33.3 三維網(wǎng)線圖和曲面圖的繪制三維網(wǎng)線圖和曲面圖的繪制3.43.4 MatlabMatlab圖形處理的基本技術圖形處理的基本技術3.53.5 動畫技術動畫技術3.63.6 圖形用戶界面設計圖形用戶界面設計3.13.1 二維曲線的繪制二維曲線的繪制1、繪制二

2、維圖形最常用的函數(shù)是plot,調用格式有以下四種:(1)plot(Y) 如果Y為實向量,則以Y的索引坐標作為橫坐標,以Y本身的元素作為縱坐標。如果Y為復數(shù)向量,則以該向量實部為橫坐標,虛部為縱坐標。(2)plot(X,Y)此時以X為橫坐標,Y為縱坐標。X和Y要求維數(shù)必須相同。當變量X和Y是同階矩陣時,將按照矩陣的行或列進行操作。(3)plot(X,Y,s) 第三個變量用于設置圖形顯示屬性。設置圖形的線型、顏色、標記等。(4)plot(X1,Y1,s1,X2,Y2,s2,.) 每三項為一組繪制多條曲線。y=rand(100,1);plot(y)x=rand(100,1);z=x+y.*i;plo

3、t(z)示例:x=0:0.01*pi:2*pi;y=sin(x),cos(x);plot(x,x,y);x=0:0.01*pi:pi;y=sin(x);z=cos(x);plot(x,y,-k,x,z,-.rd);Matlab繪圖命令中的各種選項曲線線型曲線線型曲線顏色曲線顏色標記符號標記符號選項意義選項意義選項意義-實線b藍色*星號-虛線g綠色.點號:點線m紅紫色x叉號-.點劃線w白色vnone無線c藍綠色k黑色r紅色O圓圈p五角星y黃色s方塊d菱形h六角星2、特殊的二維圖形函數(shù)(1)特殊坐標系的二維圖形函數(shù)特殊坐標系的二維圖形函數(shù),區(qū)別于均勻單y軸坐標系而言,具體有對數(shù)坐標系、極坐標系和雙

4、y軸坐標等。對數(shù)坐標曲線,主要有semilogx,semilogy和loglog,前兩個分別以x坐標和y坐標為對數(shù)坐標,后一個是雙對數(shù)坐標。x = 0:.1:10;semilogy(x,10.x)x=1:0.1*pi:2*pi;y=sin(x);semilogx(x,y,-*)x = logspace(-1,2);loglog(x,exp(x),-s)grid on極坐標系函數(shù)polar,調用形式為:polar(theta,rho)或polar(theta,rho,s)雙縱坐標(雙y軸坐標系)函數(shù)plotyy,調用形式為:plotyy(X1,Y1,X2,Y2)plotyy(X1,Y1,X2,Y

5、2,fun) fun可以是plot、semilogx、semilogy或loglogplotyy(X1,Y1,X2,Y2,fun1,fun2) fun1繪制(X1,Y1),fun2繪制(X2,Y2)注:雙坐標繪制圖形的調用過程中,不能夠像前面的plot函數(shù)那樣對曲線屬性進行設置,需要使用句柄圖形控制完成。x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);AX,H1,H2 = plotyy(x,y1,x,y2,plot);AX是對應兩個坐標軸的句柄,H1和H2分別是對應plot的句柄。(2)二維

6、特殊函數(shù)圖形)二維特殊函數(shù)圖形函數(shù)名函數(shù)名說明說明函數(shù)名函數(shù)名說明說明函數(shù)名函數(shù)名說明說明area填充繪圖feather矢量圖fplot函數(shù)圖繪制bar條形圖stem離散序列餅狀圖hist直方圖barh水平條形圖fill多邊形填充paretoPareto圖comet彗星圖stairs階梯圖pie餅圖errorbar誤差帶圖contour等高線圖plotmatrix分散矩陣繪制ezplot簡單繪制函數(shù)圖contourf填充的等高線圖ribbon三維圖的二維條狀顯示ezpolar簡單繪制極坐標圖scatter散射圖Polar繪制極坐標示例:示例:theta=linspace(0,2*pi);r=c

7、os(2*theta);polar(theta,r)Hist用來顯示資料的分段情況和統(tǒng)計特性,適合于大量數(shù)據(jù)的情況示例:示例:x=randn(9999,1);hist(x,50)Rose與hist接近,將資料的大小視為角度,資料的個數(shù)作為距離,采用極坐標繪圖。示例:示例:x=randn(9999,1);rose(x,50)Bar函數(shù)適合于數(shù)據(jù)點不多時使用示例:示例:x=1:15;y=rand(size(x);bar(x,y);如果已知數(shù)據(jù)的誤差量,可用errorbar表示。示例:示例:x=linspace(0,2*pi,20);y=sin(x);z=std(y)*ones(size(x);er

8、rorbar(x,y,z);fplot函數(shù)可以繪制較精確的圖形,適合于變化劇烈的函數(shù)。示例:示例:fplot(sin(1/x),0.01,0.3)Stem產(chǎn)生針狀圖,常被用來繪制數(shù)位訊號。x=linspace(0,10,100);y=sin(x).*exp(-x/4);stem(x,y);Fill將資料點視為多邊形頂點,并將此多邊形涂上顏色。x=linspace(0,10,100);y=sin(x).*exp(-x/4);fill(x,y,c);Feather函數(shù)將每一個數(shù)據(jù)點視為復數(shù),并以箭頭畫出。theta=linspace(0,2*pi,40);z=cos(theta)+i*sin(th

9、eta);feather(z);Compass函數(shù)與feather函數(shù)接近,只是每個箭頭的起點都在圓內(nèi)theta=linspace(0,2*pi,40);z=cos(theta)+i*sin(theta);compass(z);Quiver用來繪制向量場圖。x,y=meshgrid(-2:0.2:2);z=x.*exp(-x.2-y.2);Dx,Dy=gradient(z,0.2,0.2);Contour(x,y,z);hold on;quiver(x,y,Dx,Dy);colormap hsv ;hold off3、顯函數(shù)、隱函數(shù)和符號函數(shù)作圖(1)fplot(fun,lims)繪制由字符串

10、fun指定函數(shù)名的函數(shù)在x軸區(qū)間為lims=xmin, xmax的函數(shù)圖。若lims=xmin,xmax,ymin,ymax,則y軸也被限制。例題:解 1)首先用M文件fun1.m定義函數(shù)f(x)如下function y=Afun1(x);if x1y=x+1;elsey=1+1./x;end在matlab命令窗口輸入fplot(Afun1,-3,3)就可畫出函數(shù) f (x) 的圖形。2)這里也可以使用匿名函數(shù)匿名函數(shù),編寫程序如下fun2=(x) (x+1)*(x=1);fplot(fun2,-3,3)(2) ezplot(f)可用來繪制顯函數(shù)、隱函數(shù)和參數(shù)方程的圖形,可用來繪制顯函數(shù)、隱函

11、數(shù)和參數(shù)方程的圖形,x軸的默認軸的默認范圍為范圍為-2pi,2pi。1)對于顯函數(shù)y=f(x),調用格式為:ezplot(f,xmin,xmax)2)對于隱函數(shù)f(x,y)=0,調用格式為:ezplot(f,xmin,xmax,ymin,ymax)ezplot(f,a,b),x與y在(a,b)區(qū)間之內(nèi)。3)對于參數(shù)方程x=x(t),y=y(t),調用格式為:ezplot(x,y)或者ezplot(f,tmin,tmax)示例示例1:ezplot(x2*sin(x+y2)+y2*exp(x+y)+5*cos(x2+y),-10 10);示例示例2:ezplot(cot(x)示例示例3:ezplo

12、t(x2+y2/4=1)示例示例4:ezplot(x2+y2-1,-1,1,-1,1)示例示例5:ezplot(x3+y3-5*x*y)示例示例6:ezplot(2*cos(t),sin(t),0,2*pi);3.23.2 三維曲線的繪制三維曲線的繪制繪制三維曲線的函數(shù)是plot3,與plot函數(shù)的調用格式相同,也有以下四種:plot3(x,y,z)plot3(X,Y,Z) X,Y,Z是相同階數(shù)的矩陣,繪出三矩陣的列向量的曲線。是相同階數(shù)的矩陣,繪出三矩陣的列向量的曲線。plot3(X,Y,Z,s)plot3(x1,y1,z1,s1,x2,y2,z2,s2,.)組合圖形組合圖形以第二種形式為例

13、:x,y=meshgrid(-2:0.1:2,-2:0.1:2);z=x.*exp(-x.2-y.2);plot3(x,y,z)函數(shù)名函數(shù)名說明說明函數(shù)名函數(shù)名說明說明mesh三維網(wǎng)格圖meshc將網(wǎng)格與等高線結合meshz屏蔽的網(wǎng)格圖meshgrid生成網(wǎng)格點MATLAB對于網(wǎng)格的處理方法是:將xy平面按指定方式分隔成平面網(wǎng)格,然后根據(jù)程序中給定的方式計算第三維變量的值,即z軸的值,與對應的xy平面的坐標構成三維點元素,根據(jù)由此得到的(x,z)和(y,z)計算各平面的曲線,彼此相連就構成了網(wǎng)格圖。3.33.3 三維網(wǎng)線圖和曲面圖的繪制三維網(wǎng)線圖和曲面圖的繪制(1)網(wǎng)線圖mesh函數(shù)X,Y=m

14、eshgrid(x,y) x和y是給定的向量,可以定義網(wǎng)格的劃分區(qū)域,也可以定義網(wǎng)格的劃分方法,X和Y是網(wǎng)格劃分后的數(shù)值矩陣。mesh(X,Y,Z,C)繪制四個矩陣變量的彩色網(wǎng)格面圖形,觀測點由view定義,坐標軸由axis定義,C設置顏色,由colormap實現(xiàn)。mesh(X,Y,Z) 使用C=Z,即顏色正比于圖高。mesh(x,y,Z,C)由兩個向量代替矩陣,要求length(x)=n,length(y)=m,且m,n=size(Z)示例1: x=-2:0.1:2;y=-2:0.1:2;xx,yy=meshgrid(x,y);zz=xx.2+yy.2;%ii=find(xx.2+yy.24

15、);zz(ii)=NaN;surf(xx,yy,zz);x=-10:0.5:10;y=-8:0.5:8;x,y=meshgrid(x,y);z=sin(sqrt(x.2+y.2)./sqrt(x.2+y.2);mesh(x,y,z);示例2:(2)著色函數(shù)surfsurf(X,Y,Z,C)輸入?yún)?shù)的設置和mesh相同,不同的是mesh繪制的是網(wǎng)格圖,而surf繪制的著色的三維表面。兩者對比如下圖所示函數(shù)名函數(shù)名說明說明函數(shù)名函數(shù)名說明說明函數(shù)名函數(shù)名說明說明bar3三維條形圖surfc著色圖+等高線comet3三維彗星圖trisurf三角形表面圖ezgraph3函數(shù)控制繪制圖waterfall

16、瀑布圖pie3三維餅狀圖scatter3三維散射圖cylinder柱面圖stem3三維離散數(shù)據(jù)圖sphere球面圖trimesh三角形網(wǎng)格圖(3)特殊的三維繪圖命令(4)旋轉曲面圖 cylinderX,Y,Z = cylinder(r) 這里的r表示構成旋轉曲面的曲線。方法一: Matlab程序如下。 x=0:10:600; X,Y,Z=cylinder(30*exp(-x/400).*sin(x+25*pi)/100)+130); surf(X,Y,Z)方法二:將旋轉曲面用參數(shù)方程表示。 解 因為這里的函數(shù)是隱函數(shù),化成顯函數(shù)后有兩支,必須使用參數(shù)方程,旋轉面的參數(shù)方程為 畫圖的Matlab

17、程序如下:alpha=0:0.1:2*pi; beta=0:0.1:2*pi; x=4*cos(alpha)*ones(size(beta); y=(5+4*sin(alpha)*cos(beta); z=(5+4*sin(alpha)*sin(beta); surf(x,y,z) 畫圖的Matlab程序也可以寫成 x=(alpha,beta) 4*cos(alpha); y=(alpha,beta) (5+4*sin(alpha)*cos(beta); z=(alpha,beta) (5+4*sin(alpha)*sin(beta); ezsurf(x,y,z)(5)繪制柱面圖柱面平行于某個

18、坐標軸,方程中不出現(xiàn)某個坐標軸的變量,方程表示為F(x,y)=0或者F(x,z)=0或者F(y,z)=0示例一:畫出方程 表示的柱面22zx解:方程中的x是自變量矩陣,z是因變量,則另一個自變量矩陣為y,自變量平面是xoy面,x軸是真正的自變量,y軸是柱面方向。Matlab程序如下:u=linspace(-5,5,10);%設定參數(shù)列向量uv=linspace(-5,10,10); %設定參數(shù)行向量vX=u*ones(size(v); %構成自變量矩陣XY=ones(size(u)*v; %構成自變量矩陣YZ=2-X.2; %求因變量Zmesh(X,Y,Z)(6)其他二次曲面Matlab中使用

19、繪圖命令ezmesh或ezsurf也很方便,只需要把曲面方程寫成兩個變量的顯函數(shù)方程或參數(shù)方程即可。對于旋轉面,如果母線的方程可以表示成關于旋轉軸變量的顯式函數(shù),則可以直接使用Matlab工具箱中的命令cylinder,否則必須把旋轉面化成參數(shù)方程,然后使用ezmesh或ezsurf命令繪圖。對于其它的二次曲面,如果可以寫成顯函數(shù)直接使用命令ezmesh或ezsurf,否則必須先化成參數(shù)方程。幾個示例:(1)x=(s,t) 3*tan(s)*cos(t); y=(s,t) 2*tan(s)*sin(t); z=(s,t) tan(s); ezsurf(x,y,z) (2)ellipsoid(0

20、,0,0,3,2,sqrt(6) (3)ezsurf(x,y)x*y) (4)x=(s,t) 3*cos(s); y=(s,t) 2*sin(s); z=(s,t) t; ezmesh(x,y,z)(7)Matlab三維散點插值曲面圖的繪制1、scatter3函數(shù),調用方法:scatter3(X,Y,Z)示例1: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,numel(x),1);C = repm

21、at(1 2 3,numel(x),1);scatter3(X(:),Y(:),Z(:),S(:),C(:),filled), view(-60,60)示例2:x=4229042.63 4230585.02 4231384.96 4231773.63 4233028.58 4233296.71 4235869.68 4236288.29;y=431695.4 441585.8 432745.6 436933.7 428734.4 431946.3 428705.0 432999.5;z=1.019 1.023 1.011 1.022 1.020 1.022 1.022 1.023;scatte

22、r3(x,y,z)2、griddata函數(shù),用來產(chǎn)生經(jīng)插值后均勻間隔數(shù)據(jù)作圖。常用的調用方法是:XI,YI,ZI = griddata(x,y,z,XI,YI,method),其中x,y,z來自關系式z=f(x,y),也可以是離散的數(shù)據(jù)點,ZI是有XI和YI插值后得到的對應點。其中method可以是linear,cubic和nearest。V1 = 1 1 0; -1 1 0; -1 -1 0; 1 -1 0;x = V1(:, 1);y = V1(:, 2);z = V1(:, 3);xmin = min(x); xmax = max(x);ymin = min(y); ymax = max

23、(y);x0 = linspace(xmin, xmax, 20);y0 = linspace(ymin, ymax, 20);x0, y0 = meshgrid(x0, y0);z0 = griddata(x, y, z, x0, y0, v4);figure; hold on; view(3);plot3(x, y, z, r., MarkerSize, 20);plot3(x0, y0, z0, k.); col = zeros(size(z0);col(:, end) = 1;mesh(x0, y0, z0, col)示例1:x=10*(0.5-rand(1000,1);y=10*(0

24、.5-rand(1000,1);z=sqrt(x.*x+y.*y).*(9.995+rand(1000,1)/100);clf;plot3(x,y,z,rp,markerSize,4); hold on;xx,yy=meshgrid(linspace(min(x),max(x),linspace(min(y),max(y);zz=griddata(x,y,z,xx,yy,cubic);mesh(xx,yy,zz);shading interp;colormap gray;hold on;示例2:示例3:x = rand(100,1)*4-2; y = rand(100,1)*4-2; z =

25、x.*exp(-x.2-y.2);ti = -2:.25:2; xi,yi = meshgrid(ti,ti);zi = griddata(x,y,z,xi,yi);mesh(xi,yi,zi), hold on, plot3(x,y,z,o), hold off3、TriScatteredInterp函數(shù),該函數(shù)可以看作是griddata的升級版,可以取代griddata對離散數(shù)據(jù)點進行插值。主要用于不規(guī)則數(shù)據(jù)點的插值。主要調用方法:F= TriScatteredInterp(x,y,z),相當于定義了一個關于x,y,z的插值函數(shù)。示例1:x=10*(0.5-rand(1000,1); y=

26、10*(0.5-rand(1000,1); %生成隨機數(shù)據(jù)生成隨機數(shù)據(jù)z=sqrt(x.*x+y.*y).*(9.995+rand(1000,1)/100);clf;plot3(x,y,z,rp,markerSize,4); %繪制三維散點圖繪制三維散點圖hold on;F=TriScatteredInterp(x,y,z); %可以理解為定義了一個函數(shù)可以理解為定義了一個函數(shù)F(.)xx,yy=meshgrid(linspace(min(x),max(x),linspace(min(y),max(y);zz=F(xx,yy); %把把x,y的坐標輸入其中,可以計算出插值的的坐標輸入其中,可以

27、計算出插值的z維度數(shù)值維度數(shù)值mesh(xx,yy,zz); %然后可以采用常規(guī)的方法繪制曲面然后可以采用常規(guī)的方法繪制曲面shading interp;colormap gray;hold on;注:1、對F還可以設置方法F.method=nature/linear /nearest,前兩個針對連續(xù)曲線。2、類似的一些地形圖的繪制也是通過這種插值的方法進行繪制。示例2:z = x.2 + y.2; F = TriScatteredInterp(x,y,z); xi,yi = meshgrid(-0.3:.02:0.3, -0.0688:0.01:0.0688); zi = F(xi,yi);

28、 mesh(xi,yi,zi) xlabel(Interpolated surface, fontweight,b); figure;zi = xi.2 + yi.2; mesh(xi,yi,zi) (8)四維表現(xiàn)圖針對v=v(x,y,z)類型的函數(shù),引入了三維實體的四維切片色圖,由函數(shù)slice實現(xiàn)。slice(X,Y,Z,V,Sx,Sy,Sz) 繪制向量Sx,Sy,Sz中的點沿x,y,z方向切片圖,數(shù)組X,Y,Z用來定義V的坐標,V是M N P的矩陣。slice(X,Y,Z,V,XI,YI,ZI)繪制沿XI,YI,ZI數(shù)組定義的曲面的通過容量V的切片圖。slice(V,Sx,Sy,Sz)或

29、slice(V,XI,YI,ZI) 默認X=1:N,y=1:M,Z=1:Pslice(.,method) 由method指定使用的插值方法,可以為linear,cubic或nearestH=slice(.) 返回處理surface對象的向量。3.43.4 MatlabMatlab圖形處理的基本技術圖形處理的基本技術1、圖形的控制圖形處理的基本技術包括圖形控制、圖形標注、圖形保持以及子圖的繪制等,前三項除了使用函數(shù)命令之外,還可以直接在生成的圖形界面內(nèi)進行對應修改。u坐標軸控制函數(shù)axis 兩種調用形式:axis(V),V是一個數(shù)組,存儲坐標軸的范圍,V=Xmin,Xmax,Ymin,Ymax,

30、Zmin,Zmax。axis 控制字符串 用戶可以通過選擇不同的控制字符串完成對坐標軸的操作。u坐標軸縮放函數(shù)zoom 調用形式:zoom 控制字符串 對圖形的縮放不會改變圖形的基本結構。u平面的坐標網(wǎng)圖函數(shù)grid調用形式:grid on/off 圖形中繪制/取消坐標網(wǎng)格u坐標軸封閉函數(shù)box調用形式:box on/off 圖形四周都顯示/常規(guī)顯示坐標軸2、圖形的標注u坐標軸標注主要函數(shù)有title,xlabel,ylabel,調用形式為:xlabel(標注,屬性1,屬性值1,屬性2,屬性值2,.)屬性包括字體大小,字體名,字體粗細等。例如:title(正弦函數(shù),FontSize,12,Fo

31、ntWeight,bold,FontName,隸書)標注中的特殊符號有相應的轉換字符,例如alpha表示,beta表示,gamma表示,delta表示等等。顯示控制bf:黑體,it: 斜體,rm:標準形式,fontnamefontname:字體名fontsize(fontsize):字體大小。其他符號如,等只需使用”來引導即可,有分數(shù)或指數(shù)的形式,相應的指數(shù)或分母放到大括號內(nèi)即可。例如:title(bf y=e-x2/2);u文本標注函數(shù)texttext(x,y,標注文本或控制字符串) x和y表示標注的位置,標注中可以實時調用返回值為字符串的函數(shù),如char,num2str等 u交互式文本標注

32、legend用于解決同一張圖中繪制多條曲線的情況。legend(標注1,標注2,.,定位代號)標注1,標注2等分別對應繪圖過程按繪制先后順序所生成的曲線。定位代號為0-4和-1,分別針對不同的位置,默認為1,置于圖形的右上角。圖形的保持和子圖u圖形的保持函數(shù)hold on/offu子圖命令subplot(m,n,p)3.53.5 動畫技術動畫技術Matlab使科學計算余動畫自然結合,實現(xiàn)完美的效果,Matlab中有很多動畫的應用程序,如travel,truss,lorenz等。Matlab中產(chǎn)生動畫的兩種形式:1、以影片方式產(chǎn)生動畫。這種方式是以圖像的方式預存多個畫面,再將這些畫面助陣播放,即

33、可得到動畫的效果。這種方法需要事先準備圖片,無法進行實時成像,占內(nèi)存大。產(chǎn)生動畫的方法是使用getframe命令來抓取圖形作為動畫,每個畫面都是以一個列向量的方式置于存放整個電影的矩陣M中。然后使用movie(M,k)命令來播放電影。示例:clear;s=0.2;x1=0;nframes=50;for k=1:nframes x1=x1+s; x=0:0.01:x1; y=sin(x); plot(x,y); axis(0 2*pi -1 1); grid off; M(k)=getframe; /將當前圖形存入將當前圖形存入Mendmovie(M,3);2、以對象方式產(chǎn)生動畫。這種方式保持圖

34、形窗口中的大部分對象,即整個背景不變,而只更新部分運動的對象,以便加快整幅圖像的實時生成速度。缺點是無法產(chǎn)生復雜的動畫。產(chǎn)生移動的動畫效果需要先計算對象的新位置,并在新位置上顯示出對象,然后擦除原位置上的舊對象,并刷新屏幕。需要用到擦除屬性drasemode(取值有normal,xor,background,none),一般設置為xor。然后用drawnow命令刷新屏幕,有時會通過pause函數(shù)進行延遲運行。a=45;b=2;c=-300;s=0;t=0;for n=1:5000 x=t-sign(s)*(sqrt(abs(b*s-c); y=a-s; plot(x,y,o); hold on

35、; pause(0.1) s=x; t=y;end示例1:示例2:t = 0:pi/20:2*pi;y = exp(sin(t);h = plot(t,y,YDataSource,y);for k = 1:.1:10 y = exp(sin(t.*k); refreshdata(h,caller) ;drawnow; pause(.1)end3.63.6 MatlabMatlab圖形用戶界面設計圖形用戶界面設計圖形窗口本身是由不同的圖形對象組成,如坐標軸,曲線,曲面或者文字等,Matlab給每一個圖形對象都分配了一個標識符,成為句柄(handle),可以通過該句柄對對象的屬性進行編程控制。直接

36、對圖形句柄進行操作的繪圖方法稱為底層繪圖操作。GUI就是由窗口、菜單、對話框等各種圖形元素組成的用戶界面。1、創(chuàng)建圖形對象的底層函數(shù)。(1)h=figure(n),創(chuàng)建圖形窗口,n為窗口序號;(2)h=uicontrol(property,value),圖形界面控制,property和value確定控制類型,如BackGroundColor,CallBack,F(xiàn)ontName等(3)h=uimenu(property,value),創(chuàng)建用戶界面菜單(4)h=axes(property,RECT),創(chuàng)建軸對象,RECT用于定義軸對象的位置和大小。(5)h=line(x,y,z),創(chuàng)建線對象,二維

37、用x和y。(6)h=patch(x,y,z,c),創(chuàng)建塊對象,x,y,z定義多邊形,c填充顏色。(7)h=surface(x,y,z,c) 創(chuàng)建面對象,x,y,z定義三維曲面坐標,c定義顏色矩陣。(8)h=image(x) 顯示圖像,x為圖像矩陣(9)h=text(x,y,string) 標注文字示例1:xdata = 2 2 0 2 5; 2 8 2 4 5; 8 8 2 4 8;ydata = 4 4 4 2 0; 8 4 6 2 2; 4 0 4 0 0;cdata = 15 0 4 6 10; 1 2 5 7 9; 2 3 0 8 3;hp = patch(xdata,ydata,cd

38、ata,Marker,o,MarkerFaceColor,flat,FaceColor,none)set(hp,EdgeColor,g) 或者或者set(hp,EdgeColor,none)示例2:t = 0:pi/20:2*pi;hline1 = plot(t,sin(t),k);hline2 = line(t+.06,sin(t),LineWidth,4,Color,.8 .8 .8);2、圖形對象屬性的操作(1)對象屬性的獲取。主要命令有:get:獲得句柄圖形對象的屬性和返回某些對象的句柄值。get(h),get(gcf)set:改變圖形對象的屬性。gcf:當前窗口對象的句柄,對應Fig

39、ure。h=gcf:返回當前窗口對象的句柄。gca:當前軸對象的句柄,對應Axes。delete(gcf):刪除當前窗口的屬性。示例1:h=figure(1);h1=line(2:36,3:37);h3=gcf;h4=gca;set(h1,color,1 0 1);set(h3,color,0.5 0.5 0.5);set(h4,color,1 1 0);(2)對象屬性的直接操作通過當前句柄實現(xiàn)對象屬性的直接操作,獲取句柄的函數(shù)為get(h),get(h,屬性名稱);set(h),set(h1,屬性名稱,新屬性值),如set(h,color,m,linewidth,2,linestyle,*)

40、;3、菜單設計(1)建立用戶菜單用戶菜單包含一級菜單和二級菜單,每一級菜單又包含許多菜單項,建立用戶菜單使用uimenu函數(shù),調用方法“一級菜單句柄=uimenu(圖形窗口句柄,屬性名1,屬性值1,屬性名2,屬性值2.)子菜單項句柄=uimenu(一級菜單句柄,屬性名1,屬性值1,.)(2)菜單對象常用屬性菜單對象的公共屬性有Children,Parent,Tag,Type,UserData,Visible, ButtonDownFcn,CreateFcn,DeleteFcn,特殊屬性有:Lable(菜單項的名字)Accelerator(快捷鍵),Callback(響應函數(shù),M文件或者命令),Checked,Enabled,Position,Separator。示例:見備注(3)快捷菜單右鍵彈出菜單,使用uicontextmenu函數(shù)和圖形對象UIContextMenu屬性來建立快捷菜單。步驟(1)使用uicontextmenu函數(shù)建立快捷菜單項;(2)使用uimenu為快捷菜單添加菜單項;(3)利用set函數(shù)將快捷菜單和某圖形對象聯(lián)系起來。示例:見備注4、對話框設計對話框

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論