matlab绘图(三)绘制三维图像

2023-11-02

目录

一、绘制三维曲线

 二、绘制三维曲面

1.meshgrid函数

 2.mesh和surf函数


一、绘制三维曲线

1.最基本的绘制三维曲线的函数—plot3

plot3(x1,y1,z1, 选项 1,x2,y2,z2, 选项 2,…, xn,yn,zn , 选项 n)
其中,每一组 x y z 组成一组曲线的坐标参数,选项的定义和 plot 函数相同。当 x y z 是同维向量时,则 x y z 对应元素构成一条三维曲线;当 x y z 是同维矩阵时,则以 x y z 对应列元素绘制三维曲线,曲线条数等于矩阵列数。(plot详细用法可以参考我的博客:matlab绘图(一)

例1. 绘制三维曲线

 代码如下:

t=0:pi/10:10*pi;%取点
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;%计算x,y,z坐标
plot3(x,y,z,'Color','#4F4F2F','Linewidth',1.5);
axis([-30 30 -30 30 0 35])%设置坐标范围
title('Line in 3-D Space');%标题
xlabel('X');ylabel('Y');zlabel('Z');%x,y,z轴标签
grid on;%开启网格线

绘制图形如下:

 2.简易绘制三维曲线

对于参数形式表示的三维曲线,还可以用简易绘图函数ezplot3绘制。

调用格式:ezplot3(x,y,z,[a,b])

在区间ab绘制由参数方程= x (t)= y (t= z (t确定三维曲线。未指定区间时,默认在区间0 < t < 2pi绘制图形。

例2. 绘制三维曲线

syms t
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;%计算x,y,z坐标
ezplot3(x,y,z,[0,10*pi])

运行结果;

 二、绘制三维曲面

Matlab 中绘制三维曲面的基本方法: (按某种规则)在曲面上取 mxn 个网格点 Qij ,设它们的 x y z 坐标分别构成矩阵 X Y Z 则用 mesh(X,Y,Z) surf(X,Y,Z) 就可以画出该曲面。

1.meshgrid函数

对于函数曲面,即由 z=f( x,y ) a<x<b, c<y<d 表示的曲面,通常,先在 x 轴的区间 [ a b ] 内取 n 个点 ,设这些点的 x 坐标构成向量 x; 再在 y 轴的区间 [ c ] 内取 m 个点 ,设这些点的 y 坐标构成向量 y; 由各划分点分别作平行于两坐标轴的直线,则得到二维矩形区域 a<x<b, c<y<d 内的 mxn 个网格点 P ij 。这 mxn 个网格点的 x 坐标构成 mxn 的矩阵 X ,它们的 y 坐标构成 mxn 的矩阵 Y ,即第 ( i,j ) 个网格点 P ij 的坐标为 (X( i,j ),Y( i,j )) 。如何由向量 x, y 得到矩阵 X, YMatlab 专门提供了一个函数 meshgrid ,它的功能就是由 x,y 轴的划分点(向量 x,y )生成二维网格点 P ij 的坐标矩阵 X,Y
格式 [X,Y]= meshgrid ( x,y ); y=x 时,可以简化为 [X,Y]= meshgrid (x)
将二维矩形区域 a<x<b, c<y<d 内的 mxn 个网格点 P ij 通过 z=f( x,y ) 映射到曲面上,就得到曲面上的 mxn 个点 Q ij ,第 ( i,j ) 个点 Q ij 的坐标为 (X( i,j ),Y( i,j ), Z( i,j )), Q ij x,y 坐标与 P ij 的相同,因此,   Q ij x,y 坐标构成的矩阵分别是由 meshgrid 函数生成的X,Y. z 坐标构成的矩阵 Z 可以根据 Z( i,j )=f(X( i,j ),Y( i,j )) 利用点运算得到。 生成了曲面上 mxn 个网格点 Qij x,y,z 坐标矩阵 X Y Z 后,利用 mesh(X,Y,Z) surf(X,Y,Z) 等函数就可以把这张曲面画出来。

 2.mesh和surf函数

mesh函数用于绘制三维网格图,surf用于绘制三维曲面图,各线条之间的补面用颜色填充。以下介绍mesh的使用格式 (surfmesh的使用格式相同)。

mesh(X,Y,Z,C) : 其中,X,Y,Z 分别是由曲面上mxn个点的x坐标、y坐标和z坐标构成的mxn的矩阵,即: (X(i,j),Y(i,j),Z(i,j))是第(i,j)个网格点Pij的坐标, C(i,j)是Pij的颜色值。

mesh(X,Y,Z) 使用C=Z(颜色值正比于高度值)

mesh(x,y,Z)mesh(x,y,Z,C) :使用两个向量代替两个矩阵,要求: length(x)=n, length(y)=m ,[m,n]=size(Z),第(i,j)个网格点Pij的坐标为(x(j),y(i),Z(i,j))

mesh(Z):等价于mesh(1:n,1:m,Z)。

mesh(Z,C):等价于mesh(1:n,1:m,Z,C)。

例3.绘制函数z=x*exp(-x^2-y^2)[-2,2]x[-3,3]内的图形。下面两段代码效果是完全一样的。

%% figure1
figure(1)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z);
title('figure 1')
colorbar
%% figure2
figure(2)
x=-2:0.1:2;m=size(x,2);
y=-3:0.1:3; n=size(y,2);
Z=zeros(n,m);
for i=1:m
    for j=1:n
        Z(j,i)=x(i)*exp(-x(i)^2-y(j)^2);
    end
end
mesh(x,y,Z);
colorbar
title('figure 2')

 结果展示:

 曲面图绘制(只需将mesh改为surf即可),这十张图片体现不同的颜色映射风格,标题为对应的colormap的值。

代码如下:

%% figure 1
figure(1)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('hsv')
colormap('hsv')
shading flat
%% figure 2
figure(2)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('jet')
colormap('jet')
shading interp
%% figure 3
figure(3)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('copper')
colormap('copper')
shading interp
%% figure 4
figure(4)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('bone')
colormap('bone')
shading interp
%% figure 5
figure(5)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('flag')
colormap('flag')
shading interp
%% figure 6
figure(6)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('pink')
colormap('pink')
shading interp
%% figure 7
figure(7)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('spirng')
colormap('spring')
shading interp

%% figure 8
figure(8)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('summer')
colormap('summer')
shading interp

%% figure 9
figure(9)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('autumn')
colormap('autumn')
shading interp

%% figure 10
figure(10)
x=-2:0.1:2;   y=-3:0.1:3; 
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2-Y.^2);
surf(X,Y,Z);
title('winter')
colormap('winter')
shading interp

图像结果展示:

 

 

 

 

 例4.绘制三维曲面图= sinx^2 + cosy^2x:[0,pi]y:[0,pi/2]

代码:

[x,y]=meshgrid(0:pi/100:pi, 0:pi/100:pi/2);
z=sin(x.^2)+cos(y.^2);
surf(x,y,z);
axis([0 4 0 1.8 -1.5 1.5]);
colormap('prism')
shading interp
colorbar

 运行结果:

这节先说这么多,下期将继续分享!

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab绘图(三)绘制三维图像 的相关文章

  • 从终端调用时 uvicorn 不工作

    我尝试通过 pip3 在系统上安装 uvicorn 这有效 但是我无法从命令行运行相同的命令 有关如何解决此问题的任何指示 Requirement already satisfied uvicorn in home vhawk19 loca
  • cv2.face.mindistancepredictcollector() 错误

    我已经安装了带有额外模块的 opencv 3 1 0 但是当我尝试使用 gt gt gt s cv2 face MinDistancePredictCollector 它返回一个错误 Traceback most recent call l
  • Python 按文件夹模块导入

    我有一个目录结构 example py templates init py a py b py a py and b py只有一个类 名称与文件相同 因为它们是猎豹模板 纯粹出于风格原因 我希望能够在中导入和使用这些类example py像
  • Accel 无法在 gedit 3 插件中工作

    我试图为 Gedit 3 编写一个使用 GObject 自省的小插件 下面显示的代码的相关部分只是为了建立一个环境 然后我可以将函数放入按钮的回调中 但是 该按钮的加速器不起作用 这段代码有什么问题 我正在使用教程here http www
  • Pygame 玩家精灵没有出现

    我一直在为学校计算机课做这个项目 但无法让玩家精灵出现 有人可以帮忙吗 当我运行主游戏循环时 除了玩家精灵之外 所有内容都正确显示 它应该由于箭头输入而在屏幕上移动并受到重力的影响 当我删除图像并仅使用对象类和矩形时 该代码也有效 impo
  • WTForms 中的小数字段舍入

    我有一个包含价格小数字段的表单 如下所示 from flask ext wtf import Form import wtforms from wtforms validators import DataRequired from deci
  • Python MySQL 模块

    我正在开发一个需要与 MySQL 数据库交互的 Web 应用程序 但我似乎找不到任何真正适合 Python 的模块 我特别寻找快速模块 能够处理数十万个连接 和查询 所有这些都在短时间内完成 而不会对速度产生重大影响 我想我的答案将是游戏领
  • int 对象在尝试对数字的数字求和时不可迭代? [复制]

    这个问题在这里已经有答案了 我有这个代码 inp int input Enter a number for i in inp n n i print n 但它抛出一个错误 int object is not iterable 我想通过将每个
  • 使用子图绘制 pandas 数据框 (subplots=True):放置图例并使用紧凑的布局

    我真的很喜欢 pandas 来处理和分析大数据集 到目前为止 我主要使用 matplotlib 进行绘图 但现在想使用 pandas 自己的绘图功能 基于 matplotlib 因为它需要更少的代码 并且在大多数情况下对我来说似乎足够了 尤
  • 将 csv 文件按多列拆分为 panda 数据框

    我有一个包含多列的 tsv 文件 有 10 多列 但对我来说重要的列是名称为 user name shift id url id 的列 我想创建一个数据框 首先根据用户名分隔整个 csv 文件 即只有具有相同用户名的行才会分组在一起 从该块
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • Python3.1中的视图?

    Python3 1中的视图到底是什么 它们的行为方式似乎与迭代器类似 并且它们也可以具体化为列表 迭代器和视图有何不同 据我所知 视图仍然附加到创建它的对象上 对原始对象的修改会影响视图 来自docs http docs python or
  • 监控单个文件

    我需要监控 使用watchdog http pythonhosted org watchdog index html 单个文件 而不是整个目录 避免监视整个目录的最佳方法是什么 我想this http pythonhosted org wa
  • 如何替换被测模块的文件访问引用

    pyfakefs https code google com p pyfakefs 听起来非常有用 它 最初是作为核心 Python 模块的一个适度的假实现来开发的 以支持中等复杂的文件系统交互 并于 2006 年 9 月在 Google
  • 安排 Asyncio 任务每 X 秒执行一次?

    我正在尝试创建一个 python 不和谐机器人 它将每隔 X 秒检查一次活跃会员 并根据会员的在线时间奖励积分 我正在使用 asyncio 来处理聊天命令 这一切都正常 我的问题是找到一种方法来安排每隔 X 秒异步检查一次活动成员 我已经阅
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • 连接运算符 + 或 ,

    var1 abc var2 xyz print literal var1 var2 literalabcxyz print literal var1 var2 literal abc xyz 除了带有 的自动空格之外 两者有什么区别 哪个通
  • Python列表问题

    我在使用 python 列表时遇到问题 简化版本是 mylist1 some items in a list mylist2 mylist1 mylist1 pop i mylist insert i item print mylist1
  • Tensorflow ctc_loss_calculator:找不到有效路径

    当运行我的神经网络 双向 LSTM 进行音频识别时 我使用连接主义时间分类 CTC 但在某些时候 训练网络时我几乎每批都会收到来自 Tensorflow 的警告 W tensorflow core util ctc ctc loss cal

随机推荐

  • idea新建一个Spring项目(最基础)

    首先 笼统介绍一下 什么是spring 1 Spring 的主要作用就是为代码 解耦 降低代码间的耦合度 根据功能的不同 可以将一个系统中的代码分为主业务逻辑与系统级业务逻辑两类 它们各自具有鲜明的特点 主业务代码间逻辑联系紧密 有具体的专
  • 【MAVEN】Maven依赖和项目代码分离打包,依赖包自动同步到服务器

    Maven分离lib打包 lib包自动同步 加速项目部署 目标 整体步骤 Maven配置 1 分离打包 配置打包 将依赖jar拷贝到外部 2 编辑MANIFEST MF 本地 lt gt 服务器lib快速同步 1 使用前提 2 实现同步 目
  • R语言 编写自定义函数

    自定义函数 R语言实际上是函数的集合 用户可以使用base stats等包中的基本函数 也可以编写自定义函数完成一定的功能 一个函数的结构大致如下所示 myfunction lt function arglist statements re
  • 网络数据保障ptop_网络影响未来十大预言

    2007年1月23日 CNNIC发布了第19次互联网报告 报告数据显示 中国的互联网正在很多方面发生改变 2007年这一趋势将变得更加明显 1 网络越来越实用 56 1 的用户上网经常收发邮件 上网看新闻第一次退居次席 估计不远的将来 写信
  • 【邻接表】69 邻接表:构造有权图

    问题描述 目的 使用C 模板设计并逐步完善图的邻接表抽象数据类型 ADT 内容 1 请参照图的邻接矩阵模板类原型 设计并逐步完善图的邻接表ADT 由于该环境目前仅支持单文件的编译 故将所有内容都集中在一个源文件内 在实际的设计中 推荐将抽象
  • JVM 虚拟机

    JDK1 2 Exact VM虚拟机优化 能够准确的判断内存中数时执行内存引用还是整数值 从而减少了句柄的中间开销 提高了熟读 Exact VM因它使用准确式内存管理 Exact Memory Management 也可以叫Non Cons
  • 内连接、外连接、左连接、右连接

    连接是使用一定条件将两个表合在在一起的操作 包括内连接 inner join 和外连接 outer join 1 内连接 等值连接 两个表中都满足相关条件的记录才被选择出来 2 外连接包括左外连接 左连接 left join 和右外连接 右
  • 美国一桶牛奶多少钱?

    你好 我是郭震 zhenguo 最近 关注我的朋友中有几位 想叫我多分享下美国的生活 今天我就从一个很小的生活点入手 牛奶 开始 牛奶在美国超市一般都是下面的这种大桶 比如Costco超市里 一般提供以下两种 口感有些不同 但是价格很相似
  • JAVA学习经验谈

    本文是我自2002年9月开始JAVA学习以来的一点经验之谈 首先我不是有丰富编程经验的程序员 所以本文不对JAVA的具体语法 编程技巧和设计模式做过多的论述 仅从个人的学习角度谈感受 由于有大学期间的C语言学习经历我对JAVA的基本语法相对
  • The Difference between Probability and Statistic

    本科数学专业 现在在PKU学习计算机 当前主要的focus是DNN RNN in Action Recognition 心中总有一股数学情结 OOAD 课程上老师提及这个问题 所以信誓旦旦地想写一篇博客 可惜最后发现雷声大 雨点小 先mar
  • 使用IDEA 对springboot项目进行打war包

    网上很多版本 以下是本人新建springboot项目后本地测试通过 好了上步骤 1首先这个地方需要配置
  • 多媒体讲解器基本型设计

    多媒体讲解器功能按照播放器功能和灯光控制功能分类 播放功能分类 简易型 具备按键操作功能 TF卡升级 在线播放 U盘升级 在线播放 具备人体接近检测功能 红外 雷达 自动播放讲解功能 自动停止讲解功能 自动播放音乐 自动切换到讲解功能 切换
  • Dart 断言(assert)和异常

    一 断言 assert 断言的作用是 如果表达式的求值结果不满足需要 则打断代码的执行 可以要将提示消息附加到断言 添加一个字符串作为第二个参数 实例 void main String urlString http www baidu co
  • Winsock状态说明及错误代码

    Winsock状态参数说明 常数 值 描述 sckClosed 0 缺省值 关闭 SckOpen 1 打开 SckListening 2 侦听 sckConnectionPending 3 连接挂起 sckResolvingHost 4 识
  • “定点打击”——XPath 使用细则(Just For Selenium WebDriver)

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 Selenium WebDriver中有关元素定位的学习 需要XPath的支持 特此梳理 前言 XPath教程 XPath是一门在XML文档中查找信息的语言 XPat
  • 基于线性预测的语音编码原理解析

    早期的音频系统都是基于声音的模拟信号实现的 在声音的录制 编辑和播放过程中很容易引入各种噪声 从而导致信号的失真 随着信息技术的发展 数字信号处理技术在越来越多领域得到了应用 数字信号更是具备了易于存储和远距离传输 没有累积失真 抗干扰能力
  • SpringSecurity——OAuth2框架鉴权实现源码分析

    SpringSecurity OAuth2框架鉴权实现源码分析 一 ManagedFilter迭代过滤器链 1 4 springSecurityFilterChain 1 4 7 OAuth2AuthenticationProcessing
  • 【Redis】Redis在Windows下的使用(hiredis+Qt5.7.0+mingw5.3.0)

    1 下载hiredis https github com redis hiredis 得到hiredis master zip 解压后 得到hiredis master目录 可以看到CMakeLists txt 2 下载CMake http
  • Oracle12C 用户创建、修改、授权、删除、登录等操作

    1 以系统用户命令行登录 sqlplus sys sys as sysdba 2 确认选择CDB select name cdb from v database col pdb name for a30 select pdb id pdb
  • matlab绘图(三)绘制三维图像

    目录 一 绘制三维曲线 二 绘制三维曲面 1 meshgrid函数 2 mesh和surf函数 一 绘制三维曲线 1 最基本的绘制三维曲线的函数 plot3 plot3 x1 y1 z1 选项 1 x2 y2 z2 选项 2 xn yn z