MATLAB中图形的绘制、处理
MATLAB中图形的绘制、处理
学⽣姓名⾦悦悦专业电⼦信息⼯程 2011级116班学号
摘要:简述了图形的绘制、数字图像处理以及MATLAB三者之间的关系,针对图形的绘制的⽅法及MATLAB语⾔的应⽤环境,选择⼀些简单的图形让MATLAB实现,实现了MATLAB环境下的图形绘制以及⼀些简单的处理。
关键词:图形绘制、matlab、图形对象。
⼀、MATLAB的简介
MATLAB是MathWorks公司于1984年开发的,⽬前已经发展成国际上最流⾏、应⽤最⼴泛的科学与⼯程计算软件之⼀。MATLAB集矩阵运算、数值分析、图形显⽰和仿真等于⼀体,被⼴泛应⽤于⾃动控制、数学运算、计算机技术、图像信号处理、汽车⼯业和语⾳处理等⾏业,正是如此,各⼤⾼校纷纷将MATLAB正式列⼊本科⽣和研究⽣课程的教学计划,成为学⽣必须掌握的基本软件之⼀。
⼆、绘图的⼀般步骤
1、曲线数据准备
对于⼆维曲线,需要准备横坐标和纵坐标数据;对于三维曲⾯,则要准备矩阵参变量和对应的Z坐标。
2、指定图形窗⼝和⼦图位置
可以使⽤Figure命令指定图形窗⼝,默认时打开Figure1窗⼝,或使⽤subplot命令指定当前⼦图。
3、绘制图形
根据数据绘制曲线后,并设置曲线的绘制⽅式包括线型、⾊彩、数据点形等。
4、设置坐标轴和图形注释
设置坐标轴包括坐标的范围、刻度和坐标分割线等,图形注释包括图名、坐标名、图例、⽂字说明等。
5、仅对三维图形使⽤的着⾊和视点等设置
仅对三维图形还需要着⾊、明暗、灯光、材质处理,以及视点、三度(横、纵、⾼)⽐等设置。
6、图形的精细修饰
图形的精细修饰可以利⽤对象或图形窗⼝的菜单和⼯具条进⾏设置,属性值使⽤图形句柄进⾏操作。
7、按指定格式保存或导出图形
将绘制的图形窗⼝保存为.fig⽂件,或转换成其他图形⽂件。
三、⼆维图形的绘制
1、线形图、条形图和⾯积图
这⼏种图形在功能上⽐较相似,都是以直观的形式表⽰数据的分布特征。绘制线形图、条形图和⾯积图分别使⽤plot函数、bar函数和area函数。
x=[1 2 3 4 5 6];
y=[10 15 8 20 22 32];
bar(x,y);
colormap cool;
hold on
plot(x,y,’LineWidth’,3,’Color’,’r’,’LineStyle’,’--’);
⽣成图1。
2、饼图
饼图显⽰部分与整体之间的⽐例关系。下⾯⽤pie函数⽣成饼图。
x=[19.3 22.1 51.6];
explode=[0 0 1];
pie(x,explode)
colormap cool
⽣成图2。
3、误差条图
误差条图显⽰数据的置信区间或沿曲线的偏差。⽤errorbar函数误差条图。y=[10 6 17 13 20];
e=[2 1.5 1 3 1];
errorbar(y,e)
⽣成图3。
4、散点图
分别⽤scatter函数和scatter3函数绘制⼆维和三维散点图。
x=[1:40];
y=rand(size(x));
Scatter(x,y)
⽣成图4。
5、直⽅图
⽤hist函数绘制直⽅图。
Y=randn(10000,3);
hist(Y)
⽣成图5。
6、对数坐标图和半对数坐标图
⽤loglog函数绘对数-对数⽐例图,⽤semilogx函数和semilogy函数分别对x轴和y轴绘半对数坐标数据图。
7、多轴图
在同⼀个图中绘制坐标度量单位不同的图形,可以使图形表达更加简练。在有些情况下,多轴图有利于数据对⽐。利⽤plotyy 命令可以创建两套数据的图形,并同时使⽤左侧和右侧的y轴。对于每套数据,还可以应⽤不同的绘图函数。例如可以在同⼀幅图中组合线形图和⽕柴杆图。
t=0:pi/20/:2*pi;
y=exp(sin(t));
plotyy(t,y,t,y,’plot’,’stem’)
⽣成图6。
8、极坐标图
⽤polar函数绘极坐标图。
t=0:.01:2*pi;
polar(t,sin(2*t).*sin(2*t),’--r’)
⽣成图7。
9、等值线图
等值线图通过将空间上⼀定范围内值相等的点依次连接起来反映数据的分布特征。这种图在地质、⽓象、⼒学等领域有着⼴泛的应⽤,特点是简便、直观,⽽且⼆维等值线图还能表现三维信息。
Z=peaks(50);
[C,h]contour(interp2(Z,4));
text-handle=clabel(C,h);
set(text-handle,’BackgroundColor’,[1 1 .6],…
‘Edgecolor’,[.7 .7 .7])
Colormap jet
⽣成图8。
10、向量图
向量图⽤箭头显⽰图中各点处的向量⼤⼩和⽅向。其中,箭头指⽰的⽅向为向量的⽅向,箭头的长短表⽰向量⼤⼩。
[x,y,z]=peaks(30);
[dx,dy]=gradient(z,.2,.2);
contour(x,y,z)
hold on
quiver(x,y,dx,dy)
colormap autumn
grid off
hold off
⽣成图9。
11、帕累托图
帕累托图按降序⽤条形表⽰向量中的值。⽤pareto函数绘制帕累托图。
y=[8 9 50 20 3 10];
pareto(y)
⽣成图10。
12、⽕柴杆图
⽕柴杆图沿x轴将数据⽤直线段相对于基线显⽰在上下两侧,数据点⽤⼩圆圈或其他标记显⽰。⽤stem函数绘制⽕柴杆图。matlab直方图
t=linspace(-2*pi,2*pi,10);
h=stem(t,cos(t),’fill’,’--’);
set(get(h,’BaseLine’),’LineStyle’,’:’)
set(h,’MarkerFaceColor’,’red’)
⽣成图11。
13、彗星图
彗星图实际上是⼀个动画,⽤⼀个⼩圆圈(彗星头)跟踪屏幕上的数据点。彗星体是头后⾯的跟踪线段,彗星尾是跟踪整个函数的实线。⽤comet函数绘制彗星图。
t=0:01:2*pi;
x=cos(2*t).*(cos(t).^2);
y=sin(2*t).*(sin(t).^2);
comet(x,y);
⽣成图12。
14、罗盘图
罗盘图⽤起点在原点的箭头表⽰向量数据,数据为笛卡尔坐标中的值,显⽰在圆形⽹格中。⽤compass函数绘罗盘图。
Z=eig(randn(20,20));
compass(Z)
⽣成图13。
15、⽻列图
⽻列图沿⽔平轴在等间隔的点上显⽰向量。⽤feather函数绘制⽻列图。theta=(-90:10:90)*pi/180;
r=2*ones(size(theta));
[u,v]=pol2cart(theta,r);
feather(u,v);
⽣成图14。
16、阶梯图
阶梯图主要⽤于绘制数字采样数据的时间历史图形。⽤stairs函数绘制阶梯图。
x=linspace(-2*pi,2*pi,40);
stairs(x,sin(x))
⽣成图15。
17、玫瑰花图
玫瑰花图实际上是极坐标中的直⽅图,它根据数据值的范围进⾏分组,并显⽰数据的分布特征。每个组显⽰⼀瓣,⽤rose函数绘制玫瑰花图。
theta=2*pi*rand(1,50);
rose(theta)
⽣成图16.
四、简单三维图形的绘制
MATLAB绘制的三维图形包括三维曲线、三维⽹格线和三维表⾯图。三维图形与⼆维图形相⽐需要的数据是三维的,并且三维图形还增加了颜⾊表、光照、视⾓等设置。
1、三维⽹线图
⽹格图常⽤于表现⼆维平⾯或三维实体。作为前期处理,⽹格图常常⽤于建⽴⼆维、三维有限元计算对象的⼏何模型。其中的⽹格可以是三⾓形⽹格,也可以是四边形⽹格,还可以是其他多边形⽹格。Meshgrid函数就是⽤来在(x,y)平⾯上产⽣矩形⽹格。
[X,Y]=meshgrid(-3:125:3);
Z=peaks(X,Y);
meshc(X,Y,Z);
axis([-3 3 -3 3 -10 5])
⽣成图17.
2、三维表⾯图
三维表⾯图与⽹线图相似,但不同的是⽹线图中⽹格范围内的区域为空⽩,⽽三维表⾯图则⽤颜⾊来填充。MATLAB中三维表⾯图使⽤surf函数绘制,也是先得出⽹格顶点(X,Y),在计算出Z。
[X,Y,Z]=peaks(30);
surfc(X,Y,Z)
colormap hsv
axis([-3 3 -3 3 -10 5])
⽣成图18.
3、三维曲⾯图
三维曲⾯图在三维表⾯图的基础上⽣成,它对三维表⾯图中的三⾓形单元或四边形单元进⾏了平滑处理,使其成为曲⾯⽚,因⽽更接近实体外观。使⽤surfl函数,⽤基于⾊图的光照绘制表⾯图。
[x,y]=meshgrid(-3:1/8:3);
z=peaks(x,y);
surfl(x,y,z);
shading interp
colormap(gray);
axis([-3 3 -3 3 -10 5])
⽣成图19.
五、句柄图形对象
句柄图形对象是MATLAB绘图的基础,是构筑MATLAB图形这座⼤厦的砖和⽡。MATLAB提供的所有⼆维、三维绘图⼯具都是利⽤这些基本对象建⽴起来的。句柄图形对象按层次体系组织,对象的每个
实例都与名为句柄的惟⼀标识相连。使⽤这个句柄,可以操作已经存在的图形对象,也可以在创建图形对象时给属性指定值。
句柄图形对象有两个基本的图形对象类型:核⼼图形对象和组合对象。
核⼼图形对象包括基本的绘图对象如直线,⽂本和多边形壳(Patch对象)、曲线对象、图像对象和光照对象等
图表1 核⼼图形对象
下⾯的代码计算⼀个数学函数,并通过将属性值作为变量指定给figure,axes和surface函数来创建3个图形对象。MATLAB对所有其他属性使⽤默认值。
[x,y]=meshgrid([-2:.4:2]);
Z=x.*exp(-x.^2-y.^2);
fh=figure(‘Position’,[350 275 400 300],’Color’,’w’);
ah=axes(‘Color’,[.8 .8 .8],’XTick’,[-2 -1 0 1 2],…YTick’,[-2 -1 0 1 2]);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论