目录

  • 0 前言
  • 1 空间曲面的MATLAB命令及其用法
    • 1 surf函数语法及其说明 [^1]
    • 2 mesh函数及其说明[^2]
  • 2 surf函数的实现过程
  • 3 图像的优化
  • 4 结论

0 前言

疫情期间,在家无事,因为之前学的MATLAB和线性代数不是很扎实,决定在MOOC上找网课,温故一下。看到老师的图,如图1,非常直观,于是就想用MATLAB画出来。

1 空间曲面的MATLAB命令及其用法

首先查询一下MATLABlink中能够画三维图的函数。
通过观察,选出surf函数和mesh函数,查看其用法。

1 surf函数语法及其说明 1

surf(X,Y,Z)
surf(X,Y,Z) 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。
surf(X,Y,Z,C)
surf(X,Y,Z,C) 指定曲面的颜色。
surf(Z)
surf(Z) 创建一个曲面图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标。
surf(Z,C)
surf(Z,C) 指定曲面的颜色。
surf(ax,___)
surf(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参数。
surf(___,Name,Value)
surf(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。例如,‘FaceAlpha’,0.5 创建半透明曲面。
s = surf(___)
s = surf(___) 将返回一个图曲面对象。在创建曲面之后可使用 s 对其进行修改。有关属性列表,请参阅 Surface 属性link。

2 mesh函数及其说明2

mesh(X,Y,Z)
mesh(X,Y,Z) 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。
mesh(Z)
mesh(Z) 创建一个网格图,并将 Z 中元素的列索引和行索引用作 x 坐标和 y 坐标。
mesh(Z,C)
mesh(Z,C) 进一步指定边的颜色。
mesh(___,C)
mesh(___,C) 进一步指定边的颜色。
mesh(ax,___)
mesh(ax,___) 将图形绘制到 ax 指定的坐标区中,而不是当前坐标区中。指定坐标区作为第一个输入参数。
mesh(___,Name,Value)
mesh(___,Name,Value) 使用一个或多个名称-值对组参数指定曲面属性。例如,‘FaceAlpha’,0.5 创建半透明网格图。
s = mesh(___)
s = mesh(___) 将返回一个图曲面对象。在创建网格图后,使用 s 修改网格图。有关属性列表,请参阅 Surface 属性link。

2 surf函数的实现过程

选择surf函数和mesh函数作图。

x=[0:6];
y=[0:6];
[X,Y] = meshgrid(x,y);
Z1=5+Y-X;
surf(X,Y,Z1)

x=[0:6];
y=[0:6];
[X,Y] = meshgrid(x,y);
Z1=5+Y-X;
mesh(X,Y,Z1)


观察两张图片,能够看出明显的不同。通过surf函数画出的图像是曲面,而通过mesh函数画出的图像是网格。

3 图像的优化

接下来对用surf函数画出的图像进行去除网格线,统一曲面颜色,得到我们想要的图像。

y=[0:6];
[X,Y] = meshgrid(x,y);
Z1=5+Y-X;
surf(X,Y,Z1,'facecolor','b','LineStyle' ,'none')
%曲面颜色为蓝色,无线型。


好像有点意思了,再将坐标间隔统一,添上标签。

x=[0:6];
y=[0:6];
[X,Y] = meshgrid(x,y);
Z1=5+Y-X;
surf(X,Y,Z1,'facecolor','b','LineStyle' ,'none')
xticks(0:1:6)
yticks(0:1:6)
zticks(-5:1:15)
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')


最后尝试多画几个图,放在一起比较一下。

x=[0:10];
y=[0:10];
[X,Y] = meshgrid(x,y);
subplot(2,3,1)
Z1=5+Y-X;
surf(X,Y,Z1,'facecolor','r','LineStyle' ,'none')
subplot(2,3,2)
Z2=4+2*X-3*Y;
surf(X,Y,Z2,'facecolor','g','LineStyle' ,'none')
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
subplot(2,3,3)
Z3=-4+2*X+Y;
surf(X,Y,Z3,'facecolor','b','LineStyle' ,'none')
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
subplot(2,3,[4 5])
Z1=5+Y-X;
surf(X,Y,Z1,'facecolor','r','LineStyle' ,'none')
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
hold on
%这里需要用到hold on命令,否则第四幅子图不能同时显示三个函数的图像。
Z2=4+2*X-3*Y;
surf(X,Y,Z2,'facecolor','g','LineStyle' ,'none')
xlabel('x轴')
ylabel('y轴')
zlabel('z轴')
Z3=-4+2*X+Y;
surf(X,Y,Z3,'facecolor','b','LineStyle' ,'none')
legend('Z1=5+Y-X','Z2=4+2*X-3*Y','Z3=-4+2*X+Y')


最后的最后,回顾一下刚刚的那张图片。

好像差不多呀。

4 结论

通过这个例子,我们发现MATLAB还是很强大的,尝试命令,简单绘出图形,再在其基础上进行修改,就可以得到我们想要的图形了。当然了也有很多优秀的绘图工具,如画流程图的Visio、数据处理的Origin、LaTex中的Tikz等。


  1. https://ww2.mathworks.cn/help/matlab/ref/surf.html ↩︎

  2. https://ww2.mathworks.cn/help/matlab/ref/mesh.html ↩︎

如何利用MATLAB的surf函数,画出三元一次方程的空间平面?相关推荐

  1. 如何用matlab,frontcon函数画出有效市场边缘和资本市场线

    既上一篇有效市场边缘的作图:http://blog.csdn.net/alanguoo/article/details/52905121 这次来说一下怎么在有效市场边缘上画出切线,即资本市场线,CAL ...

  2. Matlab用surf函数画三维曲面(详细)

    首先说明这里用的是离散的数据 首先三维数据如下,第一行第一列代表横纵坐标,然后其它的值是z值 然后要将3个维度的值分别做成一个矩阵 X: Y: Z: 然后在Matlab的工作空间里生产变量:  这样就 ...

  3. 怎么在matlab画双坐标,如何利用matlab的plotyy函数画双坐标图??

    具有两个纵坐标标度的图形在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数.调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x ...

  4. matlab里surf函数,matlab surf 函数画3维图

    这个函数很方便.在matlab的环境下,这种交互式的画图方式很节约时间.不过如果对surf函数作图的一些细节不去了解清楚的话,可能会导致一些错误,一下是我使用时的一些总结: 假 设有两列数X[N],Y ...

  5. matlab中应用surf函数画球形物体的三维坐标变换,从球坐标系转换到笛卡尔坐标系

    在Matlab中采用surf函数画三维图时,该函数使用笛卡尔坐标系绘制图形,因此在某些球形图案的绘制中,直接使用(theta,phi,z)参数无法得到球形图案,需要将图案对应的点从球坐标转变为笛卡尔坐 ...

  6. Matlab的plot函数画线显示空白问题解决

    Matlab的plot函数画线无法显示问题解决 前言:在使用matlab中的plot函数画图时,没有任何报错,但是画不出线,却能画出点.在查阅资料后找到问题的原因. 这里我们使用y=x^2图像来进行分 ...

  7. 【转】利用matlab生成随机数函数

    原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 ...

  8. java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....

    Android中利用画图类和线程画出闪烁的心形,android心形,package com.package com.tt.view;import android.content.Context;imp ...

  9. matlab中plot函数画线时 颜色和类型

    转自 https://blog.csdn.net/garfielder007/article/details/50449140 matlab里plot函数画线时有很多的颜色和类型可以选择,下面列举一些 ...

最新文章

  1. 没有项目经验也能进大厂??
  2. opencv4 图像无缝融合
  3. 基于云的CRM系统到底好在哪里?
  4. hdu1316 水大数
  5. Destroy it!
  6. 线程同步机制:互斥量、信号量、读写锁、条件变量
  7. SAP License:ERP实施风险是什么?
  8. 吉米多维奇数学分析习题集--习题1380(用隐函数求导计算泰勒展开式)
  9. mysql数据改电话号码_mysql 里面用什么数据类型来定义手机号码?
  10. MTK平台各种分区和bin/img(线刷包)对应关系和作用说明
  11. 计算机网络自顶向下WireShark实验:ICMP
  12. 邮箱如何设置smtp服务器端口,如何改变你的SMTP端口来允许发送电子邮件
  13. docker容器status为create状态
  14. 财务造假判断+面试+车牌识别
  15. 混合现实门户SteamVR环境下
  16. Cat源码分析(三):10种分析器
  17. 杰理之虚拟U盘升级【篇】
  18. 宝宝咳嗽症状以及护理
  19. Base 64 编码
  20. 文件宝局域网传输/播放功能Windows10系统经验贴(感谢文件宝用户@卡卡罗特 和@24K 純情)...

热门文章

  1. Tier 与 Layer 的区别
  2. 毕业设计学习锋迷商城笔记
  3. 《从0到1:CTFer成长之路》粗心的小李
  4. 一键提高工作效率,这4款软件是你的工作好帮手
  5. ThinkCMF报错未定义变量vo
  6. 牛码宝宝 - Sprint log (No.2)
  7. ASEMI整流桥KBP307和KBP310有何不同
  8. java actor akka_Akka框架简介
  9. 计算机显示没有可以的ip地址,我的电脑的IP地址显示不出来怎么办
  10. 社区+团购:看“团购电影票”怪现象