第五章matlab句柄绘图
- 格式:ppt
- 大小:412.00 KB
- 文档页数:52
西北农林科技大学实验报告学院名称:理学院专业年级:姓名:学号:课程:数学软件实验报告日期:2014年11月22日实验六MATLAB的句柄绘图与GUI界面设计一、实验目的MATLAB语言的句柄绘图可以对图形的各基本对象进行更为细腻的修饰,能产生更为复杂的图形,而且为动态图形的制作奠定了基础。
本次实验的目的是了解图形的基本结构,掌握图形对象之间的关系,熟悉图形对象属性的获取、设置与修改。
并能初步使用MATLAB 的GUI界面设计进行界面的设计,为将来进行软件开发打好基础。
二.实验要求MATLAB的底层图形修饰方法十分的丰富,通过本次实验,要求能体会句柄图形的概念,熟悉根屏幕、图形窗口、界面控制、界面菜单、轴、线、面、字、块、像等基本图形对象的创建和修改,熟练掌握基本图形对象的属性获取、设置与修改,会利用对象属性修改图形,会创建与修改界面控制与界面菜单。
能根据需要使用消息对话框、警告对话框、输入对话框、提示对话框、列表对话框、进度指示条等。
能初步设计出自己较为满意的GUI图形用户界面。
三.实验内容一、句柄图形的概念句柄图形(Handle Graphics):是一种面向对象的绘图系统。
该系统提供创建计算机图形所必须的各种软件。
它所支持的指令,可直接创建线、文字、网线、面以及图形用户界面。
在MATLAB中的图形系统中,所有的图形操作都是针对图形对象而言的,每个对象从创建时起就被赋予了唯一的标识,这种标识就是该图像的句柄。
1.图形对象MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。
系统将每一个对象按树型结构组织起来。
每个具体图形不必包含每个对象,但每个图形必须具备根屏幕和图形窗口。
2.图形对象句柄MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。
句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
matlab图形操作本⽂对matlab中利⽤图形句柄对图⽚属性进⾏设置的操作进⾏简单的总结说明:(1)对图窗和坐标轴属性进⾏整体设置可以通过gcf和gca语句获取当前图窗句柄和坐标轴句柄,通过该句柄可以对图窗和坐标轴的各项属性进⾏操作。
图窗和坐标轴分别包含如下属性:% 图窗属性... ...Children: [1×1 Axes] Color: [0.9400 0.9400 0.9400]Colormap: [256×3 double] CurrentAxes: [1×1 Axes]... ...InnerPosition: [680 558 560 420] PaperUnits: 'centimeters'OuterPosition: [672 550 576 514] Position: [680 558 560 420]Units: 'pixels'% 坐标轴属性... ...Box: 'on' BoxStyle: 'back'Children: [1×1 Line] Color: [1 1 1]FontAngle: 'normal' FontName: 'Helvetica'FontSize: 10 FontSizeMode: 'auto'FontSmoothing: 'on' FontUnits: 'points'FontWeight: 'normal' GridColor: [0.1500 0.1500 0.1500]GridLineStyle: '-' Legend: [0×0 GraphicsPlaceholder]LineWidth: 0.5000 OuterPosition: [0 0 1 1]Parent: [1×1 Figure] Position: [0.1300 0.1100 0.7750 0.8150]Title: [1×1 Text] TitleFontWeight: 'normal'Units: 'normalized' UserData: []View: [0 90] Visible: 'on'... ...XAxis: [1×1 NumericRuler] XAxisLocation: 'bottom'XColor: [0.1500 0.1500 0.1500] XColorMode: 'auto'XDir: 'normal' XGrid: 'off'XLabel: [1×1 Text] XLim: [0 100]XScale: 'linear' XTick: [0 10 20 30 40 50 60 70 80 90 100]XTickLabel: {11×1 cell} XTickLabelRotation: 0YAxis: [1×1 NumericRuler] YColor: [0.1500 0.1500 0.1500]YGrid: 'off' YLabel: [1×1 Text]YLim: [0 100] YScale: 'linear'YTick: [0 10 20 30 40 50 60 70 80 90 100] YTickLabel: {11×1 cell}YTickLabelRotation: 0 ZLabel: [1×1 Text]ZLim: [-1 1] ZScale: 'linear'ZTick: [-1 0 1] ZTickLabel: ''ZTickLabelRotation: 0... ...上⾯仅仅是展⽰了图窗和坐标轴部分重要且常⽤的属性,它们的全部属性可通过查matlab的帮助⽂档或直接在matlab的命令⾏上输⼊gcf、gca或通过如下图所⽰的属性窗⼝进⾏查询和设置。
matlab中的句柄在matlab中,每一个对象都有一个数字来标识,叫做句柄.当每次创建一个对象时,matlab就为它建立一个唯一的句柄句柄中包含有该对象的相关信息参数,可以在后续程序中进行操作,改变其中的参数,以便达到不同的效果例如:gcf 是返回当前被激活的窗口的句柄。
你可以认为它就指代当前窗口。
figure(gcf)打开这个窗口。
这两天在看句柄式图形方面的东西,以下是我在看书过程中整理的学习笔记,比较详细的介绍了句柄以及与其密切相关的各种图形对象和它们的属性。
希望能对初学Matlab界面设计的朋友们有所帮助。
GUI学习笔记:句柄式图形常用函数:(1)get(h)返回句柄值h所指定的图形对象的所有属性名称与相对应的属性值(2)a = get(h)返回由句柄值h所指定的图形对象的属性结构数组,并且该数组的字段名称就是该对象的属性名称。
(3)a = get(0,'factory')返回所有能由用户设置的属性的默认定义值。
(4) a = get(0,'FactoryObjectTypePropertyName1','FactoryObjectTypePr opertyName2',...)返回指定对象类型指定的属性值,输入参数FactoryObjectTypePropertyName为一个关键词,由字符Factory 与图形对象类型(如Figure)还有属性名称(如Color)组成。
a = get(0,'factoryFigureColor')返回Figure对象的Color属性值。
(5) a = get(h,'DefaultObjectTypePropertyName1','DefaultObjectTypePr opertyName1',...)返回句柄值为h的对象指定属性的默认值。
如“DefaultFigureColor”。
详尽全⾯的matlab绘图教程Matlab绘图强⼤的绘图功能是Matlab的特点之⼀,Matlab提供了⼀系列的绘图函数,⽤户不需要过多的考虑绘图的细节,只需要给出⼀些基本参数就能得到所需图形,这类函数称为⾼层绘图函数。
此外,Matlab还提供了直接对图形句柄进⾏操作的低层绘图操作。
这类操作将图形的每个图形元素(如坐标轴、曲线、⽂字等)看做⼀个独⽴的对象,系统给每个对象分配⼀个句柄,可以通过句柄对该图形元素进⾏操作,⽽不影响其他部分。
本章介绍绘制⼆维和三维图形的⾼层绘图函数以及其他图形控制函数的使⽤⽅法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。
⼀.⼆维绘图⼆维图形是将平⾯坐标上的数据点连接起来的平⾯图形。
可以采⽤不同的坐标系,如直⾓坐标、对数坐标、极坐标等。
⼆维图形的绘制是其他绘图操作的基础。
⼀.绘制⼆维曲线的基本函数在Matlab中,最基本⽽且应⽤最为⼴泛的绘图函数为plot,利⽤它可以在⼆维平⾯上绘制出不同的曲线。
1. plot函数的基本⽤法plot函数⽤于绘制⼆维平⾯上的线性坐标曲线图,要提供⼀组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的⼆维曲线。
plot函数的应⽤格式plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。
例51 在[0 , 2pi]区间,绘制曲线程序如下:在命令窗⼝中输⼊以下命令>> x=0:pi/100:2*pi;>> y=2*exp(-0.5*x).*sin(2*pi*x);>> plot(x,y)程序执⾏后,打开⼀个图形窗⼝,在其中绘制出如下曲线注意:指数函数和正弦函数之间要⽤点乘运算,因为⼆者是向量。
例52 绘制曲线这是以参数形式给出的曲线⽅程,只要给定参数向量,再分别求出x,y向量即可输出曲线:>> t=-pi:pi/100:pi;>> x=t.*cos(3*t);>> y=t.*sin(t).*sin(t);>> plot(x,y)程序执⾏后,打开⼀个图形窗⼝,在其中绘制出如下曲线以上提到plot函数的⾃变量x,y为长度相同的向量,这是最常见、最基本的⽤法。
Matlab绘图代码以及代码说明文档1.绘制椭圆曲线1)clear:指令,用于清空工作空间2)clc用于清空命令窗口.3)color=’gbkymcrgb’;表示一串字符,可以理解为一个字符的数组(或向量).4)a=4。
5:-0。
5:0.5;上述的a为一个向量(或数组),其取值从4.5开始,每间隔—0。
5取一个数,直到0.5为止。
即a=4.5,4,3.5…0.5;5)for——end是一个循环体,以end结束。
for i=1:1:length(a)表示循环的次数,i从1开始,每次加1,直到length(a)为止,length(a)表示数组(向量)a的长度。
6)a(i)表示a的第i个元素,a(1)=4.5;7)x。
*x表示向量x对应的元素相乘,由于x是向量,因此称号前面有一点。
8)((a(i))^2)表示a的第i个元素的平方。
9)sqrt(a),是一个函数,对a进行开方.10)color(i)是字符数组color的第i个元素,数组前面有定义。
11)hold on是图像保持,就是绘制下一个椭圆时,上一个已经绘制的仍在图形界面上,不会消失。
2.多图形绘制1)sin(t)表示对t求它的正弦,是一个正弦函数.2)subplot(2,2,1),是一个函数,第一个参数2表示将绘图的窗口分割成两行显示;第二个参数2表示将绘图的界面分为两列显示,因此为两行两列4块显示。
第三个参数1表示在第1块(从左向右,从上向下)绘制图像。
3)plot(t1,y1,'.r’)其中,"。
”表示图像的形状为“点”,r为颜色。
4)axis([0,3。
1427,—1,1])表示固定坐标轴,只显示x轴的0到3.1427的区间;y轴的—1到1的区间.5)plot(t1,y1,'b'),由于b前面没有一点,因此是坐标点之间的连线。
6)title(’子图(3)’)表示该图的标题为“子图(3)”,是一个函数,参量为字符串。
matlab legend 句柄
在MATLAB中,图例(legend)句柄是一个指向图例对象的引用,允许用户在程序中对图例进行操作。
图例句柄可以用于更改图例的
属性,如位置、字体大小、颜色等,或者在程序中动态更新图例内容。
要获取图例句柄,可以使用legend函数的输出参数,例如:
matlab.
h = legend('Plot1', 'Plot2');
这里的h就是图例的句柄。
然后可以使用h来操作图例,例如
更改位置:
matlab.
set(h, 'Location', 'NorthEast');
或者更改字体大小:
matlab.
set(h, 'FontSize', 12);
通过使用图例句柄,用户可以在程序中灵活地控制图例的外观和行为。
这对于需要自动化生成图形的程序非常有用,因为可以在不同条件下动态修改图例内容和属性。
同时,图例句柄也可以用于与其他图形对象进行交互,实现更复杂的图形操作和交互式界面设计。
希望这个回答能够帮助到你理解MATLAB中图例句柄的概念和用法。
下面程序是12月26日课题组例会报告的附件内容,叙述了matlab中Cell的概念,列举了画图要用到的一些常用命令。
function [ output_args ] = plot_operation( input_args )%PLOT_OPERATION Summary of this function goes here% 本程序同时写明大规模程序的习惯,就是像学位论文那样分章节,有标题,即Cell的写法。
% 各Cell类似于Word中的各节。
% Cell的定义:在题头使用'%% XXXXXXX'的形式,即“双百分号+空格+Cell名称”的写法。
% 这种写法用工具条中的“双百分号”按钮可以直接查看各节标题,类似于word中的大纲视图。
% 采用'cell'的格式的程序,运行时请点击Ctrl+Shift+Enter,就可以一个Cell一个Cell的运行了。
%% 1. 初始定义clcclearclose all % 关闭所有绘图窗口t=0:0.01:2*pi;y1=sin(t);y2=cos(t);% 设置端点,调试时需要一段一段调试。
%% 2.画图,句柄操作f1=figure(1)l1=plot(t,y1,'.r');hold onl2=plot(t,y2,'b*');handle_legend=legend([l2],'余弦') %只显示第2条线的图例handle_title=title('正弦曲线'); %标题handlex=xlabel('时间/s') %横坐标名称handley=ylabel('alpha_\alpha^\beta') %上标,下标,希腊字母表达式set(gca,'XTicklabel','第1列|第3列| ') %设置坐标轴上的标识handle_t=text(2,-1.1,'sine curve y_1') %在图上显示文字set(gca,'fontsize',30) %设置坐标轴文字大小set(handley,'fontsize',30) %设置坐标轴名称文字大小hold off%% 3. 分图表示f2=figure(2) %上一张图不关掉,重新开一个新图%3.1 开一个6张小图的图片%在第1图位绘制正弦曲线subplot(321)plot(t,y1)title('正弦')%3.2 在第2图位绘制余弦曲线subplot(322)plot(t,y2)title('余弦');%3.3 在第4图位绘制限定坐标范围的余弦曲线subplot(324) %断点绘图plot(t,y1);axis([0,3,-1,1])title('断点绘图,指定坐标范围')%% 4.保存结果%4.1 保存第1幅图,然后关闭saveas(f1,'正余弦曲线.emf')close(f1)%4.2 保存第2幅图,然后关闭figure(2) %打开图片为当前图片% 控制图片大小,输出为emf格式style = hgexport('factorystyle');hgexport(gcf,'size_test',style,'format','meta','width','800','height','600',...'units','points','bounds','loose');% 3个点表示代码换行,对于很长的语句,这中写法便于阅读saveas(gcf,'综合绘图.emf')% gcf 为当前图片的句柄。
matlab绘图5 MATLAB的可视化功能5.1 基本绘图⼊门数据可视化是研究科学、认识世界不可缺少的⼿段。
⼈们很难直接感受⼀⼤堆数据的含义,⽽数据图形则能使⼈们⽤视觉器官直接感受到数据的许多内在本质。
MATLAB不仅在计算⽅⾯⽆与伦⽐,⽽且在数据可视化⽅⾯也有上佳表现。
MATLAB能可以⼆维、三维乃⾄四维的图形表现数据。
通过对图形线型、渲染、⾊彩、光线、视⾓等品性的处理,把计算数据的特征表现得淋漓尽致。
MATLAB图形系统建⽴在⼀组“图形对象”基础之上,它的核⼼是图形句柄。
MATLAB提供有两个层⾯的绘图指令:⼀组是直接对图形句柄进⾏操作的底层指令,它们灵活多变,数据表现能⼒强;⼀组是建⽴在底层指令基础上的⾼层指令,它们简单明了,易学易⽤。
另外,MATLAB也能处理不同格式的图形图象,制作简单动画。
⾄于更专业的图象处理,可以使⽤图象处理⼯具箱。
1 MATLAB⽣成⼀个图形的基本步骤:按上述步骤⽣成的图形如下所⽰:2 常⽤画线指令:3 常⽤画线指令使⽤举例(⼀):3 常⽤画线指令使⽤举例(⼆):4 “线型-标记-颜⾊”字符串的取值:5 常⽤坐标设置和图形标注命令:6 常⽤坐标设置和图形标注命令使⽤举例:7 标注中TeX字符串的使⽤:图形标注中可以使⽤特殊格式的特殊字符。
描述这种特殊格式的字符串符合TeX规范。
这些字符串由修饰符引导,修饰符的默认作⽤范围是字符串的结尾,也可以⽤{}显式定义。
常⽤的修饰符有:^(上标);_(下标);\bf(粗体);\it(斜体);\rm(正常);\fontsize{fontsize}(字体⼤⼩)等。
8 常⽤⾮英⽂字母的TeX格式字符串:例⼆维图形对象操作 x=linspace(-3,3,100); y1=sin(x*pi)+4;y2=x.^2; plot(x,[y1;y2]);xlabel('x');ylabel('y');text(-2.6,7,'\leftarrowx^2','fontsize',16); text(-1.2,5.1,'sin(x\pi)+4\rightarrow',...'fontname','courier',...%设置text 字体属性 'fontangle','italic',...%设置text 字体倾斜属性 'fontsize',14); %设置text 字体⼤⼩属性legend('sin(x\pi)+4','x^2',0); %添加图例 hold on; %设置绘图⽅式为保持 xf=linspace(-2,2,100); y1f=sin(xf*pi)+4;y2f=xf.^2;%从最左边开始,按逆时针⽅向在y1f 和y2f 上形成多边形并填充 fill([xffliplr(xf)],[y1f,fliplr(y2f)],'r');text(-1.2,2,'area between two functions');axis([-3 3 0 inf]); %设置坐标范围%设置坐标刻度,并在刻度标签上标注交点坐标(cx1,cy)和(cx2,cy) set(gca,'YTick',0:9);set(gca,'YTickLabel','0|1|2|3|cy|5|6|7|8|9'); set(gca,'XTick',-3:3);set(gca,'XTickLabel',{'-3' 'cx1' '-2' '0' '1' 'cx2' '3'})例65⼆维双坐标绘图 plotyy 函数的使⽤:已知,sin(2)ty Aeft απβ-=+分别绘制A=200, α=0.05, β=1, f=0.2和A=0.8, α=0.5, β=2, f=2时y 的图形,t=0:0.01:20;A1=200;alf1=0.05;bt1=1;f1=0.2;A2=0.8;alf2=0.5;bt2=2;f2=2;y1=A1*exp(-alf1*t).*sin(2*pi*f1*t+bt1);y2=A2*exp(-alf2*t).*sin(2*pi*f2*t+bt2);%⽤plot⽅式绘制双y轴曲线,并返回坐标盒和绘制曲线的句柄[AX,H1,H2]=plotyy(t,y1,t,y2,'plot');5.2 三维绘图1 三维线图例66 宝⽯项链t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,'b-d');view([-82,58]);box on;1) 基本指令2)常⽤函数的使⽤说明例66 Sinc函数表⽰的空间曲⾯[X,Y] = meshgrid(-8:.5:8);R = sqrt(X.^2 + Y.^2) + eps;Z = sin(R)./R;surf(X,Y,Z,'FaceColor','interp','EdgeColor','none','FaceLighting','phong'); daspect([5 5 1]);axis tight;view(-50,30);camlight leftx = rand(100,1)*16-8; y = rand(100,1)*16-8; r = sqrt(x.^2 + y.^2) + eps; z = sin(r)./r;xlin=linspace(min(x),max(x),33); ylin=linspace(min(y),max(y),33); [X,Y] = meshgrid(xlin,ylin); Z = griddata(x,y,z,X,Y ,'cubic'); mesh(X,Y ,Z); axis tight; hold on; plot3(x,y,z,'.','MarkerSize',15)例68 透视 [X0,Y0,Z0]=sphere(30); X=2*X0; Y=2*Y0; Z=2*Z0; surf(X0,Y0,Z0); shadinginterp; hold on, mesh(X,Y ,Z); colormap(hot), hidden off; axis equal; axis off; hold off-0.200.20.40.6例69 利⽤NaN对图形进⾏镂空处理P=peaks(30);P(18:20,9:15)=NaN;surfc(P);colormap(summer)light('position',[50,-10,5])lighting flatmaterial([0.9,0.9,0.6,15,0.4])例70利⽤0对图形进⾏剪切处理P=peaks(30);P(18:20,9:15)=0;surfc(P);colormap(summer)light('position',[50,-10,5])material([0.9,0.9,0.6,15,0.4])3 三维图形的精细控制1) 视⾓控制viewview([az ad]); view([vx,vy,vz])2) 照相机设置MATLAB绘制三维图形时,默认的视⾓为:⽅位⾓AZ=37.5,俯仰⾓EL=30。