一起来学matlab-matlab学习笔记8

基本绘图命令_6 三维绘图

觉得有用的话,欢迎一起讨论相互学习~Follow Me

参考书籍

《matlab 程序设计与综合应用》张德丰等著 感谢张老师的书籍,让我领略到matlab的便捷

《MATLAB技术大全》葛超等编著 感谢葛老师的书籍,让我领略到matlab的高效

三维绘图命令

三维绘图命令plot3

  • plot3命令将绘制二维图形的函数plot的特性扩展到三维空间图形。函数格式除了包括第三维的信息(如Z方向)之外,与二维函数plot相同。其调用格式如下。

    • plot3(x,y,z):当x,y和z是相同的向量时,则绘制以x,y和z元素为坐标的三维曲线;当x,y和z是同型矩阵时,则绘制以x,y和z元素为坐标的三维曲线,且曲线的条数等于矩阵的列数。
    • plot3(x,y,z,'s'):s是指定绘制三维曲线的线型、数据点形和颜色的字符串,省略s时,将自动选择线型、数据点形和颜色。
  • 使用plot3绘制三维螺旋曲线图

  1. t=0:pi/50:10*pi;
  2. plot3(sin(t),cos(t),t,'g*')
  3. grid

绘制空间曲面

  • 三维空间曲面可以绘制出在某一区间内完整的曲面,而不是单根曲线。三维网格图是将邻近的网格顶点(x,Y)对应曲面上的点(X,Y,Z)用线条连接起来形成的。利用mesh和surf绘制三维网线图和曲面图。其中mesh(X,Y,Z)是绘制网格曲面,surf(X,Y,Z)是绘制光滑曲面。

    • mesh(x,y,z,c):绘制由x、y和z指定的参数曲面。x和y必须为向量。若x和y的长度为m和n,则z必须为m×n的矩阵,c是颜色映射数组,决定图形的颜色。
    • mesh(z)和mesh(x,y,z):绘制三维网格图。当只有参数z时,以z矩阵的行下标作为x坐标轴,把z的列下标当作坐标轴;x和y分别为x和y坐标轴的自变量。当有x,y和z参数时,绘制出由坐标(x,y,z)确定的三维网格图形
    • surf(x,y,z,c):完整地画出由c指定用色的曲面图,在完整调用格式中,4个输入量必须是维数相同的矩阵。它们要求x和y是自变量“格点”矩阵;z是格点上的函数矩阵;c是指定各点用色的矩阵,可以默认。默认时,默认着色矩阵是z,即c=z。
  • 画三维函数立体网状图

  1. x=linspace(-2, 2, 20); % x轴上取20
  2. y=linspace(-2, 2, 20); %在y轴上取20
  3. [xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩阵
  4. zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
  5. mesh(xx, yy, zz); % 画出立体网状图

  • 使用surf命令将以上立体网格图改为三维曲面图
  1. x=linspace(-2, 2, 20); % x轴上取20
  2. y=linspace(-2, 2, 20); %在y轴上取20
  3. [xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩阵
  4. zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
  5. surf(xx, yy, zz); % 画出立体曲面图

高级三维绘图改进命令

  1. peaks % 最原始版本图形 F1
  2. [x,y,z]=peaks;
  3. figure;
  4. meshz(x,y,z); % 画上一个参考平面 F2
  5. figure;
  6. waterfall(x,y,z); % 瀑布流水形状网线图 F3
  7. figure;
  8. meshc(x,y,z); % 网格线和等高线 F4
  9. figure;
  10. surfc(x,y,z); % 同时画出曲面图和等高线图 F5
  • F1

  • F2

  • F3

  • F4

  • F5

高级三维绘图改进命令

  1. p=peaks; %peaks 为系统提供的多峰函数
  2. subplot(2,2,1);
  3. mesh(peaks,p);
  4. view(-37.5,30); %指定子图 1 的视点
  5. title('azimuth=-37.5,elevation=30');
  6. subplot(2,2,2);
  7. mesh(peaks,p);
  8. view(-17,60); %指定子图 2的视点
  9. title('azimuth=-17,elevation=60');
  10. subplot(2,2,3);
  11. mesh(peaks,p);
  12. view(-90,0); %指定子图 3 的视点
  13. title('azimuth=-90,elevation=0');
  14. subplot(2,2,4);
  15. mesh(peaks,p);
  16. view(-7,-10); %指定子图 4的视点
  17. title('azimuth=-7,elevation=10')

三维图形的光照控制

  1. x= -1.5:0.2:1.5;y=-1:0.2:1;
  2. [X,Y]=meshgrid(x,y);
  3. Z=sqrt(4-X.^2/9-Y.^2/4);
  4. view(45,45)
  5. subplot(2,2,1);surfl(X,Y,Z, [0,45],[.1 .6 .4 10]);
  6. shading interp
  7. subplot(2,2,2);surfl(X,Y,Z, [20,45],[.3 .6 .4 10]);
  8. shading interp
  9. subplot(2,2,3);surfl(X,Y,Z, [40,45],[.6 .6 .4 10]);
  10. shading interp
  11. subplot(2,2,4);surfl(X,Y,Z, [60,45],[.9 .6 .4 10]);
  12. shading interp

  • matlab提供了灯光设置的函数,其调用格式为: light('Color',选项1,'Style',选项2,'Position',选项3)
  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);

  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);
  4. axis equal; % 横轴纵轴的坐标定标系数设为相同值

  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);
  4. axis equal; % 横轴纵轴的坐标定标系数设为相同值
  5. light('Posi',[1,1,1]);

  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);
  4. axis equal; % 横轴纵轴的坐标定标系数设为相同值
  5. light('Posi',[-1,-1,0]);

  • 光滑表示
  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);
  4. axis equal; % 横轴纵轴的坐标定标系数设为相同值
  5. light('Posi',[-1,-1,0]);
  6. shading interp;

  • 三维点图
  1. plot3(0,1,1,'*');
  2. text(0,1,1,' light');

  • 三维图片拼接

  1. [x,y,z]=sphere(20);
  2. subplot(1,2,1);
  3. surf(x,y,z);
  4. axis equal; % 横轴纵轴的坐标定标系数设为相同值
  5. light('Posi',[-1,-1,0]); % 灯光位置
  6. shading interp; % 光滑
  7. hold on;
  8. plot3(0,1,1,'p');
  9. text(0,1,1,' light');
  10. subplot(1,2,2);
  11. surf(x,y,z);
  12. axis equal;
  13. light('Posi',[1,0,1]); % 灯光位置
  14. shading interp; % 光滑
  15. hold on;
  16. plot3(1,0,1,'p');
  17. text(1,0,1,' light');

