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)

在这里插入图片描述

### 回答1: CentOS 7上启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务的配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务的启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器(httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务的配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因,解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华毓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值