MATLAB三维绘图---三维曲面图_matlab三维曲面图-程序员宅基地

技术标签: matlab  线性代数  MATLAB完整学习过程  # MATLAB绘图  开发语言  

matlab绘制三维图中,最常见的是三维曲线图三维曲面图
三维曲线图比较简单函数命令为plot3,已经详细介绍过,具体请见Matlab三维绘图------三维曲线图

三维曲面图的不同类型及对比

三维曲面图又分为三维网面和三维网格面图,其原理相似只是调用格式不同而已。总结如下:

plot3(x,y,z);%绘制数据的三维曲线图
mesh(x,y,z); %绘制数据的三维网格面图
surf(x,y,z); %绘制数据的三维网面图
meshc(x,y,z);%绘制数据的三维网格面图,并添加等值线
surfc(x,y,z);%绘制数据的三维网面图,并添加等值线
meshz(x,y,z);%绘制数据的三维网格面图,并添加等值线
[X,Y]=meshgrid(x,y);分别产生两个1、以向量x为行,向量y为列的矩阵,2、并且向量x的长度为新矩阵的列数,y的长度为新矩阵的行数 的新矩阵X和Y.

上面:[X,Y]=meshgrid(x,y)在绘制三维曲面图中非常重要,在用方程绘制曲面图中常用。在这里不赘述,详细介绍可见前文,请点击下面超链接。
比如向量x=[1,2,3],向量y=[4,5],[X,Y]=meshgrid指令的作用是分别产生两个1、以向量x为行,向量y为列的矩阵,2、并且向量x的长度为新矩阵的列数,y的长度为新矩阵的行数 的新矩阵X和Y.
在这里即为两行三列。所以:
X=
1 2 3
1 2 3

Y=
4 4 4
5 5 5

关于[X,Y]=meshgrid指令的作用已详细讲过,具体可见Meshgrid用法简介

关于mesh(x,y,z)、surf(x,y,z)、meshc(x,y,z)、surfc(x,y,z)、meshz(x,y,z);这几个函数的区别,通过绘制高斯矩阵的曲面来看看

z=peaks(40);
mesh(z)
surf(z)
meshc(z)
surfc(z)
meshz(z)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
将这些图分别绘制在一张figure上也非常简单,仍然是用到多重子图subplot指令:

z=peaks(40);
subplot(2,3,1);
mesh(z);
subplot(2,3,2);
surf(z);
subplot(2,3,3);
meshc(z);
subplot(2,3,4);
surfc(z)
subplot(2,3,5);
meshz(z)

在这里插入图片描述
总结:mesh是网格,surf是网面。网格绘出的三维图就像是渔网一般一格一格的。网面绘出的三维图是曲面的,上面没有格,至于线是辅助线。mesh(z)和surf(z)则是加了等值线,相当于那些值相等,就用圈圈做以标记。meshz(z)是加了一个零平面作为参考。

用方程绘制三维曲面图

举几个不同的例子来说明
例1:
x在[0,2pi],y在[0,2pi],作三维曲面图z=cos(x)+sin(y)

x=(0:0.01:2*pi);
y=x;
[X,Y]=meshgrid(x,y);
z=cos(X)+sin(Y);
mesh(X,Y,z)

在这里插入图片描述
注:通常在确定向量x,y的基础上,使用命令meshgrid生成新的矩阵数据[X,Y],再输入函数z=f(x,y,z),最后用mesh或surf指令生成三维曲面图。

如果不用meshgrid生成矩阵的话会有如下错误:
在这里插入图片描述

例2:
绘制如下方程的三维曲面图:
在这里插入图片描述

x=(-7.5:0.01:7.5);
y=x;
[X,Y]=meshgrid(x,y);
R=sqrt(X.^2+Y.^2);
Z=sin(R)./R;
mesh(X,Y,Z)

在这里插入图片描述
通过meshgrid指令将向量x和y,分别生成了矩阵X、Y.那么在以上代码中
R=sqrt(X. ^2+ Y.^2)以及Z=sin(R)./R中的加了.的原因是什么呢?
这是因为在变量运算里有以下几个基本规则:

a.*b     %矩阵a和矩阵b中各个元素相乘
a.*b.*c  %矩阵a,矩阵b和矩阵c中各个元素相乘
a.^2     %求取矩阵a中各个元素的平方
a./b     %矩阵a中各个元素除以矩阵b中的各个元素
a.\b     %矩阵b中各个元素除以矩阵a中的各个元素

因而先通过meshgrid指令将向量变成矩阵X和Y,再通过上述指令:
x的平方就是a.^2 即:X.^2,以及y的平方: Y.^2 ,而sin(R)/R即a./b , 即:sin(R)./R

以上了解了之后用方程绘制三维曲面图就非常简单了,再来一个例子:
在这里插入图片描述

x=(-3:0.01:3);
y=(-4:0.01:3);
[X,Y]=meshgrid(x,y);
Z=X.*exp(-(X.^2+Y.^2));
mesh(X,Y,Z)

在这里插入图片描述

theta=(-pi:0.05:4*pi);
x=cos(theta);
y=sin(theta);
[X,Y]=meshgrid(x,y);
z=abs(cos(X.*3)).*exp(-abs(theta/3));
mesh(X,Y,z)

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhangkaikai36/article/details/123403633

