书籍:Matlab实用教程
工具:Matlab2021a
电脑信息:Intel® Xeon® CPU E5-2603 v3 @ 1.60GHz
系统类型:64位操作系统,基于X64的处理器 windows10 专业版
第4章 Matlab的符号计算计算的可视化和GUI设计
4.6 句柄图形
4.6.1 句柄图形体系
4.6.2 图形对象的操作
1、图形对象的创建
2、对象句柄的获取
x=0:0.1:2*pi; y=sin(x).*exp(-x); plot(x,y) text(pi,0,'\leftarrowexp(-x)*sin(x)=0') h_fig=gcf h_axes=gca h_obj=gco findobj h_children=get(h_axes,'children') h_parent=get(h_axes,'parent')h_fig = 1 h_axes = -34.638 h_obj = [](0x0) ans = 0 1.0000 -34.6376 -40.5267 -39.7714 h_children = -40.527 -39.771 h_parent = 1
4.6.3 图形对象的获取和设置
h_fig=figure('color','red','menubar','none','position',[0,0,300,300])ps.color='red' ps.position=[0,0,300,300] ps.menubar='none' h_fig=figure(ps) p=get(h_fig,'position') c=get(h_fig,'color')ps = scalar structure containing the fields: color = red ps = scalar structure containing the fields: color = red position = 0 0 300 300 ps = scalar structure containing the fields: color = red position = 0 0 300 300 menubar = none h_fig = 1 p = 0 0 300 300 c = 1 0 0h_fig=figure('color','red','menubar','none','position',[0,0,300,300]) x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line1=plot(x,y,'b') title('y=sin(x)*exp(-x)') set(gca,'ygrid','on') line1width=get(h_line1,'linewidth')h_fig=figure('color','red','menubar','none','position',[0,0,300,300]) x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line1=plot(x,y,'b') title('y=sin(x)*exp(-x)') set(gca,'ygrid','on') line1width=get(h_line1,'linewidth') set(h_line1,'linewidth',3)h_fig=figure('color','red','menubar','none','position',[0,0,300,300]) x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line1=plot(x,y,'b') title('y=sin(x)*exp(-x)') set(gca,'ygrid','on') line1width=get(h_line1,'linewidth') set(h_line1,'linewidth',3) h_title=get(gca,'title') titlefontsize=get(h_title,'fontsize') set(h_title,'fontsize',15)h_fig=figure('color','red','menubar','none','position',[0,0,300,300]) x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line1=plot(x,y,'b') title('y=sin(x)*exp(-x)') set(gca,'ygrid','on') line1width=get(h_line1,'linewidth') set(h_line1,'linewidth',3) h_title=get(gca,'title') titlefontsize=get(h_title,'fontsize') set(h_title,'fontsize',15) h_text1=text(pi,0,'\downarrow') text1pos=get(h_text1,'position') h_text2=text(text1pos(1,1),text1pos(1,2)+0.025,'exp(-x)*sin(x)=0') set(h_text1,'fontsize',13,'color','red')h_fig=figure('color','red','menubar','none','position',[0,0,300,300]) x=0:0.1:2*pi; y=sin(x).*exp(-x); h_line1=plot(x,y,'b') title('y=sin(x)*exp(-x)') set(gca,'ygrid','on') line1width=get(h_line1,'linewidth') set(h_line1,'linewidth',3) h_title=get(gca,'title') titlefontsize=get(h_title,'fontsize') set(h_title,'fontsize',15) h_text1=text(pi,0,'\downarrow') text1pos=get(h_text1,'position') h_text2=text(text1pos(1,1),text1pos(1,2)+0.025,'exp(-x)*sin(x)=0') set(h_text1,'fontsize',13,'color','red') set(h_text2,'fontsize',17,'color','green')
4.7 图形用户界面设计
4.7.1 可视化的界面环境
4.7.2 创建菜单
h_fig=gcf h_menu=uimenu(h_fig,'label','Paint')h_fig = 1 h_menu = -34.6384.8 动画
4.8.1 以电影方式产生动画
n=20; for i=1:n x=0:0.1:i; y=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3)); plot(x,y) axis([0,20,0,1.5]) M(i)=getframe; end movie(M,3)
4.8.2 以对象方式产生动画
x=0:0.1:20; y=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3)); plot(x,y) h=line(0,0,'color','red','marker','.','markersize',40,'erasemode','xor') for i=1:length(x) set(h,'xdata',x(i),'ydata',y(i)); pause(0.005) drawnow enderror: __go_line__: set: unknown line property erasemode, unable to create graphics handle error: called from __line__ at line 161 column 20 line at line 84 column 10 main at line 4 column 2 /opt/run_user_code.m at line 1 column 1x=0:0.1:20; y=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3)); plot(x,y) h=line(0,0,'color','red','marker','.','markersize',40) for i=1:length(x) set(h,'xdata',x(i),'ydata',y(i)); pause(0.005) drawnow end