如何利用MATLAB的surf函数,画出三元一次方程的空间平面?
目录
- 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等。
https://ww2.mathworks.cn/help/matlab/ref/surf.html ↩︎
https://ww2.mathworks.cn/help/matlab/ref/mesh.html ↩︎
如何利用MATLAB的surf函数,画出三元一次方程的空间平面?相关推荐
- 如何用matlab,frontcon函数画出有效市场边缘和资本市场线
既上一篇有效市场边缘的作图:http://blog.csdn.net/alanguoo/article/details/52905121 这次来说一下怎么在有效市场边缘上画出切线,即资本市场线,CAL ...
- Matlab用surf函数画三维曲面(详细)
首先说明这里用的是离散的数据 首先三维数据如下,第一行第一列代表横纵坐标,然后其它的值是z值 然后要将3个维度的值分别做成一个矩阵 X: Y: Z: 然后在Matlab的工作空间里生产变量: 这样就 ...
- 怎么在matlab画双坐标,如何利用matlab的plotyy函数画双坐标图??
具有两个纵坐标标度的图形在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数.调用格式为: plotyy(x1,y1,x2,y2) 其中x1,y1对应一条曲线,x ...
- matlab里surf函数,matlab surf 函数画3维图
这个函数很方便.在matlab的环境下,这种交互式的画图方式很节约时间.不过如果对surf函数作图的一些细节不去了解清楚的话,可能会导致一些错误,一下是我使用时的一些总结: 假 设有两列数X[N],Y ...
- matlab中应用surf函数画球形物体的三维坐标变换,从球坐标系转换到笛卡尔坐标系
在Matlab中采用surf函数画三维图时,该函数使用笛卡尔坐标系绘制图形,因此在某些球形图案的绘制中,直接使用(theta,phi,z)参数无法得到球形图案,需要将图案对应的点从球坐标转变为笛卡尔坐 ...
- Matlab的plot函数画线显示空白问题解决
Matlab的plot函数画线无法显示问题解决 前言:在使用matlab中的plot函数画图时,没有任何报错,但是画不出线,却能画出点.在查阅资料后找到问题的原因. 这里我们使用y=x^2图像来进行分 ...
- 【转】利用matlab生成随机数函数
原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 ...
- java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....
Android中利用画图类和线程画出闪烁的心形,android心形,package com.package com.tt.view;import android.content.Context;imp ...
- matlab中plot函数画线时 颜色和类型
转自 https://blog.csdn.net/garfielder007/article/details/50449140 matlab里plot函数画线时有很多的颜色和类型可以选择,下面列举一些 ...
最新文章
- 没有项目经验也能进大厂??
- opencv4 图像无缝融合
- 基于云的CRM系统到底好在哪里?
- hdu1316 水大数
- Destroy it!
- 线程同步机制:互斥量、信号量、读写锁、条件变量
- SAP License:ERP实施风险是什么?
- 吉米多维奇数学分析习题集--习题1380(用隐函数求导计算泰勒展开式)
- mysql数据改电话号码_mysql 里面用什么数据类型来定义手机号码?
- MTK平台各种分区和bin/img(线刷包)对应关系和作用说明
- 计算机网络自顶向下WireShark实验:ICMP
- 邮箱如何设置smtp服务器端口,如何改变你的SMTP端口来允许发送电子邮件
- docker容器status为create状态
- 财务造假判断+面试+车牌识别
- 混合现实门户SteamVR环境下
- Cat源码分析(三):10种分析器
- 杰理之虚拟U盘升级【篇】
- 宝宝咳嗽症状以及护理
- Base 64 编码
- 文件宝局域网传输/播放功能Windows10系统经验贴(感谢文件宝用户@卡卡罗特 和@24K 純情)...