智能推荐

kaggle简单使用教程(代码查找.下载、项目建立.运行、参加比赛)_kaggle在线写代码-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏35次。Kaggle机器学习竞赛、托管数据库、编写和分享代码_kaggle在线写代码

network.service - LSB: Bring up/down networking_network.service - lsb: bring up/down networking lo-程序员宅基地

文章浏览阅读3.1k次,点赞11次,收藏14次。CentOS7突然连接不了网络,使用systemctl status network后报如下错误network.service - LSB: Bring up/down networkingLoaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)Active: failed (Result: exit-code)【解决方案】停止NetworkManager并取消开机启动chkconfig NetworkMan_network.service - lsb: bring up/down networking loaded: loaded (/etc/rc.d/in

GitHub上10个有趣的开源小游戏(附加在线演示)_github开源小游戏-程序员宅基地

文章浏览阅读4.9w次,点赞312次,收藏1.3k次。前言GitHub作为程序员们的开源宝库,有着很多非常好的项目。对于初学者来说,游戏有着一种特殊的魅力。今天统计了GitHub上比较有趣的10个开源小游戏,其中有许多可以称之为经典。笔者是一名90后,《贪吃蛇》、《坦克大战》、《超级马里奥》和《太空侵略者》作为儿时的玩伴,陪伴笔者度过了很多时光,给笔者带来了非常多的回忆。1、Pacman(吃豆人游戏)项目演示地址: https://passe..._github开源小游戏

Java数据结构和算法(十二)——2-3-4树,java面试题,java高级笔试题_树查找 java 笔试题-程序员宅基地

文章浏览阅读210次。写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家。扫码加微信好友进【程序员面试学习交流群】,免费领取。也欢迎各位一起在群里探讨技术。通过前面的介绍,我们知道在二叉树中,每个节点只有一个数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树。本篇博客我们将介绍的——2-3-4树,它是一种多叉树,..._树查找 java 笔试题

金融语言模型:FinGPT-程序员宅基地

文章浏览阅读3k次。FinGPT是一个开源的金融语言模型(LLMs),由FinNLP项目提供。这个项目让对金融领域的自然语言处理(NLP)感兴趣的人们有了一个可以自由尝试的平台,并提供了一个与专有模型相比更容易获取的金融数据。FinGPT使用RLHF方法进行个性化的金融语言建模,这与BloombergGPT的方法不同。它采用了一种轻量级的低秩适应技术,使得微调模型变得更简单和经济。FinGPT项目为金融领域的自然语言处理开创了新的可能,它的开源性质能推动这个领域的进步和创新。_fingpt

java.util.concurrent.atomic原子操作类-程序员宅基地

文章浏览阅读833次。java.util.concurrent.atomic原子操作类java原子操作类1.原子操作类2.AtomicInteger的基本方法2.1 创建一个不传值的,默认值为02.2 获取和赋值2.3 compareAndSet方法2.4 getAndAdd、AddAndGet、getAndDecrement和DecrementAndGet3.多线程测试4.AtomicReference详解5.CAS可能存在ABA的问题5.1 AtomicStampedReference原理5.2 AtomicMarkable_java.util.concurrent.atomic

随便推点

jpa mysql分页_Spring Boot之JPA分页-程序员宅基地

文章浏览阅读141次。JPA分页​当请求的数据总量很大时,这时候前端往往都会要求后端将数据分页返回。本文介绍SpringBoot下后端数据层使用JPA+MySQL时,如何分页返回数据(除了当前页面的数据,往往还要返回总页数这项数据)。一、从头到尾自己实现分页:Controller层:使用@RequestParam绑定page和pageSize参数,调用ServiceService层:接收page、pageSize参数,..._jpa mysql limit 分页

win10打印图片中间空白以及选择打印机预览重启_win10更新后打印图片中间空白-程序员宅基地

文章浏览阅读7.6k次。当月10号左右大量windows10系统发现打印照片时只能打印出头和尾,如下还有没开始打印,一选择打印机电脑就重启,是因为微软发布的新补丁不兼容,卸载最近更新的补丁即可(不同系统版本补丁编号是不一样的,看最近日期就行了)打开控制面板-卸载程序查看已安装的更新按时间排序双击卸载最新的补丁重启即可..._win10更新后打印图片中间空白

【加密】SHA256加盐加密_sha256随机盐加密-程序员宅基地

文章浏览阅读2.4k次。SaltUtil 类 private final String algorithmName = "SHA-256"; private final int hashIterations = 10000; private static RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); //默认16位……//方法中调用// 生成salt model.se_sha256随机盐加密

cordys 启动流程_cordys服务重启-程序员宅基地

文章浏览阅读763次。启动操作js ://--by wallvar startReq=BPMStartXml.XMLDocument;cordys.setNodeText(startReq,".//*[local-name()='BusinessID']",pursh_id.getValue());cordys.setNodeText(startReq,".//*[local-name()_cordys服务重启

net中 DLL、GAC-程序员宅基地

文章浏览阅读93次。为什么80%的码农都做不了架构师?>>> ..._.net dll gac

(一看就会)Visual Studio设置字体大小_visual studio怎么调整字体大小-程序员宅基地

文章浏览阅读4.7k次,点赞3次,收藏6次。点击工具,选择 选项。_visual studio怎么调整字体大小