![47d92c301ae10ab6163d2df506512e5c.png](https://i-blog.csdnimg.cn/blog_migrate/d5fd7706719c7e1a739b4d71509ad952.jpeg)
记录根据函数的参数方程来绘制图形。
你知道什么是莫比乌斯环吗?你尝试过手动做一个莫比乌斯环吗(只需要一张长方形的小纸条、以及一点点透明胶)?它的参数方程也很有意思,其探索与证明在知乎上也能找到相关证明,以及似乎某些有趣的教材也会介绍拓扑的证明。不过我们现在可以利用matlab直观地看到莫比乌斯环,那么我们开始吧。
今日简单题:1.已知莫比乌斯环参数方程(见文末),要求绘制图形。
- 所需知识:
a.如何生成线性间距向量。b.如何创建一个多维空间网格坐标。c.如何表示乘法。d.如何导出图形。e.如何简单地设置坐标的横纵比。
- 事先需要了解和准备的:创建脚本文件、脚本文件的运行、设置目标路径。
那么开始今天的学习吧:[1]
1.生成线性间距行向量:linspace
基本语法:x=linspace(x1,x2)、y=linspace(x1,x2,n)
- x=linspace(x1,x2)%右边返回一个 包含在x1、x2内一百个等距点 的行向量,而如果想对分割的等距点有所限制的话,就后加一个n,表示分割成含n个等距点的行向量,例如:
>>
由此我们可以建立参变量的线性间距:
u
2.★创建二维或三维网格:meshgrid
基本语法:[X,Y]=meshgrid(x,y)、[X,Y,Z]=meshgrid(x,y,z)
- [X,Y]=meshgrid(x,y)%X和Y都返回length(y)行,length(x)列,其中X的每一行都由x组成,Y的每一列都由y组成,对于X,Y每一个对应的位置x和y构成一个点,本质上就是生成一个矩形点阵对于X和Y。(与一维begin:step:end构造x的定义域)在绘图时一般是为了构造x,y平面的平面点集作为自变量变化范围。注意:[X,Y]=meshgrid(x)
[X,Y]=meshgrid(x,x)、
- [X,Y,Z]=meshgrid(x,y,z)%可用来计算三变量的函数和绘制三维立体图,性质同上扩展掌握。注意[X,Y,Z]=meshgrid(x)
meshgrid[X,Y,Z]=meshgrid(x,x,x)
于是我们创建这个平面点集:
[
3.按元素乘法:.*(区别于矩阵乘法*)
基本语法:a.*b(同样适用于.^与^、./与/)
- a.b%若a,b为同型向量,则返回一个由把a,b相应元素相乘后按原位置排列组成的同型向量;若a,b为同型数组,则按元素相乘返回一个同型数组;若a为行向量1×m、b为列向量n×1,那么a.*b就返回一个n×m矩阵,它的第i列是列向量b数乘以a的第i个元素的结果(2016版本好像不支持矩阵维数不相同的时候的这种运算,尽量少用)。
- 说明:A*B就是我们在线性代数中常用的矩阵乘法了,A*B要有意义必须A的列数等于B的行数。
我们写出参数方程表达式:
r
4.曲面图形绘制:surf
基本语法:surf(x,y,z)
- surf(x,y,z)%它表示创建一个三维曲面图,就是常见的二元函数
的曲面图,此外函数还对颜色数据使用了Z,因此颜色和高度成比例。我们也可以在z后添加一个矩阵参数c来控制颜色:surf(x,y,z,c);至于怎样去控制颜色,自己去doc吧,反正需要的时候再复制粘贴就好了,记也没啥用。
- 一些其他特殊设置
- 1.修改曲面图的外观:surf(x,y,z,name,value)%使用一个或多个名称-值对组参数指定曲面属性,例如
s=surf(x,y,z,‘Facealpha’,0.5);
就是用来创建半透明曲面的它称为一个曲面对象,将它赋值给一个变量比如s之后就 可以修改它的属性。例如设置Edgecolor属性以关闭边缘显示
s.Edgecolor='none';
接下来我们就可以轻易而自信地绘制普通的图形了:
surf
![84280c756520e67c64f96667c74baa33.png](https://i-blog.csdnimg.cn/blog_migrate/71787b706355b01c864007acd6242001.png)
但是我们对这个图抱有疑惑,它并不是我们常见的莫比乌斯环的样子啊!其实它确实是莫比乌斯环,只是观测的位置比较的”偏僻“别着急,我们再需要加上两行代码调整一下:
view
![a053d336dbb233d39034e32f2538127a.png](https://i-blog.csdnimg.cn/blog_migrate/0d549b6056564d217628c56b5ac639b5.jpeg)
看!我们得到了莫比乌斯环,那么view和axis equal是什么呢?
5.照相机视线:view
简单语法:view(az,el)、view(dim)
- view(az,el)%view的作用是改变观测图形的角度,az是方位角(azimuth),而el是仰角(elevation),均以度数为单位。规定当视线垂直于x0z轴时az=0,视线绕图形逆时针旋转为正。而el是视线与xy平面形成角的关系,规定眼睛在xy轴上面时el大于零,否则小于等于零。系统默认az=-37.5°,el=30°。说明:如果内部为三维数组,那么就是观测位置,不再是az和el。
- view(dim)%在dim维数中显示图形
6.设置坐标轴范围和横纵比:axis
简单语法:axis style、axis(limit)、
- axis style%使用预定义样式,以下列举一些常用的:
- axis equal%每个坐标轴都使用相等的数据单位长度,系统默认并不是使用相同的数据单位长度,视觉效果是做了拉伸的。
- axis off%绘制曲面而不显示坐标轴和背景,假如只需要图形,我们可以把乱七八糟的背景off掉,在此之前我们可以先使用equal把拉伸的图形恢复原状。
- axis tight%把坐标轴范围设置为等同于数据范围,这样绘图可以扩展到坐标区边缘
- axis(limit)%可以改变原先坐标轴的范围为axis内的指定范围。改变x、y改变范围示例:
axis([0 2*pi -2 2])
现在图就这样作好啦。以下是完整简单的代码
u
![6cf4cb6126e85418c958d2d79c204b94.png](https://i-blog.csdnimg.cn/blog_migrate/224aeac72d14d87ab603b13afdc9d305.jpeg)
对于简单的matlab绘图步骤大致就分为:准备数据
就酱。逐渐习惯利用官方文档学习,它超棒的。
参考
- ^cite from documentation of Matlab https://ww2.mathworks.cn/help/matlab/index.html?lang=en