柱面和球面的表达

  1. 绘制柱面的cylinder命令:[X,Y,Z]=cylinder(r,n)表示生成半径为r,高度为1的矩阵x,y,z,利用这三个矩阵可以绘制出半径为r,高度为1的柱体,圆柱体的圆周有指定的n个距离相同的点。
  1. figure
  2. subplot(2,2,1)
  3. [x,y,z]=cylinder(3,2)
  4. surf(x,y,z)
  5. subplot(2,2,2)
  6. [x,y,z]=cylinder(3,3)
  7. surf(x,y,z)
  8. subplot(2,2,3)
  9. [x,y,z]=cylinder(3,4)
  10. surf(x,y,z)
  11. subplot(2,2,4)
  12. t=0:pi/10:2*pi;
  13. [X,Y,Z]=cylinder(2+cos(t),30);
  14. surf(X,Y,Z)



2. 绘制球面的sphere命令:[x,y,z]=sphere(n)表示生成三个阶数为(n+1) * (n+1) 的矩阵x,y,z,利用这是三个矩阵可以绘制出圆心位于原点,半径为1的单位球体。

  1. figure
  2. subplot(2,2,1)
  3. [x,y,z]=sphere(100)
  4. surf(x,y,z)
  5. subplot(2,2,2)
  6. [x,y,z]=sphere(100)
  7. plot3(x,y,z)
  8. subplot(2,2,3)
  9. [x,y,z]=sphere(100)
  10. surfl(x,y,z)
  11. subplot(2,2,4)
  12. [x,y,z]=sphere(100)
  13. mesh(x,y,z)

