ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:319.37KB ,
资源ID:3885357      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3885357.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第九章句柄图形.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第九章句柄图形.docx

1、第九章句柄图形第九章 句柄图形与第 6 章的高层指令相比, 本章的内容更深入 MATLAB 可视化功能的内核。 编写本章 的目的有两个:一,使读者更深入地理解高层绘图指令,从而可绘制出更精细更生动更个 性的图形;二,使读者能利用低层图形指令和图形对象属性开发专用绘图函数。本章在内容安排上有如下考虑:保证概念、结构和方法的完整性 :本章的前 6 节内容按由表及里、由浅入深的原则系 统阐述句柄图形体系、图形对象、属性和操作方法。突出要点、 新点和难点 :句柄图形体系有 11 个基本图形对象, 每个对象的属性少则 20 几个,多则近百个。对此, MATLAB 自带资料有详尽的文字说明。因此,本章只对

2、最 常用的、不可或缺的、以及较难掌握的内容进行说明。强调“可操作性”体现“范例引导概念”的本书宗旨 :针对 MATLAB 自带资料缺少 完整、可操作应用实例的 弱点,本章设计了 17个算例,其中 9 个精心设计的完整应用 范例就占本章一半以上篇幅。读者通过阅读或操作这些范例,可掌握各指令、属性之 间的有机配合,从而更具体更真切地理解句柄图形。在本章内容正式展开之前, 先把 MATLAB 随带资料中涉及各对象属性的文件及查阅方 法罗列如下。读者应重视这些最原始、最权威、最细节、任何其它书籍不能代替的资料。使用 Adobe Acrobat Reader 阅读(或打印)以下 PDF 文件helppd

3、f_docmatlab ;helppdf_docmatlab, , ;使用 Help Navigator/Browser 帮助导航 /浏览器或直接指令 help 查看有关图形对象的资 料。如 help figure 可直接得到有关图对象的属性描述。利用 get , set 指令在 MATLAB 指令窗中,直接查询对象属性。本章内容已根据 MATLAB6.5 版中运行情况修正。但值得指出: MATLAB 从 5.x 版向6.x 版的升级对本章内容的扩展和影响很小。9.1句柄图形体系9.1.1图形对象、对象句柄和句柄图形树结构( 1)图形对象(2)句柄( 3)句柄图形的结构9.1.2对象属性(1)

