MATLAB实战 | 不同形式的三维曲面图

 通常,MATLAB中绘制三维曲面图,先要生成网格数据,再调用mesh函数和surf函数绘制三维曲面。若曲面用含两个自变量的参数方程定义,则还可以调用fmesh函数和fsurf函数绘图。若曲面用隐函数定义,则可以调用fimplicit3函数绘图。

01、三维曲面

1. 产生网格坐标矩阵

在MATLAB中产生二维网格坐标矩阵的方法是: 将x方向区间[a,b]分成m份,将y方向区间[c,d ]分成n份,由各划分点分别作平行于两坐标轴的直线,将区域[a,b]×[c,d]分成m×n个小网格,生成代表每一个小网格顶点坐标的网格坐标矩阵。例如,在xy平面选定一矩形区域,如图1所示,其左下角顶点的坐标为(2,3),右上角顶点的坐标为(6,8)。然后在x方向分成4份,在y方向分成5份,由各划分点分别作平行于两坐标轴的直线,将区域分成5×4个小矩形,总共有6×5个顶点。用矩阵X、Y分别存储每一个网格顶点的x坐标与y坐标,矩阵X、Y就是该矩形区域的xy平面网格坐标矩阵。

■ 图1网格坐标示例在MATLAB中,产生平面区域内的网格坐标矩阵有两种方法。 

(1) 利用矩阵运算生成。例如,生成图5-24中的网格坐标矩阵,使用以下命令: 

 

 (2) 调用meshgrid函数生成二维网格坐标矩阵,函数的调用格式如下:

 其中,输入参数x、y为向量,输出参数X、Y为矩阵。命令执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数; 矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。矩阵X和Y相同位置上的元素(Xij,Yij)存储二维空间网格顶点(i,j)的坐标。例如,生成图1中的网格坐标矩阵,也可以使用以下命令:

函数参数可以只有一个,此时生成的网格坐标矩阵是方阵,例如:

 meshgrid函数也可以用于生成三维网格数据,调用格式如下:

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

其中,输入参数x、y、z为向量,输出参数X、Y、Z为三维数组。命令执行后,数组X、Y和Z的第一维大小和向量x元素的个数相同,第二维大小和向量y元素的个数相同,第三维大小和向量z元素的个数相同。X、Y和Z相同位置上的元素(Xijk,Yijk,Zijk)存储三维空间网格顶点(i,j,k)的坐标。

ndgrid函数用于生成n维网格数据,调用格式如下: 

[X1,X2,...Xn] = ndgrid(x1,x2,...xn)

 其中,输入参数x1、x2、…、xn为向量,输出参数X1、X2、…、Xn为n维矩阵。例如:

对比前面meshgrid网格数据会发现,meshgrid网格数据进行转置即得到ndgrid网格数据。

2. mesh函数和surf函数 

MATLAB提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用于绘制三维网格图,网格线条有颜色,网格线条之间无颜色; surf函数用于绘制三维曲面图,网格线条之间的补面用颜色填充。surf函数和mesh函数的调用格式为:

mesh(x,y,z,c)
surf(x,y,z,c)

通常,输入参数x、y、z是同型矩阵,x、y定义网格顶点的xy平面坐标,z定义网格顶点的高度。选项c用于指定在不同高度下的补面颜色。c缺省时,MATLAB认为c=z,即颜色的设定值默认正比于图形的高度,这样就可以绘制出层次分明的三维图形。当x,y是向量时,要求x的长度等于矩阵z的列数,y的长度等于矩阵z的行数,x、y向量元素的组合构成网格顶点的x、y坐标。

【例1】已知 

其中,x、y的40个值均匀分布在[-2,2]范围内,绘制三维曲面图。

程序如下

x = linspace(-2,2,40);
[xx,yy] = meshgrid(x);
zz = xx * exp(-(xx^2 + yy^2));
mesh(xx,yy,zz);
title('mesh');
xlabel('X');
ylabel('Y');
zlabel('Z');

程序运行结果如图2所示。mesh、surf函数的前两个参数x、y也可以是行向量或列向量,所以程序中的mesh函数也可以写成mesh(x,x,zz)。 

 ■ 图2 三维曲面图

若调用surf、mesh函数时,省略前两个输入参数x、y,则把z矩阵的第二维下标当作x坐标,把z矩阵的第一维下标当作y坐标,然后绘制三维曲面图。例如:

