1-1 曲线图绘制

与二维绘图命令类似,在三维坐标下有三维的基本绘图命令plot3,其使用方法与plot相仿。plot3的调用格式如下。

格式一:plot3(x,y,z)plot3(x, y, z)plot3(x,y,z)

若x,y,zx, y, zx,y,z为相同长度的向量,则根据向量x, y, z绘制空间三维曲线。
如果x,y,zx, y, zx,y,z为同阶矩阵,则绘制对应列的多条曲线

格式二:plot3(x,y,z,′s′)plot3(x, y, z, 's')plot3(x,y,z,′s′)

按字符串s设置的线型、颜色、标记符号绘制三维空间曲线。字符串s的设置与plot()plot()plot()命令的设置相同。

>> t=0:pi/10:10*pi;
>> x=cos(t);
>> y=sin(t);
>> plot3(x,y,t,'bo-.');
>> xlabel('x=cos(t)');
>> ylabel('y=sin(t)');
>> zlabel('z');
>> title('三维螺旋线')
>>

1-2 三维网线图绘制

MATLAB提供的函数mesh用来绘制三维网线图

该命令可以绘出在某一区间内完整的曲面,而不是单根曲线。其基本调用格式如下:

mesh(x,y,z)

根据矩阵x, y和z绘制彩色的空间三维网线图。x, y和z中对应的元素为三维空间上的点,点与点之间用线连接。其中网线的颜色随网点高度的改变而改变。

在绘制二元函数z=f(x,y)z=f(x, y)z=f(x,y)的三维网线时

首先应通过[x,y]=meshgrid(x,y)[x,y]=meshgrid(x, y)[x,y]=meshgrid(x,y)语句在xy平面上建立网格坐标,然后利用x和y计算每一个网格点上z坐标的大小,该坐标就定义了曲面上的点。最后由mesh(z)mesh(z)mesh(z)命令完成三维网线图的绘制。

1-2-1 example:绘制$z=x e{-x2 - y^2} $

>> x=-2:0.2:2;
>> y=x;
>> [x,y]=meshgrid(x,y);
>> z=x.*exp(-x.^2)-y.^2;
>> mesh(x,y,z);
>> z=x.*exp(-x.^2-y.^2);
>> mesh(x,y,z);
>>

meshz函数在mesh函数的基础上增加了绘制边界面的功能,其调用格式与mesh一样。图12.3是运行meshz(x,y,z)meshz(x, y, z)meshz(x,y,z)的结果。

>> x=-2:0.2:2;
>> y=x;
>> [x,y]=meshgrid(x,y);
>> z=x.*exp(-x.^2)-y.^2;
>> mesh(x,y,z);
>> z=x.*exp(-x.^2-y.^2);
>> meshz(x,y,z)

1-2-1 example:绘制$z=x e{-x2 - y^2} $的等高线图

>> x=-2:0.2:2;
>> y=x;
>> [x,y]=meshgrid(x,y);
>> z=x.*exp(-x.^2)-y.^2;
>> mesh(x,y,z);
>> z=x.*exp(-x.^2-y.^2);
>> meshc(x,y,z)

1-3 曲面图的绘制

在三维网线上,对网线之间的网线元进行颜色填充就成了三维曲面图。MATLAB提供的surf函数具有这样的功能。其调用格式如下:

surf(x,y,z)

最常用的曲面图调用格式,绘制由3个矩阵所指定的带色参数的网状表面图,轴的刻度决定于x、y、z的范围,或当前对轴的设定,颜色与网的高度成正比。

1-3-1 example:z=x2+y2z=x^2+y^2z=x2+y2 绘制曲面图

>> x=-5:5;
>> y=x;
>> [x,y]=meshgrid(x,y);
>> z=x.^2+y.^2;
>> surf(x,y,z);
>> hold on;
>> colormap(hot)
>> stem3(x,y,z,'bo-.')

与mesh函数类似,与surf函数对应的也有surfl和surfc函数,surfl函数在绘制好的曲面上基于当前调色板颜色进行光照处理,surfc函数在绘制好的曲面图下加等高线。将范例12-4中的surf(x, y, z)分别替换为surfl(x, y, z)和surfc(x, y, z)后运行程序的结果如图所示。

