matlab 绘图.docx
- 文档编号:6470286
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:30
- 大小:2.96MB
matlab 绘图.docx
《matlab 绘图.docx》由会员分享,可在线阅读,更多相关《matlab 绘图.docx(30页珍藏版)》请在冰豆网上搜索。
matlab绘图
5MATLAB的可视化功能
v5.1基本绘图入门
数据可视化是研究科学、认识世界不可缺少的手段。
人们很难直接感受一大堆数据的含义,而数据图形则能使人们用视觉器官直接感受到数据的许多内在本质。
MATLAB不仅在计算方面无与伦比,而且在数据可视化方面也有上佳表现。
MATLAB能可以二维、三维乃至四维的图形表现数据。
通过对图形线型、渲染、色彩、光线、视角等品性的处理,把计算数据的特征表现得淋漓尽致。
MATLAB图形系统建立在一组“图形对象”基础之上,它的核心是图形句柄。
MATLAB提供有两个层面的绘图指令:
一组是直接对图形句柄进行操作的底层指令,它们灵活多变,数据表现能力强;一组是建立在底层指令基础上的高层指令,它们简单明了,易学易用。
另外,MATLAB也能处理不同格式的图形图象,制作简单动画。
至于更专业的图象处理,可以使用图象处理工具箱。
v1MATLAB生成一个图形的基本步骤:
v按上述步骤生成的图形如下所示:
v2常用画线指令:
v3常用画线指令使用举例
(一):
v3常用画线指令使用举例
(二):
v4“线型-标记-颜色”字符串的取值:
v5常用坐标设置和图形标注命令:
v6常用坐标设置和图形标注命令使用举例:
v7标注中TeX字符串的使用:
图形标注中可以使用特殊格式的特殊字符。
描述这种特殊格式的字符串符合TeX规范。
这些字符串由修饰符引导,修饰符的默认作用范围是字符串的结尾,也可以用{}显式定义。
常用的修饰符有:
^(上标);_(下标);\bf(粗体);\it(斜体);\rm(正常);\fontsize{fontsize}(字体大小)等。
v8常用非英文字母的TeX格式字符串:
v例二维图形对象操作
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);%添加图例
holdon;%设置绘图方式为保持
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,'areabetweentwofunctions');
axis([-330inf]);%设置坐标范围
%设置坐标刻度,并在刻度标签上标注交点坐标(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'})
v例65二维双坐标绘图
plotyy函数的使用:
已知,
分别绘制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');
v5.2三维绘图
v1三维线图
例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]);
boxon;
v2三维曲面图形
v1)基本指令
v2)常用函数的使用说明
v例66Sinc函数表示的空间曲面
[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([551]);
axistight;
view(-50,30);
camlightleft
v例67三维插值
x=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);axistight;holdon;
plot3(x,y,z,'.','MarkerSize',15)
v例68透视
[X0,Y0,Z0]=sphere(30);
X=2*X0;Y=2*Y0;Z=2*Z0;
surf(X0,Y0,Z0);
shadinginterp;
holdon,mesh(X,Y,Z);
colormap(hot),hiddenoff;
axisequal;axisoff;
holdoff
v例69利用NaN对图形进行镂空处理
P=peaks(30);
P(18:
20,9:
15)=NaN;
surfc(P);
colormap(summer)
light('position',[50,-10,5])
lightingflat
material([0.9,0.9,0.6,15,0.4])
v例70利用0对图形进行剪切处理
P=peaks(30);
P(18:
20,9:
15)=0;
surfc(P);
colormap(summer)
light('position',[50,-10,5])
lightingflat
material([0.9,0.9,0.6,15,0.4])
v3三维图形的精细控制
v1)视角控制view
view([azad]);view([vx,vy,vz])
v2)照相机设置
MATLAB绘制三维图形时,默认的视角为:
方位角AZ=37.5,俯仰角EL=30。
用VIEW命令可调整图形的观察视角。
但是,VIEW命令有其局限性,例如不能控制Z轴的方向,不能产生变焦效果等。
为此,MATLAB引进了一系列照相机函数。
这些函数用来模拟真实的拍摄场景,例如同时移动照相机和目标等。
v例70:
利用camdolly函数来实现物体的移动
surf(peaks)
axisvis3d
t=0:
pi/20:
2*pi;
dx=sin(t)./40;
dy=cos(t)./40;
fori=1:
length(t);
camdolly(dx(i),dy(i),0)
drawnow
end
v3)色彩控制
v色图colormap
v浓淡处理shading
v透明度控制alpha
MATLAB中色彩的使用有两种方法:
一是真彩(直接设定RGB分量),一是色图(调色板)。
默认的图形窗色图是jet(64)。
色图是一个三列多行的矩阵。
行数等于它定义的颜色数,三列分别定义一个颜色的RGB分量,取值在0到1之间。
MATLAB的内部色图有hsv,hot,cool,summer,gray等。
色图中颜色的个数可用参数设定。
默认作图时,Z不仅决定曲面上点的高度,而且还决定在当前色图中的颜色索引。
用户可以自定义色图。
例71函数z=x*exp(-x^2-y^2)的曲面
[x,y]=meshgrid([-2:
.2:
2]);
Z=x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z))
colorbar
v例72用真彩设定曲面的颜色
Z=peaks(25);
C(:
:
1)=rand(25);
C(:
:
2)=rand(25);
C(:
:
3)=rand(25);
surf(Z,C,'FaceColor','interp',
'FaceLighting','phong')
camlightright
v例73三种浓淡处理方式比较
Z=peaks(15);colormap(jet)
subplot(2,3,2),
surf(Z)
subplot(2,2,3),
surf(Z),shadingflat
subplot(2,2,4),
surf(Z),shadinginterp
v例74半透明表面处理
subplot(2,2,2),
surf(peaks),shadinginterp
subplot(2,2,3),
surf(peaks),shadinginterp
alpha(0.2)
subplot(2,2,4),
surf(peaks),shadinginterp
alpha(0.6)
v4)照明处理
v灯光light
v照明模式lighting
v表面材质material
v例75一个球
[X,Y,Z]=sphere(60);
colormap(cool)
surf(X,Y,Z);shadinginterp
light('position',[0-101.5],
'style','infinite')
lightingphong;
materialshiny
axisequal
v5.3立体的可视化
v例76可视化如下函数v=x*exp(-x^2-y^2-z^2)
[x,y,z]=meshgrid(-2:
.4:
2,-2:
.4:
2,-2:
.2:
2);
v=x.*exp(-x.^2-y.^2-z.^2);
xslice=[-1.2,.8,2];yslice=2;zslice=[-2,0];
slice(x,y,z,v,...
xslice,yslice,zslice);
colormaphsv;colorbar
v5.4符号函数的图形显示
符号作图函数的用法类似于数据作图函数。
其中EZPLOT在前面已有介绍。
下面例出常用的符号作图函数。
v例77绘极坐标图
symst;ezpolar(1+cos(t))
v例78使用球坐标参量画部分球壳
x='cos(s)*cos(t)';y='cos(s)*sin(t)';z='sin(s)';
ezsurf(x,y,z,[0,pi/2,0,3*pi/2])
view(17,40);
shadinginterp;colormap(spring)
light('position',[0,0,-10],
'style','local')
light('position',[-1,-0.5,2],
'style','local')
material([0.5,0.5,0.5,10,0.3])
v5.5其它图形绘制
除了基本绘图指令外,MATLAB还提供了大量的绘制特殊图形的指令,以适应不同应用的需求,便于大量数据的分析和比较。
例如:
分析不同数据在总额中的贡献、份额、分布;分析矢量数据的方向和速度;三维图形的等高线;简单动画等。
下表列出了常用的特殊图形函数,它们的详细用法请参看在线帮助。
v特殊图形函数一览表
v例78绘温度-日期的条形图
days=0:
5:
35;
temp=[2923272520232327];
bar(days,temp)
set(gca,'YLim',[1530],...
'Layer','top')
v例79用面积图表示某公司90年到94年的销售额、成本和利润。
x=90:
94;
sales=[51.682.490.859.147.0];
cost=[19.334.261.450.529.4];
area(x,sales,…
'FaceColor',[.5.9.6],...
'EdgeColor','b','LineWidth',2)
holdon;
area(x,cost,
'FaceColor',[.9.85.7],...
'EdgeColor','y','LineWidth',2)
holdoff;
set(gca,'XTick',[90:
94]);
set(gca,'Layer','top');gridon;
xlabel('Years','FontSize',14);
ylabel('CPS','FontSize',14)
gtext('\leftarrowSales');
gtext('Cost');
gtext('profit');
v例80用饼图表示三个部门前5个月的销售情况。
X=[19.322.151.6;
34.270.382.4;
61.482.990.8;
50.554.959.1;
29.436.347.0];
x=sum(X);[c,offset]=max(x);
explode=zeros(size(x));
explode(offset)=1;
h=pie(x,explode);colormapsummer
v例81三维火柴杆图
t=0:
.2:
10;
s=0.1+i;
y=exp(-s*t);
stem3(real(y),imag(y),t,'b');
holdon;
comet3(real(y),imag(y),t);
holdoff
v例82三维弹道
v=[2310];a=-32;
vx=v
(1);vy=v
(2);vz=v(3);
t=0:
.1:
1;
x=vx*t;y=vy*t;
z=vz*t+1/2*a*t.^2;
u=gradient(x);%数值梯度
v=gradient(y);w=gradient(z);
quiver3(x,y,z,u,v,w);
view([10,-80,10]);axissquare
v例83等值线
Z=peaks;
subplot(1,2,1),contour(Z,20)
subplot(1,2,2),contour3(Z,20)
v例84制作movie
Z=peaks;surf(Z);axistight
set(gca,'nextplot',...
'replacechildren');
n=20;F=moviein(n);
forj=1:
n
surf(sin(2*pi*j/20)*Z);
F(:
j)=getframe;
end
movie(F,2)
v例85Lorenz奇异吸引子的动态显示。
该混沌现象由下述非线性差分方程描述,其运动轨道围绕空间两个吸引子,没有稳定状态。
采用固定步长的Euler数值方法图示。
A=[-8/300;0-1010;028-1];
y=[35-10-7]';h=0.01;
p=plot3(y
(1),y
(2),y(3),'.',...
'EraseMode','none',...
'MarkerSize',2);
axis([050-2525-2525]);holdon;
fori=1:
4000
A(1,3)=y
(2);A(3,1)=-y
(2);
ydot=A*y;y=y+h*ydot;
set(p,'XData',y
(1),'YData',y
(2),'ZData',y(3))
drawnow;
end
v5.6图象
MATLAB把图象存为矩阵,可用矩阵或数组命令直接对其操作。
操作时要注意,图象矩阵有三种不同的数据类型:
64位双精度浮点型,16位无符号整型,8位无符号整型,而绝大多数命令仅能对双精度浮点型数据进行操作。
默认状态下,MATLAB将图象存储为双精度浮点型。
为了减少内存占用,也可显式指定数据存储为无符号整型。
根据图象着色方法的不同,MATLAB将图象分为三类:
调色板图象,灰度图象,RGB真彩图象。
调色板图象包含数据阵X和色图map,其中数据阵指定了图象中所有象素点的颜色(对色图的索引值);色图阵则定义了图象中使用的颜色,它每一行定义一个颜色,每个颜色的RGB分量由相应行中的三个列元素分别定义。
使用如下方式显示:
image(X);colormap(map)
灰度图象包含一个数据阵I,其元素对应于图象象素,其值代表某个范围内的灰度值。
使用如下方式显示(其中[CLOWCHIGH]指定灰度的级别):
imagesc(X,[CLOWCHIGH])
真彩图象为m*n*3的数组,直接定义24BIT深度的RGB分量。
例如象素点(10,5)的颜色保存在RGB(10,5,1),RGB(10,5,2)和RGB(10,5,3)中。
使用如下方式显示:
image(RGB)
一般的图象文件总是以描述图象格式的文件头开始,然后是BMP数据流。
为此,MATLAB提供了对不同格式图象文件进行操作的函数imread和imwrite。
MATLAB支持大多数常用图像文件格式,例如:
BMP、HDF、JPEG、PCX、PNG、TIFF等。
图像文件的类别和一般信息可用指令imfinfo获得。
v例87图象文件的读取和显示
F=imfinfo('trees.tif');
F(1,1).ColorType
[X,cmap]=imread('trees.tif');
image(X);colormap(cmap);
axisimageoff
v例88图像直方图均衡
I=imread('pout.tif');
imshow(I)
figure,imhist(I)
I2=histeq(I);
figure,imshow(I2)
imwrite(I2,'pout2.png');
v例89图像尺寸变换
I=imread('circuit.tif');
J=imresize(I,1.25);
imshow(I)
figure,imshow(J)
v例89图像旋转
I=imread('circuit.tif');
J=imrotate(I,35,'bilinear');
imshow(I)
figure,imshow(J)
v例89图像滤波
I=imread('moon.tif');
h=fspecial('unsharp');
I2=imfilter(I,h);
imshow(I),title('OriginalImage')
figure,imshow(I2),title('FilteredImage')
v例89图像边缘检测
I=imread('coins.png');
imshow(I)
BW1=edge(I,'sobel');
BW2=edge(I,'canny');
imshow(BW1)
figure,imshow(BW2)
v例89图像去噪声
I=imread('eight.tif');
imshow(I)
J=imnoise(I,'salt&pepper',0.02);
figure,imshow(J)
K=filter2(fspecial('average',3),J)/255;
figure,imshow(K)
L=medfilt2(J,[33]);
figure,imshow(K)
figure,imshow(L)
v5.7图形窗功能介绍
MATLAB图形窗不仅仅是一个被动的显示窗口,而且是一个可以对窗体中图形进行编辑的交互界面。
通过该界面能够完成的图形功能有:
编辑(放大、缩小、旋转、添加和删除图形对象);修改图形属性;复制和粘贴;打开和保存;另存为其它格式;等等。
v5.8句柄图形
MATLAB绘制的图形由一组图形对象组成。
这些图形对象在创建时被赋予一个句柄,所以称为句柄图形。
句柄图形是一个面向对象的图形系统。
它提供对图形子元的直接操作,包括创建线、文本、网格线、多边形、GUI菜单和GUI控制(按纽,对话框等),并可对它们的属性灵活操作。
句柄通常是一个双精度浮点数。
为了引用方便,通常把它赋给某个变量,然后通过这个变量引用对象。
这里有两个例外:
根对象的句柄总是0,图形窗的句柄可为整数(通过设置其属性integerHandle)。
v1基本图形对象的层次结构
根对象(Root)为计算机的屏幕,不能创建,但可设置它的属性;
图形窗(Figure)是屏幕上独立的图形窗口,其数目不限;
GUI控制(Uicontrol)用于程序的用户界面设计,例如按纽,列表框,滑杆等;
GUI菜单(Uimenu)是图形窗中标准的下拉菜单;
GUI快捷菜单(Uicontextmenu)是用户右击某对象时弹出的上下文菜单;
轴(Axis)是在图形窗中定义的绘图区域,是图形窗的子对象,其它基本图元的父对象。
若轴不存在,绘图函数会自动创建轴对象。
一个图形窗上允许有多个轴对象;
图象(Image)是矩阵元素直接映射到当前色图上所得到的结果;
光线(Ligh
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 绘图