>>t = 1 : 5;
>>z = [0.5*t;2*t;3*t];
>>mesh(z);

第二条命令生成的z是一个3×5的矩阵,执行mesh(z)命令绘制图形,曲面各个顶点的x坐标是z元素的列下标,y坐标是z元素的行下标。

此外,还有两个和mesh函数功能相似的函数,即meshc函数和meshz函数,其用法与mesh函数类似,不同的是meshc函数还在xy平面上绘制曲面在z轴方向的等高线,meshz函数还在xy平面上绘制曲面的底座。surf函数也有两个类似的函数,即具有等高线的曲面函数surfc和具有光照效果的曲面函数surfl。 

【例2】在xy平面内选择区域[-8,8]×[-8,8],利用下列函数绘制4种形式的三维曲面图。

程序如下:

[x,y] = meshgrid(-8:0.5:8);
z = sin(sqrt(x^2+y^2))/sqrt(x^2+y^2);
subplot(2,2,1);
meshz(x,y,z);
title(meshz(x,y,z));
subplot(2,2,2);
meshc(x,y,z);
title(meshc(x,y,z));
subplot(2,2,3);
surfl(x,y,z);
title(surfl(x,y,z));
subplot(x,y,z);
title(surfc(x,y,z));

程序运行结果如图3所示。

■ 图3 4种形式的三维曲面图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175966.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JUC】十三、CompletableFuture的常用方法

文章目录 1、获得结果和触发计算2、对计算结果进行处理3、对结算结果进行消费4、CompletableFuture的thenXX和thenXXAsync5、对计算速度进行选用6、对计算结果进行合并 1、获得结果和触发计算 获取任务结果 public T get()public T get(long timeout, TimeUnit unit)public T…

STM32F103C8T6——4路PWM

//main()函数前面的extern TIM_HandleTypeDef htim2;extern TIM_HandleTypeDef htim3;//main()函数内部额外添加的HAL_TIM_Base_Start_IT(&htim2);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);HAL_TIM_PWM_Start(&htim2…

013 C++ set与map的用法