2 三维隐函数的绘制

利用MATLAB的等值面函数isosurface,并在patch函数的配合之下就可以轻松完成

2-1 isosurface 等值面函数

调用格式:

fv=isosurface(X, Y, Z, V, isovalue)。

返回某个等值面(由isovalue指定)的表面(faces)和顶点(vertices)数据,存放在结构体fv中(fv由vertices、faces两个域构成)。
X、Y和Z的取值构成立体空间的一些栅格节点,V对应的是这些栅格点上的函数值数据。
如果是画隐函数v=f(x, y,z)=0的三维图形,则等值面的数值为isovalue=0。

2-2 patch 函数

调用格式:

patch(x,y,c)

此格式以平面坐标(X, Y)为顶点,构造平面多边形,C是RGB颜色向量。

patch(x,y,z,c)

此格式以空间三维坐标(X, Y, Z)为顶点,构造空间三维曲面,C是RGB颜色向量。

patch(fv)

此格式通过包含vertices、faces两个域的结构体fv来构造三维曲面,fv可以直接由等值面函数isosurface得到,例如patch(isosurface(X, Y, Z, V,0))。

2-3 绘制隐函数步骤

  1. 坐标范围确定;
  2. 使用meshgrid函数产生网格点;
  3. 隐函数定义,可利用@符号获取其函数句柄,实现对函数的操作;
  4. 计算坐标空间范围内的格点函数值val;
  5. 调用p=isosurface(x, y, z, val,0)函数计算隐函数等值点的位置并返回到p;
  6. 调用patch函数对曲面进行修饰

2-4 example:绘制 f(x,y,z)=x2+y2+z2−1=0f(x,y,z)=x^2+y^2+z^2-1=0f(x,y,z)=x2+y2+z2−1=0


>> clear;
>> xlimit=[-2 2];
>> ylimit=[-2 2];
>> zlimit=[-2 2];
>> gd=[30,30,30];%设置三个坐标轴的格点数,越多绘制出来的越精细。
>> f=@(x,y,z) x.^2+y.^2+z.^2-1 %定义隐函数表达式如果不含有某个变量,那就要用0*y之类表示,f = @(x,y,z)x.^2+y.^2+z.^2-1>> xlinspace(xlimit(1),xlimit(2),gd(1));%定义x变量的向量;
未定义函数或变量 'xlinspace'。是不是想输入:
>> x=linspace(xlimit(1),xlimit(2),gd(1));%定义x变量的向量;
>> y=linspace(ylimit(1),ylimit(2),gd(2));%定义x变量的向量;
>> z=linspace(zlimit(1),zlimit(2),gd(3));%定义x变量的向量;
>> [x.y,z]=meshgrid(x,y,z);
字段赋值赋给非结构体数组对象。>> [x,y,z]=meshgrid(x,y,z);
>> val=f(x,y,z);%根据网格点计算函数值
>> [f,v]=isosurface(x,y,z,val,0);%isosurface()利用等值点绘制曲面
>>p=patch('Faces',f,'Vertices',v,'CData',v(:,3),'facecolor','none','Edgecolor','flat')
>> grid on;
>> view(3)
>>

3 习题

  1. 用plot,fplot绘制函数y=cos(tanx)y=cos(tan x)y=cos(tanx)的图形。
  2. 用eplot绘制摆线:

KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ x &= a(t-sint)…

的图形。
3. 用plot绘制阿基米德螺线r=aθr=aθr=aθ和三叶玫瑰线r=acos(3θ)r=acos(3θ)r=acos(3θ)

x=-0.5*pi:pi/100:0.5*pi;
y=cos(tan(x));
plot(x,y)

