021 三维数据可视化
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 绘制隐函数步骤
- 坐标范围确定;
- 使用meshgrid函数产生网格点;
- 隐函数定义,可利用@符号获取其函数句柄,实现对函数的操作;
- 计算坐标空间范围内的格点函数值val;
- 调用p=isosurface(x, y, z, val,0)函数计算隐函数等值点的位置并返回到p;
- 调用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 习题
- 用plot,fplot绘制函数y=cos(tanx)y=cos(tan x)y=cos(tanx)的图形。
- 用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 三维数据可视化相关推荐
- matlab三维可视化,MATLAB中三维数据可视化及应用
Value Engineering -----------------------作者简介:张晓利(1976-),女,陕西临潼人,硕士研究生,讲师,研究方向为 计算机应用. 0引言 MATLAB 在数 ...
- 为什么要用三维数据可视化?
为什么要用三维数据可视化?在数据化的发展过程中,伴随着数据总量的不断扩大,大数据中心的工程规模越来越大,对于计算机的软件的总数和要求也不断增加.不但机器设备相对密度愈来愈高,工作人员对大数据中心视频监 ...
- python三维数据可视化的多种方法
目录 用 Matplotlib 实现带颜色映射的三维散点图 代码 效果图 用 Seaborn 绘制三维散点图 代码 效果图 用 Plotly 绘制三维表面图 代码 效果图 Python 中的一些库,如 ...
- 基于WebGL的三维数据可视化大屏开发流 ThingJS
三维数据大屏可视化系统包含多源数据连接.生成二维/三维视图.构建可视化大屏.大屏功能应用等一体化服务,基于多年可视化项目经验,ThingJS平台得出从数据源上传到可视化大屏应用的完整流程,供参考. 多 ...
- 西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏
西安数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据交互系统开发.伴随着物联网和大数据等新型信息技术的普及和应用,数字孪生.3D可视化及大数据等技术融入车间生产,为实现产品创新发展 ...
- 郑州数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据可视化交互大屏
郑州数字孪生智能工厂,数字工厂智能车间建设,3d可视化工业建模,三维数据交互系统开发.在"中国制造2025"大战略背景下,结合和使用新一代信息技术和人工智能技术,实现物理世界和信息 ...
- 三维数据可视化软件html5,基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型 | 3D组态|图扑软件|数据可视化|blog...
前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的同时,在监控系统中面临着严峻的现状问 ...
- python 画三维函数图-Python之Numpy:二元函数绘制/三维数据可视化/3D
意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛.分布.几何形状等),带来直观的感受. 源码 # 绘制二元函数 # 参考文献 # + python画二元函数 ...
- python三维图形渲染-基于 pygtk + vtk 实现三维数据可视化(一)
Gtk+ 与三维图形渲染 Gtk+ 虽然优秀,但我当初考虑使用它来做三维图形渲染窗口时,发现官方没有提供对 OpenGL 图形渲染的集成支持.同类 GUI 库,譬如 Qt 与 wxWidgets,官方 ...
最新文章
- Maven实践:版本管理 SNAPSHOT
- 【数学与算法】KMeans聚类代码
- 字符串GZIP压缩解压
- 【Floyed】小萨的烦恼(ssl 1624)
- 代码实现:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。...
- 文字滚动的另一方法 拆分文字来做到文字滚动
- 我10年来的学习和生活
- Flutter AppBar 简述
- android状态机是线程么,安卓StateMachine运行过程理解(翻译)
- Servlet学习-MVC开发模式
- Paip.提升用户体验------在C++ Builder 不规则图片按钮实现总结
- HTML实现在线取色器
- 正则表达式匹配yyyyMMdd日期格式
- 【STM32F407开发板用户手册】第14章 STM32F407的电源,复位和时钟系统
- Endnote导出目标期刊的参考文献的格式
- chrome浏览器版本与驱动不匹配问题的解决办法
- Google Chrome 插件推荐
- mysql 求订单总金额,MySQL查询 每年 每月 每日 订单数和订单金额
- 基于uniapp的校园社区小程序
- 【福利】【送书第四弹】机器学习知识体系
热门文章
- hive sql 分组拼接同一列字符串和hive sql 分组多行拼接为一行的实现方式
- 计算机主机红灯不闪硬盘工作,电脑硬盘指示灯不亮怎么办?如何解决电脑硬盘灯不亮问题...
- html改变单选形状,用css实现html中单选框样式改变
- 【python学习笔记】面向对象编程
- 弘辽科技:互联网巨头争抢直播,谁将成为直播领域的“领头羊”?
- 从头学习C语言——(3)输入函数
- 被一个问题卡了近两天,下班后我哭了。。。
- bcb image 动态大小_实战|使用CSS Paint API动态创建与分辨率无关的可变背景
- 无人机数据链简介(链路通信、天线、中继)
- 数据库(一)键值约束