前言 本文将会向你介绍set与map的主要用法 set详解 int main() {set<string> s;vector<string> v { "Fan1","Fan2", "Fan3", "Fan4" };for (auto e : v){s.insert(e);}string input;while (cin >> input){if (s.…

数组题目:118. 杨辉三角 、 119. 杨辉三角 II 、661. 图片平滑器 、598. 范围求和 II 、 419. 甲板上的战舰

118. 杨辉三角 思路&#xff1a; 找规律&#xff0c;每一行的第一个元素和最后一个元素都是1&#xff0c;其中中间需要改变的数找对应的规律 比如第二行&#xff08;从0开始&#xff09;的2&#xff0c;是dp[1][0] dp[1][1]。类似的找出对应的规律 代码&#xff1a; clas…

【网络安全】-常见的网站攻击方式详解

文章目录 介绍1. SQL 注入攻击攻击原理攻击目的防范措施 2. 跨站脚本攻击&#xff08;XSS&#xff09;攻击原理攻击目的防范措施 3. CSRF 攻击攻击原理攻击目的防范措施 4. 文件上传漏洞攻击原理攻击目的防范措施 5. 点击劫持攻击原理攻击目的防范措施 结论 介绍 在数字时代&a…

aspera传输方案怎么样,需要选择aspera替代方案吗

Aspera传输方案是一种高速、可靠的文件传输解决方案&#xff0c;适用于需要大规模传输大文件或数据集的企业和组织。Aspera采用UDP协议及自己开发的FASP协议进行加速传输&#xff0c;能够在高延迟、高丢包网络环境下实现稳定快速的传输。 Aspera传输方案具有以下优点&#xff1…

Selenium Grid

Selenium Grid 什么是Selenium Grid Selenium是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上 Selenium Grid的两个版本 Grid1与Grid2两个版本的原理和基本工作方式完全相同&#xff0c;Grid2同时支持Selenium1和Selenium2&#x…

<JavaEE> Thread线程类 和 Thread的常用方法

目录 一、Thread概述 二、构造方法 三、常用方法 1.1 getId()、getName()、getState()、getPririty() 1.2 start() 1.3 isDaemon()、setDaemon() 1.4 isAlive() 1.5 currentThread() 1.6 Interrupt()、interrupted()、isInterrupted() 1.6.1 方法一&#xff1a;添加共…

stream流和方法引用

1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…

SIT65HVD75,可替代SN65HVD75,3.0~5.5V 供电,ESD 15kV HBM,20Mbps 半双工 RS485/RS422 收发器

SIT65HVD75 是一款 3.0V~5.5V 电源供电、总线端口 ESD 保护能力 HBM 达到 15kV 以上、 总线耐压范围达到 15V 、半双工、低功耗&#xff0c;功能完全满足 TIA/EIA-485 标准要求的 RS-485 收发 器。 SIT65HVD75 包括一个驱动器和一个接收器&#xff0c;两者均可…

模板上新|2023年10月DataEase模板市场上新动态

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场&#xff08;https://dataease.io/templates/&#xff09;。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;并…

计算机网络——数据链路层-数据链路层概述(介绍、三个重要问题、使用广播信道的数据链路层、其他问题)

目录 介绍 三个重要问题 封装成帧 差错检测 可靠传输 使用广播信道的数据链路层 其他问题 介绍 本篇对数据链路层进行概述&#xff0c;我们首先来看看数据链路层在网络体系结构中的地位&#xff1a; 主机H1给主机H2发送数据&#xff0c;中间要经过三个路由器和电话网、…

单片机学习10——独立按键

独立按键输入检测&#xff1a; #include<reg52.h>sbit LED1P1^0; sbit KEY1P3^4;void main() {KEY11;while(1){if(KEY10) //KEY1按下{LED10; //LED1被点亮}else{LED11;}} } 按键 #include<reg52.h>#define uchar unsigned char #define uint unsigned intsbit …

使用Postman如何在接口测试前将请求的参数进行自定义处理

1、前言 当我们使用 Postman 进行接口测试时&#xff0c;对于简单的不需要处理的接口&#xff0c;直接请求即可&#xff0c;但是对于需要处理的接口&#xff0c;如需要转码、替换值等&#xff0c;则就麻烦一些&#xff0c;一般我们都是先手动把修改好的值拷贝到请求里再进行请…

干法制程中的辉光放电

在芯片制程中&#xff0c;几乎所有的干法制程&#xff0c;如PVD&#xff0c;CVD,干法刻蚀等&#xff0c;都逃不过辉光放电现象。辉光放电&#xff0c;是一种在低压下电离气体的过程&#xff0c;它在半导体制程中的许多重要步骤中有着核心作用。那您知道什么是“启辉”吗&#x…

Vue3使用kkFileView预览文件pdf

kkFileView - 在线文件预览kkFileView官网 - kkFileView使用Spring Boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,Excel,pdf,txt,zip,rar,图片等等https://kkfileview.keking.cn/zh-cn/docs/usage.html业务场景&#xf…

【探索Linux】—— 强大的命令行工具 P.17(进程信号 —— 信号保存 | 阻塞信号 | sigprocmask() | sigpending() )

阅读导航 引言一、阻塞信号1. 信号相关常见概念&#xff08;1&#xff09;信号递达&#xff08;2&#xff09;信号未决&#xff08;3&#xff09;阻塞信号&#xff08;4&#xff09;忽略信号 2. 信号在内核中的表示⭕信号在内核中的表示示意图 3. sigset_t &#xff08;数据类型…

viple模拟器使用(三):unity模拟器中实现沿右墙迷宫算法

沿右墙迷宫算法原理 默认直行&#xff1b;右侧有路&#xff0c;则右转&#xff1b;前方无路&#xff0c;则左转。 由于unity模拟器中使用机器人移动动力控制和机器人转动角度控制来实现控制机器人前进、后退、暂停、左转、右转 。 程序编写 主机以及配置 通过内建事件初始化机…

云表|低代码助力职场人,一招制敌解决办公难题

身在职场&#xff0c;我们时常会面临一系列令人头疼的难题&#xff1a; ● 突然被领导要求30分钟内汇总所有人的填报信息&#xff0c;看着面前格式五花八门的Excel表格&#xff0c;我们无所适从&#xff0c;不知从何下手。 ● 在这个数字化的时代&#xff0c;公司仍然沿用古老的…

【数据中台】开源项目(2)-Davinci可视应用平台

1 平台介绍 Davinci 是一个 DVaaS&#xff08;Data Visualization as a Service&#xff09;平台解决方案&#xff0c;面向业务人员/数据工程师/数据分析师/数据科学家&#xff0c;致力于提供一站式数据可视化解决方案。既可作为公有云/私有云独立部署使用&#xff0c;也可作为…