021 三维数据可视化相关推荐

  1. matlab三维可视化,MATLAB中三维数据可视化及应用

    Value Engineering -----------------------作者简介:张晓利(1976-),女,陕西临潼人,硕士研究生,讲师,研究方向为 计算机应用. 0引言 MATLAB 在数 ...

  2. 为什么要用三维数据可视化?

    为什么要用三维数据可视化?在数据化的发展过程中,伴随着数据总量的不断扩大,大数据中心的工程规模越来越大,对于计算机的软件的总数和要求也不断增加.不但机器设备相对密度愈来愈高,工作人员对大数据中心视频监 ...

  3. python三维数据可视化的多种方法

    目录 用 Matplotlib 实现带颜色映射的三维散点图 代码 效果图 用 Seaborn 绘制三维散点图 代码 效果图 用 Plotly 绘制三维表面图 代码 效果图 Python 中的一些库,如 ...

  4. 基于WebGL的三维数据可视化大屏开发流 ThingJS

    三维数据大屏可视化系统包含多源数据连接.生成二维/三维视图.构建可视化大屏.大屏功能应用等一体化服务,基于多年可视化项目经验,ThingJS平台得出从数据源上传到可视化大屏应用的完整流程,供参考. 多 ...

  5. 西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏

    西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据交互系统开发.伴随着物联网和大数据等新型信息技术的普及和应用,数字孪生.3D可视化及大数据等技术融入车间生产,为实现产品创新发展 ...

  6. 郑州数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏

    郑州数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据交互系统开发.在"中国制造2025"大战略背景下,结合和使用新一代信息技术和人工智能技术,实现物理世界和信息 ...

  7. 三维数据可视化软件html5,基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型 | 3D组态|图扑软件|数据可视化|blog...

    前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的同时,在监控系统中面临着严峻的现状问 ...

  8. python 画三维函数图-Python之Numpy:二元函数绘制/三维数据可视化/3D

    意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛.分布.几何形状等),带来直观的感受. 源码 # 绘制二元函数 # 参考文献 # + python画二元函数 ...

  9. python三维图形渲染-基于 pygtk + vtk 实现三维数据可视化(一)

    Gtk+ 与三维图形渲染 Gtk+ 虽然优秀,但我当初考虑使用它来做三维图形渲染窗口时,发现官方没有提供对 OpenGL 图形渲染的集成支持.同类 GUI 库,譬如 Qt 与 wxWidgets,官方 ...

最新文章

  1. Maven实践:版本管理 SNAPSHOT
  2. 【数学与算法】KMeans聚类代码
  3. 字符串GZIP压缩解压
  4. 【Floyed】小萨的烦恼(ssl 1624)
  5. 代码实现:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。...
  6. 文字滚动的另一方法 拆分文字来做到文字滚动
  7. 我10年来的学习和生活
  8. Flutter AppBar 简述
  9. android状态机是线程么,安卓StateMachine运行过程理解(翻译)
  10. Servlet学习-MVC开发模式
  11. Paip.提升用户体验------在C++ Builder 不规则图片按钮实现总结
  12. HTML实现在线取色器
  13. 正则表达式匹配yyyyMMdd日期格式
  14. 【STM32F407开发板用户手册】第14章 STM32F407的电源,复位和时钟系统
  15. Endnote导出目标期刊的参考文献的格式
  16. chrome浏览器版本与驱动不匹配问题的解决办法
  17. Google Chrome 插件推荐
  18. mysql 求订单总金额,MySQL查询 每年 每月 每日 订单数和订单金额
  19. 基于uniapp的校园社区小程序
  20. 【福利】【送书第四弹】机器学习知识体系

热门文章

  1. hive sql 分组拼接同一列字符串和hive sql 分组多行拼接为一行的实现方式
  2. 计算机主机红灯不闪硬盘工作,电脑硬盘指示灯不亮怎么办?如何解决电脑硬盘灯不亮问题...
  3. html改变单选形状,用css实现html中单选框样式改变
  4. 【python学习笔记】面向对象编程
  5. 弘辽科技:互联网巨头争抢直播,谁将成为直播领域的“领头羊”?
  6. 从头学习C语言——(3)输入函数
  7. 被一个问题卡了近两天,下班后我哭了。。。
  8. bcb image 动态大小_实战|使用CSS Paint API动态创建与分辨率无关的可变背景
  9. 无人机数据链简介(链路通信、天线、中继)
  10. 数据库(一)键值约束