学习matlab(九)——绘图(三维)
目录
(1)plot3()函数
(2)peaks()函数
(3)mesh()函数
(4)surf()函数
(5)柱面图
(6)球状图
(7)三维等高线图
(8)柱状图
(9)饼状图
(10)散点图
(11)火柴杆图
(12)三维向量场图
(13)彗星图
(14)填充图
(15)三维彩带图
(16)非网络数据绘图
(17)三维隐函数绘图
(18)其他功能
(19)图形的输出方法
在MATLAB中,三维图形包括三维曲线、三维网格图和三维曲面图,分别采用函数plot3( )、函数mesh()和surf( )进行绘制。本章还将介绍一些特殊的三维图形绘制,重点讲解三维图形的视角、色彩和光照等控制工具,以及图形的打印和输出等。下面分别进行介绍。MATLAB语言提供了三维绘图功能,这些功能与二维图形的绘制有很多的相似之处,例如曲线的属性设置完全相同。最常用的三维绘图包括三维曲线图、三维网格图和三维曲面图等。完整的三维绘图流程,通常包括绘图的数据,设置图形窗口,图形的视角、颜色和光照等效果,以及坐标轴和图形标注的设置等。
x=-10:0.1:10;
y=-10:0.1:10;
[X,Y]=meshgrid(x,y);
z=X.^2+Y.^2;
surf(x,y,z);
view([50 70])
colormap('cool');
shading interp;
light('Position',[1 0.4 0.4]);
axis square;
xlabel('x');
ylabel('y');
zlabel('z');
(1)plot3()函数
在MATLAB中,利用函数plot3()绘制三维曲线图,该函数的调用格式为:plot3(x, y,z):该函数绘制三维曲线,参数x、y和z是有相同的维数的向量。plot3(X,Y,Z):该函数中参数X、Y和Z为具有相同维数的矩阵,将参数X、Y和Z的每一列绘制一条曲线,同时绘制多条曲线。plot3(X,Y,Z,s):该函数和二维绘图函数plot()类似,可以设置曲线的线型和颜色等信息,以及数据点的标记等。
t=linspace(0,20*pi,500);
x=t.*sin(t);
y=t.*cos(t);
z=t;
plot3(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
(2)peaks()函数
在MATLAB中,提供了一个peaks()函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。peaks:该函数绘制三维曲面,默认大小为49*49.peaks(n):该函数绘制三维曲面,三维曲面数据为n*n。z=peaks:产生默认大小为49*49的矩阵,不绘制三维曲面。z=peaks(x, y):该函数计算输入参数为x和y的方程的值,不绘制三维曲面。[x, y, z]=peaks:该函数产生3个矩阵x、y和z,大小都为49*49,不绘制三维曲面。[x, y, z]=peaks(n):该函数产生3个矩阵x、y和z,大小都为n*n,不绘制三维曲面。
[a,b,c]=peaks(20);
peaks
(3)mesh()函数
在MATLAB中,采用函数meshgrid( )产生平面区域内的网格坐标矩阵。
x=-2*pi:2*pi;
y=-2*pi:2*pi;
[X,Y]=meshgrid(x,y);
plot(X,Y,'o');
在MATLAB中,采用函数mesh()绘制三维网格图,该函数将曲面上的点用线条连接起来,网格对应的曲面区域则显示为空白。该函数的调用格式为: mesh(X,Y,z, c):该函数绘制彩色的三维网格图,其中矩阵X和Y控制x轴和y轴,矩阵Z为z轴数据,图形的颜色采用参数c设置。在MATLAB中,采用函数meshc()绘制带有等高线的三维网格图,采用函数meshz()绘制带有底座的三维网格图。这两个函数的用法与函数mesh()类似。此外,还可以采用函数waterfall()绘制三维网格图。
[X,Y]=meshgrid(-3:0.1:3);
Z=5*X.^2-Y.^2+3;
subplot(121);
plot3(X,Y,Z);
subplot(122);
mesh(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
(4)surf()函数
在MATLAB中,采用函数surf()绘制三维曲面图。该函数的调用格式为: surf(X, Y,Z,c):该函数绘制彩色的三维曲面图,其中矩阵X和Y控制x轴和y轴,矩阵Z为z轴数据,图形的颜色采用参数c设置。在MATLAB中采用函数surfc()绘制带有等高线的三维曲面图,通过函数surfl()添加三维曲面的光照效果,调用方式和surf( )相同。
[X,Y]=meshgrid(-3:0.1:3);
Z=peaks(X,Y);
subplot(121);
surf(X,Y,Z);
subplot(122);
surfc(X,Y,Z);
xlabel('x');
ylabel('y');
zlabel('z');
(5)柱面图
在MATLAB中,可以通过函数cylinder( )产生柱面图的数据,然后采用函数mesh( )方便的绘制出三维旋转体。
t=0:pi/20:3*pi;
r=5+cos(t);
[x,y,z]=cylinder(r,30);
mesh(x,y,z);
xlabel('x');
ylabel('y');
zlabel('z');
(6)球状图
在MATLAB中,可以通过函数sphere()绘球面图。该函数的调用格式为:[X,Y,Z]=sphere(N):该函数产成3个(N+1)*(N+1)的矩阵,利用函数surf(×,Y,Z)可产生单位球面。[X,Y,Z]=sphere:该函数产生3个的矩阵,默认值。sphere(N):该函数只绘制球面图而不返回任何值。
subplot(121);
sphere(30);
subplot(122);
[x,y,z]=sphere;
surf(10*x,10*y,10*z);
axis('equal');
colormap('hot');
(7)三维等高线图
在MATLAB中,可以通过函数contour3()绘制三维等高线图。该函数的调用格式和绘制二维等高线的函数contour()非常相近,用户可以在命令行窗口输入: helpcontour3查询该函数的详细使用方法。
Z=peaks;
subplot(121);
contour(Z,20);
subplot(122);
contour3(Z,20)
axis([-inf inf -inf inf -inf inf])
(8)柱状图
在MATLAB中,采用函数bar3()绘制三维柱状图,该函数的调用格式和函数bar( )非常相近。用户可以在命令行窗口输入:help bar3来查看该函数的详细介绍。此外,还可以采用bar3h(绘制水平三维柱状图,该函数的调用方式和函数bar3()箱同。
x=[1:6;3:8;7:12];
bar3(x',0.3);
(9)饼状图
在MATLAB中,采用函数pie3()绘制三维饼状图,该函数的调用格式和二维饼状图绘图函数pie()基本相同。如果用户需要查看函数pie3()的详细使用情况,可以在命令行窗口输入:help pie3.
x=[0.2 0.1 0.25 0.15 0.16];
y=[3 5.5 7 10.5 8.5];
subplot(121);
pie3(x);
subplot(122);
explode=[0 0 0 1 0];
pie3(y,explode);
(10)散点图
在MATLAB中,采用函数scatter3()绘制三维散点图,该函数的调用格式和二维散点图函数scatter()非常相近。如果用户需要查看函数scatter3( )的详细使用情况,可以在命令行窗口输入: help scatter3.
x=rand(1,20);
y=rand(1,20);
z=x+y;
subplot(121);
scatter3(x,y,z);
subplot(122);
scatter3(x,y,z,'r','filled');
(11)火柴杆图
在MATLAB中,采用函数stem3()绘制三维火柴杆图,该函数的调用格式和二维火柴杆绘图函数stem()非常相近。用户可以在MATLAB的命令行窗口输入:help stem3查看该函数的详细使用情况。
x=rand(1,20);
y=rand(1,20);
z=x+y;
subplot(121);
stem3(x,y,z);
subplot(122);
stem3(x,y,z,'r','filled');
(12)三维向量场图
在MATLAB中,采用函数quiver3()绘制三维向量场图,该函数的调用格式和二维向量场图绘制函数quiver()非常相近。用户可以在命令行窗口输入:help quiver3,查看该函数的详细使用情况。
[X,Y]=meshgrid(-3:0.3:3);
Z=-3*X.^2-Y.^2;
[U,V,W]=surfnorm(X,Y,Z);
subplot(121);
quiver3(X,Y,Z,U,V,W,0.2);
subplot(122);
quiver3(X,Y,Z,U,V,W);
hold on;
surf(X,Y,Z);
(13)彗星图
在MATLAB中,采用函数comet3()绘制三维彗星图,该函数的调用格式和二维彗星图的绘图函数comet()非常相近。用户可以在MATLAB的命令行窗口输入:help comet3查询该函数的详细使用情况。
t=-pi:pi/400:pi;
x=sin(5*t);
y=cos(3*t);
z=t;
comet3(x,y,z);
(14)填充图
在MATLAB中,采用函数fill3()绘制三维填充图,该函数的调用格式和二维填充图函数fil()基本相同。用户可以在MATLAB的命令行窗口输入:help fill3查询该函数的详细介绍。
x=rand(1,10);
y=rand(1,10);
z=x-y;
fill3(x,y,z,'b');
(15)三维彩带图
在MATLAB中,采用函数ribbon()绘制三维彩带图,该函数的调用格式为:ribbon(X, Y):该函数绘制三维彩带图,和函数plot()类似。ribbon(Y):该函数绘制三维彩带图,X默认为X=1:size(Y,1)。ribbon(X, Y, width):该函数绘制三维彩带图,采用参数width设置线条的宽度。
x=0:pi/20:2*pi;
y=sin(x);
subplot(121);
ribbon(x,y,2);
subplot(122);
ribbon(cos(x));
xlabel('x');
ylabel('y');
zlabel('z');
(16)非网络数据绘图
在MATLAB中,采用函数mesh()和surf()绘图时,要求数据时均匀分布的网格数据。如果数据不是网格数据,可以采用函数meshgrid()创建插值的网格数据。Zl=griddata(X,Y, Z, XI,YI):该函数中采用数据X、Y和Z建立插值函数Z=F(X,Y),然后计算数据(I,YI)处的插值结果ZI。Zl=griddata(X, Y,z, XI, Yl, method):该函数中采用参数method设置插值的算法,可以为:‘linear'为线性插值算法,系统的默认值;‘'cubic'为三次插值,‘nearest'为临近点插值等。
在MATLAB中,采用函数patch()绘制三维片块图,该函数的调用格式为:patch(X, Y,Z):该函数创建有参数X、Y和Z为项点的空间多边形。patch(X,Y,z,C):该函数中参数C用于设定颜色。
(17)三维隐函数绘图
在MATLAB中,有一些简易绘制三维图形的函数,可以绘制隐含数的三维图形,这些函数如表所示。下面对这些函数分别进行介绍。
函数 | 说明 |
ezplot3() | 绘制三维曲线 |
ezmesh3() | 绘制三维网格图 |
ezmeshz() | 绘制带等高线的三维网格图 |
ezsurf() | 绘制三维曲面面 |
ezsurfc() | 绘制带等高线的三维曲面图 |
(18)其他功能
对于三维图形,从不同的视角查看会得到不同的侧面和结果。在MATLAB中,采用函数view()设置三维图形的视角,该函数的调用格式为:view(az, el)或view([az, el]):该函数设置视角的位置,在方位角为az和仰角为el,它们都以度为单位view([x, y, z]):该函数设置视角为向量[x, y,z]所指的方向。view(2):该函数为默认的二维视角。view(3):该函数为默认的三维视角。[az, el]=view:该函数返回当前的视角az和el.
在MATLAB中,采用函数rotate3D()设置图形的三维视角,该函数的调用格式为:rotate3d on或rotate3d('on'):该函数打开图形的三维视角,可以方便的用鼠标来控制视角的变化,并进行图形的实时更新。rotate3d off或rotate3d('off'):该函数关闭图形的三维视角功能。rotate3d:该函数在rotate3d on和rotate3d off间进行切换。在利用函数mesh()绘制三维网格图时,默认情况下隐藏三维图形中被遮挡的部分。可以采用函数hidden()显示图形的诱视效果。
在MATLAB绘图时,可以使用颜色信息让图形更加生动和直观。MATLAB中可以采用RGB真彩色和色图着色。RGB真彩色是采用颜色映像来处理颜色的,即RGB色系。计算机中的各种颜色都是通过三原色(红、绿和蓝)按照不同的比例调制出来的。颜色映象中每一种颜色的值为一个的向量,其中R、G和B为0到1之间的数,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。除了真彩色,还可以采用色图着色。在MATLAB中内置了很多的色图函数。
jet | hsv的一种变形 |
hsv | 色彩饱和值 |
hot | 从黑到红到黄到白 |
cool | 青蓝和洋红的色度 |
spring | 粉色到黄色 |
summer | 从青色到黄色 |
autumn | 红色到黄色 |
winter | 蓝色到青色 |
gray | 线性灰度 |
bone | 带一点蓝色的长度 |
copper | 线性铜色度 |
pink | 粉红的彩色度 |
lines | 线性色图 |
在MATLAB中,可以采用函数rgbplot()绘制色图。采用函数colorbar()给当前的图形窗口添加颜色条,显示当前坐标轴的色图。采用函数brighten()增亮或变暗图形的色图。利用函数caxis()控制颜色轴的刻度,数值和颜色的对应关系以及颜色的显示范围等。采用函数shading()控制曲面图形的着色方式,该函数用于三维网格图、三维曲面图和三维填充图。采用函数colordef()设置图形的背景颜色。
在MATLAB中,可以给图形添加光照效果,利用函数light()建立光源,该函数的调用格式为:light:该函数给当前的图形添加光源,光源对象的属性值都是系统默认的。light(Prarm1,Value1, ...,ParamN, ValueN):该函数给参数Parm1赋值为Value1,以此类推,设置光源对象的各个属性值。L=light(...):该函数返回光源对象的句柄,获取句柄后,可以通过函数get()和set()获取和设置属性值。
在MATLAB中,利用函数lighting()设置光源的模式,该函数的调用格式为:lighting flat或lighting( 'flat'):该函数设置光源模式为flat,即平面模式,以网格为光照的基本单元。该模式为系统默认的模式。lighting gouraud或lighting('gouraud'):该函数设置光源模式为gouraud,即点模式,以像素为光照的基本单元。lighting phong或lighting('phong'):该函数设置光源模式为phong,以像素为光照的基本单元,并考虑了各点的反射。lighting none或lighting('none'):关闭光照效果。
在默认的图形窗口下,Camera控制条不显示。下面对几种典型的图形进行绘制,包括图形的透视效果、图形的镂空,以及用三维图形表现四维的数据等。
[x,y,z]=sphere(40);
surf(x,y,z);
shading interp;
hold on;
mesh(2*x,2*y,2*z);
hold off;
hidden off;
axis off;
(19)图形的输出方法
<1>copy figure;
<2>print()函数;
<3>print preview;
学习matlab(九)——绘图(三维)相关推荐
- matlab 三维 作图 坐标轴_MATLAB学习——MATLAB中的三维绘图指令
2 基本XYZ立体绘图命令 mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色.下列命令可画出由函数 形成的立体 ...
- MATLAB学习笔记——二维和三维绘图
MATLAB学习笔记--二维和三维绘图 近期练习matlab的二维和三维绘图,整理一下,以防忘记. 文章目录 MATLAB学习笔记--二维和三维绘图 一.二维绘图 1.plot命令 2.fplot 命 ...
- MATLAB绘图—三维曲面绘图(surf)
MATLAB绘图-三维曲面绘图(surf) 原创不易,路过的各位大佬请点个赞 <MATLAB绘图-三维绘图-I>博客主要讲了三维曲线图的绘制,本博客主要讲 三维曲线绘图 三维曲面图 曲面图 ...
- MATLAB三维绘图---三维曲面图
matlab绘制三维图中,最常见的是三维曲线图和三维曲面图 三维曲线图比较简单函数命令为plot3,已经详细介绍过,具体请见Matlab三维绘图------三维曲线图 三维曲面图的不同类型及对比 三维 ...
- 【Visual C++】游戏开发笔记四十一 浅墨DirectX教程之九 为三维世界添彩:纹理映射技术(一)...
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8523341 作者:毛星云(浅墨 ...
- 用matlab绘制抛物线y的x平方,我刚刚学习MATLAB,想画一下(x^2+y^2-1)^3=x^2*y^3这个曲线的图像,该怎么画呢,谢谢大家了。...
syms x y zezsurf(x,y,1-x-2*y)如果希望去除网格可以再加上shading interp如果想让坐标轴显示比例相等,可以再加上axis equalwww.mh456.com防采 ...
- Python数据分析学习系列 九 绘图和可视化
Python数据分析学习系列 九 绘图和可视化 资料转自(GitHub地址):https://github.com/wesm/pydata-book 有需要的朋友可以自行去github下载 信息可视化 ...
- 学习matlab体会,matlab学习心得体会
MATLAB是一个实用性很强,操作相对容易,比较完善的工具软件,你知道matlab学习心得体会是什么吗?接下来就是学习啦小编为大家整理的关于matlab学习心得体会,供大家阅读! matlab学习心得 ...
- Matlab实践课心得体会,学习matlab的一点心得体会
1.前言 2.matlab的一些特点 3.学习matlab心得体会 4.matlab的一些资源 1.前言 我接触Matlab的时间比较长了,最开始是在大学里面的数学实验课上了解了一些,学了些基础的命令 ...
- MATLAB符号绘图——相见恨晚的MATLAB绘图命令
MATLAB符号绘图--相见恨晚的MATLAB绘图命令 1. fplot函数 fplot3函数 ezpolar函数 还有一些其他的符号绘图命令 MATLAB的绘图功能可谓非常的强大,常用的有plot, ...
最新文章
- BZOJ2208:[JSOI2010]连通数——题解
- C# 获取一些简单的本机信息
- 信息安全技术 网络安全事件应急演练指南_省局举办网络安全培训讲座
- 通过超图在网页上加载obj格式3D模型
- 原型与原型链的简单理解
- 一日三项令人兴奋的Lucene功能
- 设计模式6大原则简述
- 关于redis实现单点登录的一点思路
- 基于linux的MsQUIC编译及样例运行
- OpenGLES 2.0 可编程渲染管线
- python——语音信号读取、分帧、加窗
- 翻译:protocol的高阶用法,在Swift 5中使用协议protocol构建自定义集合Collection
- 物联网平台开发接口http/mqtt,支持部标808/1078协议对接
- 【HTML5】Web前端——制作 3D 旋转魔方相册
- 英特尔cpu发布时间表_英特尔公司宣布第九代桌面CPU发售时间:i9 9900K将于10月19日正式发售!...
- bootstrap3 侧边导航栏
- OpenCV像素点邻域遍历效率比较,以及访问像素点的几种方法
- 从零开始搭建个人静态简历网站
- 【转载】研究生退学记——谨以此记录我半途而废的研究生生涯
- GDI+学习记录(10)- 影线画刷HatchBrush
热门文章
- 浙大计算机学院工作要求,浙江大学卓越工程师培养方案-浙江大学计算机学院...
- 将pcap文件处理成KDD99数据集格式
- Unity 安卓打开DOC文档
- iOS开发-10.多线程
- 虚拟机VMware Workstation与主机间共享文件的七种方法
- 北邮计算机学院五组夏森,前辈种树 | 从双非软件到北邮计算机(各路打击后顽强活着)...
- win2012安装SQLserver2012
- 重要的学习及资源网址
- Linux-(16)管道和重定向
- 《网络安全工程师笔记》 第七章:NTFS安全权限