MATLAB作图
曲线图
MATLAB作图是通过描点、连线来实现的,故在画一个曲线图形之前,必须先取得该图形上的一系列的点的坐标(即横坐标和纵坐标),然后将该点集的坐标传给MATLAB函数画图。
plot(X,Y,S)
X,Y为向量,分别表示点集的横坐标和纵坐标
S表示连线的类型
y 黄色 . 点 - 连线
m 洋红 o 圈 : 短虚线
c 蓝绿色 x x-符号
-. 长短线 r 红色 + 加号 – 长虚线
plot(X,Y1,S1,X,Y2,S2,...,X,Yn,Sn)
将多条线画在一起
例如:
在用红线画,用绿圈画
1 | x=linspace(0,2.*pi,30); |
符号函数(显函数、隐函数和参数方程)画图
fplot('fun',lims)
表示绘制字符串指定的函数在的图形.
- fun必须是M文件的函数名或是独立变量为x的字符串.
- fplot函数不能画参数方程和隐函数图形,但在一个图上可以画多个图形.
例如:
在上画的图形。
- 先建M文件myfun1.m
1 | function Y=myfun1(x) |
- 再输入命令
fplot(‘myfun1’,[-1,2])
对数坐标图
在很多工程问题中,通过对数据进行对数转换可以更清晰地看出数据的某些特征,在对数坐标系中描绘数据点的曲线,可以直接地表现对数转换.
对数转换有双对数坐标转换和单轴对数坐标转换两种.
用loglog
函数可以实现双对数坐标转换.
用semilogx
和semilogy
函数可以实现单轴对数坐标转换.
对数坐标就是它的数值增长跟到原点的距离不是线性关系,而是对数关系。
例如正常横坐标轴:
而对数坐标轴就是:
在对于变化量激增的数据来说对数坐标轴比较好表示
三维图形
空间曲线
一条曲线
plot3(x,y,z,s)
表示曲线上点集的横坐标、纵坐标、纵坐标。
表示连线的类型,见上文
例如:
在区间画出参数曲线.
1 | t=0:pi/50:10*pi; |
多条曲线
plot3(x,y,z)
其中是都是矩阵,其对应的每一列表示一条曲线.
例如:
画多条曲线观察函数
1 | x=-3:0.1:3;y=1:0.1:5; |
展开讲一讲meshgrid这个函数。
在文档中的应用是[X, Y]=meshgrid(x,y)
基于向量和中包含的坐标返回二维网格坐标。坐标和表示的网格有个行和个列。
例子
可以注意到,列数跟是相同的,行数跟是相同的。
在中可以看到数据只有我们输入的,同理。
是一行行摆数据,而是一列列摆数据。
空间曲面
surf(x,y,z)
surf(x,y,z)
分别表示数据点的横坐标、纵坐标、函数值。
画出数据点表示的曲面。
例如:
画函数的图形.
1 | x=-3:0.1:3; |
有点美耶…
mesh(x,y,z)
mesh(x,y,z)
画网格曲面。
例如:
画出曲面在不同视角的网格图。
1 | x=-3:0.1:3; |
感觉还是surf好看
meshz(X,Y,Z)
meshz(x,y,z)
在网格周围画一个curtain图(如,参考平面)
?看不懂了
例如:
绘peaks的网格图
1 | [X,Y]=meshgrid(-3:.125:3); |
图形处理
在图形上加格栅、图例和标注
加格栅
GRID ON
加格栅在当前图上
GRID OFF
删除格栅
开了格栅,关了格栅就没有浅灰色的那些线
加图例
xlabel(string)
在当前图形的x轴上加图例string
ylabel(string)
在当前图形的y轴上加图例string
zlabel(string)
在当前图形的z轴上加图例string
title(string)
在当前图形的顶端上加图例string
这个二维坐标系没有z轴,不过大差不差
加标注
gtext(‘string’)
命令gtext(‘string’)
用鼠标放置标注在现有的图上.
运行命令gtext('string')
时,屏幕上出现当前图形,在图形上出现一个交叉的十字,该十字随鼠标的移动移动,当按下鼠标左键时,该标注string放在当前十交叉的位置.
输完命令之后图像会出现一个十字标,选择一个位置左键一下就可以标注函数名称了。
定制坐标
axis([xmin xmax ymin ymax zmin zmax])
定制图形坐标
x、y、z的最大、最小值
axis auto
将坐标轴返回到自动缺省值
可以看到axis限定了x轴和y轴的范围
图形保持
hold on
保持当前图形, 以便继续画图到当前图上
hold off
释放当前图形窗口
figure(h)
新建h窗口,激活图形使其可见,并把它置于其它图形之上
例如:
区间新建两个窗口分别画出.
1 | x=linspace(0,2*pi,100); |
割窗口
h=subplot(mrows,ncols,thisplot)
划分整个作图区域为mrows*ncols
块(逐行对块访问)并激活第thisplot
块,其后的作图语句将图形画在该块上.
subplot(mrows,ncols,thisplot)
激活已划分为mrows*ncols
块的屏幕中的第thisplot
块,其后的作图语句将图形画在该块上.
subplot(1,1,1)
命令subplot(1,1,1)
返回非分割状态.
subplot(2,2,1)表示把屏幕分成,在第一块上画图。
例如
将屏幕分割为四块,并分别画出.
1 | x=linspace(0,2*pi,100); |
缩放图形
zoom on
为当前图形打开缩放模式
单击鼠标左键,则在当前图形窗口中,以鼠标点中的点为中心的图形放大2倍;单击鼠标右键,则缩小2倍.
zoom off
关闭缩放模式
没啥用
改变视角view
view(a,b)
改变视角到,是方位角,为仰角.默认视角为.
view([x,y,z])
用空间向量表示的,三个量只关心它们的比例,与数值的大小无关,轴view([1,0,0])
,轴view([0,1,0])
,轴view([0,0,1])
.
两个参数的用法:view(azimuth, elevation)
,其中:
azimuth
(方位角):这是水平旋转的角度。0度通常指向图形的正前方,正值将图形绕y轴逆时针旋转,负值将图形绕y轴顺时针旋转。elevation
(俯仰角):这是垂直旋转的角度。0度通常表示视图位于图形的水平面上方,正值将视图上升,负值将视图下降.
结合分块可以画出不同视角的三维图
1 | x=-3:0.1:3; |
动画
moviein(),getframe,movie()
函数moviein()
产生一个帧矩阵来存放动画中的帧;函数getframe
对当前的图像进行快照;函数movie()
按顺序回放各帧.
例如:
将曲面peaks做成动画
1 | [x,y,z]=peaks(30); |
旋转动画
特殊二、三维图形
特殊的二维图形函数
极坐标图
polar(theta,rho,s)
用角度theta(弧度表示)和极半径rho作极坐标图,用s指定线型.
例如:
的极坐标图形
1 | theta=linspace(0,2*pi) |
散点图
scatter(X,Y,S,C)
在向量和的指定位置显示彩色圈.和必须大小相同.
1 | load seamount |
seamount.mat 数据集包含了有关海底山脉的数据,其中包括海底山脉的位置坐标(经度和纬度)以及与每个位置相关的深度数据。这个数据集通常用于示范如何在 MATLAB 中创建各种类型的图表,如散点图、三维曲面图等,以展示地理或地形数据的可视化。
平面等值线图
contour(x,y,z,n)
绘制个等值线的二维等值线图
例如:
在范围 内绘 的等值线图
1 | [X,Y]=meshgeid(-2:.2:2,-2:.2:3); |
特殊的三维图形函数
空间等值线图
contour3(x,y,z,n)
其中n表示等值线数.
例如:
山峰的二维和三维等值线图
1 | [x,y,z]=peaks; |
三维散点图
scatter3(X,Y,Z,S,C)
在向量和指定的位置上显示彩色圆圈.
向量和的大小必须相同.
例如:
绘制三维散点图.
1 | [x,y,z]=sphere(16); %调用sphere函数会在当前的图形窗口中创建一个单位半径的球体,通常以灰色或其他默认颜色呈现。 |
repmat()
函数用法:B = repmat(A, m, n)
A
是要重复的数组或矩阵。m
是要在垂直方向重复的次数。n
是要在水平方向重复的次数。B
是生成的重复数组或矩阵。
prod()
计算矩阵或数组中所有元素的乘积
size(x)
返回x的行数和列数
所以prod(size(x))
会得到这个矩阵的元素个数