5.1 绘制三维曲面

文章目录

  • 5.1 绘制三维曲面
  • 5.2 生成栅格数据
  • 5.3 绘制网格曲面命令
  • 5.4 隐藏线的显示和关闭

在 MATLAB 中, 我们可使用函数 surfsurfc 绘制三维曲面图. 调用格式如下:

1. surf(Z)
2. surf(X,Y,Z)
3. surf(X,Y,Z,C)
4. surf(...,'PropertyName',PropertyValue)
5. surfc(...)
  1. 以矩阵 ZZZ 所指定的参数创建一个渐变的三维曲面. 坐标 $x = 1:n,\ \ y = 1:m, $ 其中 [m,n]=size(Z)[m,n] = size(Z)[m,n]=size(Z)
  2. 以 ZZZ 确定的曲面高度和颜色, 按照 X,YX,YX,Y 形成的格点矩阵, 创建一个渐变的三维曲面. X,YX,YX,Y 可为向量或矩阵, 若 X,YX,YX,Y 为向量, 则必须满足 m=size(X),n=size(Y),[m,n]=size(Z).m = size(X), n=size(Y), [m,n] = size(Z).m=size(X),n=size(Y),[m,n]=size(Z).
  3. 以 ZZZ 确定的曲面高度, CCC 确定的曲面颜色, 按 X,YX,YX,Y 形成的格点矩阵创建一个渐变的三维曲面.
  4. 设置曲面属性.
  5. 在曲面下绘制曲面的等高线.

注:

  1. 在图形窗口, 需要将图形属性 Render 设为 Painters, 才可以显示出坐标名称和图形标题.
  2. 图中可见, 球面被网格线分割成多块. 每一块可视为一块嵌在线条之间的补片, 这些线条和补片的渐变颜色可由命令 shading 所指定. 格式为:
1. shading faceted
2. shading flat
3. shading interp
  1. 默认值, 在绘制曲面时采用分层网格线.
  2. 不绘制线条, 补片颜色单一, 颜色平滑分布.
  3. 不绘制线条, 补片以插值加色, 颜色以插补式分布, 计算量更大.

[例]

绘制三维球体.