matlab学习笔记8 基本绘图命令-三维绘图的更多相关文章

  1. Matlab学习笔记 figure函数

    Matlab学习笔记 figure函数 matlab中的 figure 命令,能够创建一个用来显示图形输出的一个窗口对象.每一个这样的窗口都有一些属性,例如窗口的尺寸.位置,等等.下面一一介绍它们. ...

  2. matlab学习笔记---(1)

    Matlab学习笔记 一. Desktop Basics (Matlab 基础知识) 当你打开Matlab的时候,matlab按照以下默认的方式展示出来. 该桌面主要包括以下几部分内容: 当前文件夹: ...

  3. 【数学建模】MATLAB学习笔记——函数式文件

    MATLAB学习笔记——函数式文件 引入函数式文件 说明: 函数式文件主要用于解决计算中的参数传递和函数调用的问题. 函数式的标志是它的第一行为function语句. 函数式文件可以有返回值,也可以没 ...

  4. matlab学习笔记 bsxfun函数

    matlab学习笔记 bsxfun函数 最近总是遇到 bsxfun这个函数,前几次因为无关紧要只是大概看了一下函数体去对比结果,今天再一次遇见了这个函数,想想还是有必要掌握的,遂查了些资料总结如下. ...

  5. matlab学习笔记(一)单元数组

    matlab学习笔记(一)单元数组 1.floor(x) :取最小的整数 floor(3.18)=3,floor(3.98)=3 ceil(x)  :取最大的整数 ceil(3.18)=4,ceil( ...

  6. Hadoop源码学习笔记(6)——从ls命令一路解剖

    Hadoop源码学习笔记(6) ——从ls命令一路解剖 Hadoop几个模块的程序我们大致有了点了解,现在我们得细看一下这个程序是如何处理命令的. 我们就从原头开始,然后一步步追查. 我们先选中ls命 ...

  7. docker学习笔记二:常用命令

    docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...

  8. matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色

    一起来学matlab-matlab学习笔记9 高级绘图命令_2 图形的高级控制_视点控制和图形旋转_色图和颜色映像_光照和着色 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 < ...

  9. matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象

    一起来学matlab-matlab学习笔记9 高级绘图命令_1 图形对象_根对象,轴对象,用户控制对象,用户菜单对象 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matl ...

随机推荐

  1. 【云栖社区002-二分估值法】要求不用数学库,求 sqrt (2)精确到小数点后10位(Java版)

    如题 初步审题的时候,想到的是暴力搜索:初步设置一个合法的种子,依次按照1e-2,1e-3,1e-4,1e-5,1e-6 , 1e-7...暴力搜索,额,就是太麻烦了. 打比赛搜索写多了,一看见题目就 ...

  2. 如果在使用谷歌的gson的时候,在返回时间类型的数据的时候,

    可能会出现在long类型的时间后面多3个0 如下图所示 可以自己创建一个json序列化的类 public class Date2LongSerializer extends JsonSerialize ...

  3. django-自定义文件上传存储类

    文件储存API:https://yiyibooks.cn/xx/django_182/ref/files/storage.html 编写自定义存储系统:https://yiyibooks.cn/xx/ ...

  4. Tips on Probability Theory

    1.独立与不相关 随机变量X和Y相互独立,有:E(XY) = E(X)E(Y). 独立一定不相关,不相关不一定独立(高斯过程里二者等价) .对于均值为零的高斯随机变量,“独立”和“不相关”等价的. 独 ...

  5. (尚022)Vue案例_初始化显示(十分详细!!!)

    项目结构目录 所需资料: comment_page文件夹: ====================================================================== ...

  6. WinDbg常用命令系列---单步执行p*

    p (Step) p命令执行单个指令或源代码行,并可选地显示所有寄存器和标志的结果值.当子例程调用或中断发生时,它们被视为单个步骤. 用户模式: [~Thread] p[r] [= StartAddr ...

  7. Omnibus-ctl: What is it and what can it do for you?

    转自:https://blog.chef.io/2015/05/26/omnibus-ctl-what-is-it-and-what-can-it-do-for-you/ Are you buildi ...

  8. JMeter学习2

    JMeter学习(四)参数化 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化 ...

  9. Theano入门笔记2:scan函数等

    1.Theano中的scan函数 目前先弱弱的认为:相当于symbolic的for循环吧,或者说计算图上的for循环,也可以用来替代repeat-until. 与scan相比,scan_checkpo ...

  10. 61、Spark Streaming:部署、升级和监控应用程序

    一.部署应用程序 1.流程 1.有一个集群资源管理器,比如standalone模式下的Spark集群,Yarn模式下的Yarn集群等. 2.打包应用程序为一个jar包. 3.为executor配置充足 ...