4、属性(2)缺省属性9.2图形对象的操作9.2.1图形对象创建指令一览9.2.2对象句柄的获取方法9.2.2.1基本方法(1)从图形创建指令获得句柄(2)追溯法获取图柄( 3)当前对象句柄的获取( 4)根据对象特性获取句柄(5)根据对象“标签”获取句柄9.2.2.2句柄获取示例【例 9.2.2.2-1】画网线图, 并得相应句柄; 追溯法找所在图形窗句柄; gcf 和 gca 演示。 省篇幅,图形略)clf reset;H_mesh=mesh(peaks(20)H_grand_parent=get(get(H_mesh,Parent),Parent)disp( 图柄 轴柄 ),disp(gcf g

5、ca)H_mesh =100.0016H_grand_parent =1图柄 轴柄1.0000 99.0010【例 9.2.2.2-2 】低层指令绘图,获得句柄;获取同轴上字对象的句柄和相应对象类型。(为 省篇幅,图形略)clf reset,t=(0:100)/100*2*pi;H_line=line(Xdata,t,Ydata,sin(t) text(pi,0.8,fontsize14sin(t)H_c=get(get(H_line,parent),children)T=get(H_c,Type)H_line =99.0011H_c =101.000599.0011T =textline【例

6、 9.2.2.2-3 】findobj 指令的使用。(为省篇幅,图形略) clf reset,t=(0:pi/100:2*pi);tt=t*1 1;yy=sin(tt)*diag(0.5 1); plot(tt,yy),Hb=findobj(gca,Color,b)Hb =99.00129.3对象属性的获取和设置9.3.1创建对象时设置属性9.3.2get 和 set9.3.3对象属性的缺省设置和查询9.3.4属性查询和设置示例【例 9.3.4-1】创建二维图形时,分别用元胞数组和构架数组设置对象属性。 clf reset,x=0:pi/12:2*pi;PN1=Color, LineWidth

7、,Marker;PV1=1 0 0, 5 , d; plot(sin(x),cos(x),PN1,PV1) axis square offPS.Color=0.7 0.7 0;PS.LineWidth=2; line(sin(7*x),cos(7*x),PS);图 9.3-1【例 9.3.4-2 】本例演示:影响 line 或 plot 画线时线型和色彩的“父”对象设置。出于篇幅 考虑,本节算例的图形都被删去。如要观察指令产生的图形,请读者自己运行相应指令。(1) t=(0:pi/50:2*pi);k=0.4:0.1:1;Y=cos(t)*k;line(t,Y,Color,1 0 0,Line

8、Style,-.) %(2)clf resetset(gca,ColorOrder,0 0 0;0.7 0.7 0.7,LineStyle,-|:) %line(t,Y)(3)clf resetset(gcf,DefaultAxesLineStyleOrder,-|:); % set(gcf,DefaultAxesColorOrder,1 0 0;0 0 1);line(t,Y)9.4为低层指令绘图准备图 /轴9.4.1NextPlot 属性9.4.2准备图 /轴的简捷指令 newplot9.4.3高层绘图文件的形成【例 9.4.3-1 】高层作图函数 surf.m 文件与底层作图指令 sur

9、face 的关系。 surf.mfunction h = surf(varargin)cax = newplot;if nargin = 0error( Not enough input arguments. )elseif nargin = 1if min( size( varargin1 ) ) = 1error( Input argument must be a matrix not a vector or a scalar )elsehh = surface(varargin1);endelsehh = surface(varargin:);endnext = lower(get(ca

10、x, NextPlot );if isholdview(3)grid onendif nargout = 1h = hh;end9.5图形窗的色彩资源和光标属性9.5.1色彩资源9.5.2光标指针9.5.2.1预定义的指针形状9.5.2.2自定义指针形状9.6轴对象9.6.1轴位框的几何属性和多轴位框9.6.2图形名和坐标轴名的句柄操作9.6.3轴刻度的属性控制9.6.4坐标轴尺度、方向、位置属性9.6.5照相机属性9.7句柄图形应用专题9.7.1光标形状的自制【例 9.7.1-1】自制光标指针形状(1)bdw=0.01;tpw=0.15;pos=1/2+bdw,2/3+bdw,1/2-2*b

11、dw,1/3-bdw-tpw; % figure(Units,normalized,Position,pos,Color,0.9,0.65,0)% set(gcf,Name, 试验窗 ) %(2) 步骤一:步骤二:P=ones(16,16)*NaN;P(1,5)=1;P(2:14,4)=1;P(15,5)=1;P(16,6:11)=1;P(15,12)=1;P(9:14,13)=1;P(2:9,6)=1;P(9,7)=1;P(8,8)=1;P(9,9)=1;P(8,10)=1;P(9,11)=1;P(8,12)=1;P(2:14,5)=2;P(10:15,6:11)=2;P(9,8)=2;P(

12、9,10)=2;P(9:14,12)=2;set(gcf,Pointer,Custom,PointerShapeCData,P,PointerShapeHotSpot ,2,5)9.7.2任意布置子图和轴外注释【例 9.7.2-1】本例演示: axes 轴位框设计、 rectangle 的运用、及轴外注释。所谓轴外注释, 实际上是使用了两个轴位框。一个轴位框充满全部图形窗,其坐标框被隐去,而只写注释 文字。而另一个比较小的轴位框用于绘图。这样从外表看去,注释就处于那小轴位框的外 部。clf zeta2=0.2 0.4 0.6 0.8 1.0;n=length(zeta2);for k=1:n;

13、Numk,1=1;Denk,1=1 2*zeta2(k) 1;end S=tf(Num,Den);t=(0:0.4:20);Y,x=step(S,t);tt=t*ones(size(zeta2);%clf reset,H=axes(Position, 0, 0, 1, 1, Visible, off); %str1=fontname 隶书 二阶系统阶跃响应 ; str2=y(t) = 1 - beta-1e-zetatsin(betat + theta); str3= ;str4=fontname 隶书 其中: ; str5=beta = (1 - zeta2)0.5;str6=theta =

14、 arctg(beta/zeta);str7=zeta = .2, .4, .6, .8, 1;%set(gcf, CurrentAxes,H)text(0.01, 0.73, str, FontSize, 12) h1=axes(Position, 0.45, 0.45, 0.5, 0.5);ribbon(tt,Y,0.4)% set(h1,XTickLabelMode,manual,XTickLabel,0|0.4|0.8|1.2);% set(h1,ZTickLabel,0|1.0|2.0);%set(get(h1,XLabel),String,zeta rightarrow,Rotat

15、ion,17.5) set(get(h1,YLabel),String,leftarrow t,Rotation,-25) set(get(h1,Zlabel),String,y rightarrow) h2=axes(Position,0.03, 0.08, 0.27, 0.27);%plot(tt,Y) %h3=axes(Position,0.37,0.04,0.63,0.32); %set(h3,Xlim,0,1.2,Ylim,0,0.5) %set(h3,DataAspectRatio,1 1 1) %set(h3,ColorOrder,0,0,0) %set(h3,Visible,o

16、ff) % hh1=rectangle(Position,0.5,0.2,0.4,0.2,Curvature,0,0);% hh2=rectangle(Position,0.2,0.26,0.08,0.08,Curvature,1,1);% xx1=0.05:0.01:0.2;xx2=0.28:0.02:0.5;xx3=0.9:0.02:1.1;xx4=0.24:0.02:1;yy5=0.1:0.02:0.26;yy6=0.1:0.02:0.3;yy1=0.3*ones(size(xx1);yy2=0.3*ones(size(xx2);yy3=0.3*ones(size(xx3);yy4=0.

17、1*ones(size(xx4);xx5=0.24*ones(size(yy5);xx6=ones(size(yy6);line(xx1,yy1);line(xx2,yy2);line(xx3,yy3);line(xx4,yy4); line(xx5,yy5);line(xx6,yy6) line(0.17,0.3,Marker,MarkerFaceColor,k) line(0.47,0.3,Marker,MarkerFaceColor,k) line(1.1,0.3,Marker,MarkerFaceColor,k) line(0.24,0.23,Marker,MarkerFaceColo

18、r,k)line(0.17,0.35,Marker,+) text(0.27,0.23,-) text(0.05,0.35,u(t) text(1,0.35,y(t) text(0.6,0.26,s2 + 2zetas); xx7=0.56:0.02:0.84;yy7=0.3*ones(size(xx7);line(xx7,yy7) text(0.68,0.35,1)图 9.7-3二阶系统阶跃响应1.0-1 - zty(t) = 1 -其中:b-1 e- zt sin(bt + q)0b = (1 -2 0.5 z)? 2.0q = arctg(b/ z)1.0z = .2, .4,.6, .

19、8, 10201y(t)-2s + 2 zs9.7.3 制作个性化双坐标系【例 9.7.3-1】制作一个双坐标系用来表现高压和低温两个不同量的过渡过程。 tp=(0:100)/100*5;yp=8+4*(1-exp(-0.8*tp).*cos(3*tp);tt=(0:500)/500*40;yt=120+40*(1-exp(-0.05*tt).*cos(tt);%clf reset,h_ap=axes(Position,0.13,0.13,0.7,0.75); set(h_ap,Xcolor,b,Ycolor,b,Xlim,0,5,Ylim,0,15); nx=10;ny=6;pxtick=0

20、:(5-0)/nx):5;pytick=0:(15-0)/ny):15; set(h_ap,Xtick,pxtick,Ytick,pytick,Xgrid,on,Ygrid,on) h_linet=line(tp,yp,Color,b);set(get(h_ap,Xlabel),String, set(get(h_ap,Ylabel),String, h_at=axes(Position,get(h_ap,Position); set(h_at,Color,none,Xcolor,r,Ycolor,r);set(h_at,Xaxislocation,top) set(h_at,Yaxisloc

21、ation,right,Ydir,rev) set(get(h_at,Xlabel),String,fontsize15fontname rightarrow (分) ) set(get(h_at,Ylabel),String, fontname 隶书 零下温度 ) set(h_at,Ylim,0,210) line(tt,yt,Color,r,Parent,h_at)时间 rightarrow (分) ) 压力 rightarrow(times10 5 Pa )( circC )fontsize15% 时 间leftarrow%00 0.51 1.5 2 2.5 3 3.5 4 4.5xpm

22、=get(h_at,Xlim); txtick=xpm(1):(xpm(2)-xpm(1)/nx):xpm(2); tytick=0:(210-0)/ny):210;set(h_at,Xtick,txtick,Ytick,tytick)度温下零?)C0 0 42105时时 ? 时时时图 9.7-49.7.4 连续变焦和飞驰图形【例 9.7.4-1】通过 CameraPosition 设置的不断变化,使地球迎面飞来,贯穿而过,从地球 另一面飞离而去。但在整个飞行过程中,相机镜头始终对着地球。(1)earth_zzy.mfunction earth_zzy(ap)%erath_zyy.m% loa

23、d topofigure( colormap ,topomap1, Color ,.8 .8 .8); % x,y,z = sphere(50);spectRatio = 1 1 1;oxAspectRatioMode = auto ;fa = axes( Visible , off , azzy);ntStrength = 0.1;seStrength = 1;larColorReflectance = .5; larExponent = 20; larStrength = 1;FaceLighting , phong , FaceColor , textureview(-17 26) (2

24、) earth_zzy(0)(3)fly_zzy.m% % % % % % %fly_zzy.m earth_zzy(0) set(gca, CameraViewAngleMode , manual ) pos=get(gca, CameraPosition );tar=get(gca, CameraTarget ); kk=(0:2:40)/15;nk=length(kk);for i=1:nk-1newpos=pos-kk(i)*(pos-tar);set(gca, CameraPosition ,newpos) drawnowend4)fly_zzy【例 9.7.4-2 】利用属性 Ca

25、meraViewAngle 产生飞驰效应。本例也用地球图形演示。在相机 视角连续变化下,地球飞离,直到消失。fly_zzy2.m%fly_zzy2.m earth_zzy(1) set(gca, CameraViewAngleMode , manual ) ang=get(gca, CameraViewAngle );kk=(1:50)/50;nk=length(kk);for i=1:nk newang=ang+kk(i)*(180-ang); set(gca, CameraViewAngle ,newang) drawnowend9.7.5实时动画9.7.5.1擦除属性 EraseMode

26、9.7.5.2屏幕刷新指令 drawnow9.7.5.3动画制作示例【例 9.7.5.3-1 】制作红色小球沿一条带封闭路径的下旋螺线运动的实时动画。(1)anim_zzy1.mfunction f=anim_zzy1(K,ki)% anim_zzy1.m% t1=(0:1000)/1000*10*pi;x1=cos(t1);y1=sin(t1);z1=-t1;t2=(0:10)/10;x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2); t3=t2;z3=(1-t3)*z1(end);x3=zeros(size(z3);y

27、3=x3;t4=t2;x4=t4;y4=zeros(size(x4);z4=y4;x=x1 x2 x3 x4;y=y1 y2 y3 y4;z=z1 z2 z3 z4;plot3(x,y,z, b ), axis off%, xor );h=line( Color ,1 0 0, Marker , . , MarkerSize ,40, EraseMode%n=length(x);i=1;j=1;while 1set(h, xdata ,x(i), ydata ,y(i),zdata ,z(i);drawnow;%pause(0.0005)%i=i+1;if nargin=2 & nargout

28、=1if (i=ki&j=1);f=getframe(gcf);end%endif ini=1;j=j+1;if jK; break ;end end end(2) f=anim_zzy1(2,450);(3) image(f.cdata),axis off图 9.7-69.7.6surface 指令衍生不同曲面【例 9.7.6-1】演示高层指令 mesh, surf等指令是如何由 surface 衍生而得。 clf reset,t=(0:20)/20;r=2.5-cos(2*pi*t);x,y,z=cylinder(r,40);fc = get(gca,color); h=surface(x,y,z,FaceColor,fc,EdgeColor,flat,FaceLighting, none,EdgeLighting,flat);% view(3); grid on;axis off图 9.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1