[X,Y,Z] = sphere(25);         %计算球体的三维坐标
subplot(2,2,1);
surf(X,Y,Z)                   %绘制球体的三维图形
xlabel('x');
ylabel('y');
zlabel('z');
title('Shading Facetd');subplot(2,2,2);
surf(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');
shading flat;
title('Shading Flat');subplot(2,2,3);
surf(X,Y,Z)
xlabel('x');
ylabel('y');
zlabel('z');
shading interp;
title('Shading Interp');

图形输出如下:

除了 surfsurfc 函数以外, 还可以使用下列函数绘制不同的三维曲面:

  1. 使用 sphere 函数绘制三维球面. 调用格式为:

    [x,y,z] = sphere(n)     %n为球面的光滑程度, 默认值为20
    
  2. 使用 cylinder 函数绘制三维柱面. 调用格式为:
    [x,y,z] = cylinder(R,n)
    %R为存放柱面各等间隔高度上半径的向量, n表示圆柱圆周上等间隔点个数, 默认为20.
    

5.2 生成栅格数据

栅格数据指按照网格单元的行列排列, 具有不同灰度或颜色的数据阵列. 每个单元的位置由其行列号定义, 所表示的实际位置含于栅格行列位置中. 数据组织中的每个数据表示事物或现象的非几何属性, 或指向其属性的指针.

在绘制网格曲面前, 必须先知道每个四边形顶点的三维坐标值. 绘制曲面的一般情况是: 先知道四边形每个顶点的二维坐标(x,y), 再利用某个函数公式计算出四边形各个顶点的 zzz 坐标.

此处使用的 (x,y)(x,y)(x,y) 二维坐标是一种栅格形的数据点, 可由 MATLAB 所提供的 meshgrid 函数产生. 调用格式为;

[X,Y] = meshgrid(x,y)

该命令功能是由 xxx 向量和 yyy 向量通过复制的方法产生绘制三维图形时所需的栅格数据: XXX 和 YYY 矩阵.

注:

  1. 向量 x,yx,yx,y 分别代表三维图形在 XXX 轴, YYY 轴方向上的取值数据点.
  2. x,yx,yx,y 分别是向量, 而 X,YX,YX,Y 是矩阵.
  3. 我们还可以使用函数 georasterref 命令绘制栅格数据. 调用格式如下;
R = georasterref()

[例]

使用地理栅格数据绘制经纬度曲线:

maps                       %查看当前可用的投影方式%% 导入数据:全球海岸线
load coast%% 绘图
axesm robinson
patchm(lat,long,'g');%% 设置属性
setm(gca);                  %查看当前可设置的所有图形坐标轴的属性
setm(gca,'Frame','on');     %使框架可见
getm(gca,'Frame');          %使用getm可以获取指定的图形坐标轴的属性
setm(gca,'Grid','on');      %打开网格
setm(gca,'MLabelLocation',180);         %标上经度刻度标签,每隔60度
setm(gca,'MeridianLabel','on');         %设置纬度刻度标签可见
setm(gca,'PLabelLocation',[-90:90:90]); %标上纬度刻度标签
setm(gca,'ParallelLabel','on');         %设置经度刻度标签可见
setm(gca,'MLabelParallel','south')      %将经度刻度标签放在下部(南方)
setm(gca,'Origin',[0,90,0]);            %设置地图中心位置和绕中心点的轴旋转角度

输出图形如下:

5.3 绘制网格曲面命令

MATLAB 中可通过 mesh 函数绘制三维网格曲面图. 该函数可生成指定的网线面和它的颜色. 函数调用格式如下:

1. mesh(X,Y,Z)
2. mesh(Z)
3. mesh(...,C)
4. mesh(..., PropertyName, PropertyValue, ...)
5. h = mesh(...)
  1. 绘制出颜色由 X,Y,ZX,Y,ZX,Y,Z 指定的网线面. 若 X,YX,YX,Y 均为向量, length(X) = n, length(Y) = m, [m,n] = size(Z) , 空间中的点 (X(j),Y(I),Z(I,j))(X(j),Y(I),Z(I,j))(X(j),Y(I),Z(I,j)) 为所绘制曲面网线的交点.
  2. [n,m]= size(Z)X = 1:n, Y = 1:m, 其中 zzz 为定义在矩形划分区域上的单值函数.
  3. 用由矩阵 CCC 所指定的颜色绘制网线网格图.
  4. 对指定的属性 PropertyName 设定属性值 PropertyValue ,可在同一语句中对多个属性进行设置.
  5. 返回 surface 图形对象句柄.

函数 mesh 运算规则为:

  1. 确定数据 X,Y,ZX,Y,ZX,Y,Z 的范围. 可使用命令 axis 对当前轴的 XLinMode,YLinMode,ZLinMode 进行设置.
  2. 参量 CCC 的范围决定颜色的"刻度化程度".
  3. 网格图显示命令生成将 ZZZ 的数据值用当前色图表现出来的颜色值.

[例]

在 Descartes 坐标系中绘制下列函数的网格曲面图:
f(x,y)=sin(x2+y2)x2+y2f(x,y) = \frac{sin(\sqrt{x^{2} + y^{2}})}{\sqrt{x^{2} + y^{2}}}f(x,y)=x2+y2​sin(x2+y2​)​

x = -8:0.5:8;
y = x;
[X,Y] = meshgrid(x,y);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
mesh(X,Y,Z)
grid on

图形输出如下:

此外, MATLAB还有两个 mesh 函数的派生函数:

  1. meshc: 同时在 x−yx-yx−y 平面上绘制函数的等值线.
  2. meshz: 在网格图基础上, 在图形底部外侧绘制 zzz 轴边框线.

[例]

[X,Y] = meshgrid(-3:0.5:3);
Z = 2*X.^2 - 3*Y.^2;
subplot(2,2,1)
plot3(X,Y,Z)
title('plot3')subplot(2,2,2)
mesh(X,Y,Z)
title('mesh')subplot(2,2,3)
meshc(X,Y,Z)
title('meshc')subplot(2,2,4)
meshz(X,Y,Z)
title('meshz')

图形输出如下;

5.4 隐藏线的显示和关闭

是否显示网格曲面的隐藏线会对图形显示效果产生一定影响. MATLAB 提供了相关控制命令 hidden , 调用这种命令的格式为 hidden onhidden off, 用于开启/关闭网格曲面的隐藏线.

[例]

分别绘制有无隐藏线的函数:
f(x,y)=sin(x2+y2)x2+y2f(x,y) = \frac{sin(\sqrt{x^{2} + y^{2}})}{\sqrt{x^{2} + y^{2}}}f(x,y)=x2+y2​sin(x2+y2​)​
网格曲面图.

x = -8:0.5:8;
y = x;
[X,Y] = meshgrid(x,y);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
subplot(1,2,1)
mesh(X,Y,Z)
grid on
hidden on
title('hidden on')
axis([-10 10 -10 10 -1 1])subplot(1,2,2)
mesh(X,Y,Z)
grid on
hidden off
title('hidden off')
axis([-10 10 -10 10 -1 1])

图形输出如下:

MATLAB数学建模:数据图形可视化-三维绘图函数相关推荐

  1. 数据预处理 拉依达准则 matlab,数学建模数据预处理.doc

    数据预处理 摘要 目前,大量研究工作都集中于数据挖掘算法的探讨,而忽略了对数据预处理的研究.事实上,数据预处理对数据挖掘十分重要,而且必不可少.要使数据挖掘出有效的知识,必须为其提供干净,准确,简洁的 ...

  2. matlab插值与拟合例题_菜鸟进阶系列:MATLAB数学建模·数据插值与拟合

    本篇算是开始数据处理了.首先明确俩概念:插值和拟合.两者最根本的共同点都是基于现有数据进行预测.推演,比如根据现有的天文观测数据预测天体位置.插值问题是数学史上的经典问题,拉格朗日.高斯.牛顿等著名数 ...

  3. (一)MATLAB数学建模——数据拟合

    目录 一.简介 二.多项式拟合 (一)指令介绍 (二)代码 三.指定函数拟合 (一)指令介绍 (二)代码 一.简介 曲线拟合也叫曲线逼近,主要要求拟合的曲线能合理反映数据的基本趋势,而不一定要求曲线一 ...

  4. 数学建模matlab imread,《matlab数学建模方法与实践》第三章 数据的处理

    3.1数据的获取 3.1.1从Excel中读取数据 a= xlsread('路径',n(sheetn),'A(n-1):Bn(读入的数据范围)') 3.1.2从TXT中读取数据 3.1.2.1.1 同 ...

  5. MATLAB数学建模(二):评估股票的价值和风险

    以下内容为学习笔记,更多的内容请访问原链接:https://mp.weixin.qq.com/s/fcCxFpiLMT1uFsyTFux_ig? 以下学习笔记与原链接的不同之处在于:对原链接内容进行了 ...

  6. 《MATLAB数学建模方法与实践(第3版)》第2章学习笔记

    第2章 MATLAB数学建模快速入门 2.1 MATLAB快速入门 2.1.1 MATLAB概要 MATLAB是矩阵实验室(Matrix Laboratory)的缩写.MATLAB的基本数据单元是矩阵 ...

  7. 数学建模专栏 | 第二篇 :MATLAB 数学建模快速入门

    MATLAB 虽然功能很强大,但上手却很容易,尤其是 R2013a 以后的版本, 使用起来更加容易. 现在使用 MATLAB 的一个理念就是像 Word 一样去使用 MATLAB.本讲将通过一个实例介 ...

  8. 雅可比法实验报告matlab,数学建模实验报告范文 数学建模的实验报告

    数学建模 实验报告 姓名:学院: 专业班级: 学号: 数学建模实验报告(一) --用最小二乘法进行数据拟合 一.实验目的: 1. 学会用最小二乘法进行数据拟合. 2. 熟悉掌握matlab 软件的文件 ...

  9. matlab数学建模方法与实践 笔记1:快速入门

    入门案例 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部代码 代码在Cha2文件夹下 1.导入数据 2.数据探索 3.多项式拟合 4.发布功能 5.数据类型 6.全部 ...

最新文章

  1. 性能压测服务器502报错,一种交易系统的性能测试方法及相关服务器
  2. 关于VS2005不能更改字体的问题
  3. c语言常用绘图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  4. java interpreter_解释器模式(Interpreter)Java
  5. C++ 连接Mongo数据库实现增删改差
  6. java day57【 Spring 概述 、 IoC 的概念和作用、使用 spring 的 IOC 解决程序耦合 】...
  7. 【课本】【No.4】数字特征 离散/连续均值/方差 随机向量 协方差 相关系数 矩 偏度 峰度 多维均值/协方差 运算性质 条件期望 随机个随机向量的和 正态中的条件期望是线性函数
  8. 玩一下就停不下来的h5休闲小游戏
  9. android libpng16,Android NDK 开发之 CMake 编译 libpng
  10. Swarm(bzz)节点服务器配置要求
  11. DRSL: Deep Relational Similarity Learning for Cross-modal Retrieval-多模态学习总结
  12. 穆迪分析宣布推出云服务,助力银行实现监管合规
  13. 微型计算机机安装硬盘教程,装机DIY之硬盘安装方法 不同硬盘安装方法图解教程...
  14. C语言基于easyx的打字训练软件。
  15. linux执行lsof命令_linux系统 lsof命令详解
  16. 【烈日炎炎战后端】Spring(2.1万字)
  17. Topk实现(C++)
  18. NOIP2011 瑞士轮 题解
  19. 杭电2001_杭电考研851数据结构2001-2015年真题
  20. 目标检测之one-stage和two-stage网络的区别

热门文章

  1. Web前端html5+css3前端开发入门学习笔记
  2. php1064,PHP创建表错误1064
  3. 产品运营眼中,「好的产品经理」是什么样子?
  4. 大数据的4v特征、数据预处理
  5. STM32从零开始(四)详解GPIO库函数
  6. linux系统搭建论坛,Linux下搭建discuz论坛
  7. 关于ads1255/6的基本使用
  8. ARM汇编指令立即数规范和判断
  9. 首次回收重型猎鹰火箭全部助推器,SpaceX再创历史!...
  10. vue过滤器——vue全局过滤器,