Logarithm Plots
画一些与对数(log)有关的图像,log,既可以是图像是log,又可以是坐标轴log,用一个例子来说明
首先看到第一个函数logspace(a,b,c)
,这个函数的作用与linspace()
差不多,创建一个以10^a为起始,10^b 为终止,中间被等分成 c 个的数据数组,所以x = [10^-1,10^1]
,那么y = [10^-2,10^2]
重点主要放在semilogx()
、semilogy()
、loglog()
这三个函数上,他们的作用见下表
函数 | 作用 |
---|---|
semilogx | x 轴为对数刻度,y 轴为线性刻度 |
semilogy | x 轴为线性刻度,y 轴为对数刻度 |
loglog | x 轴和 y 轴均为对数刻度 |
plotyy()
有时候在一张图上花了两条曲线,但是这两条曲线如果对应的 y 的值域不一样,plotyy()
函数可以在一个图上做出两个 y 轴
Histogram
首先是第一行的randn()
函数,这个函数的的作用是产生正态分布的随机数或矩阵,其调用格式为:randn(m,n)
,返回一个m*n的满足正态分布的矩阵。
hist()
函数调用格式为:hist(y,nbins)
,将向量 y等分到 nbins个等间隔范围内,并返回每个范围内元素的个数
bar
matlab 中bar()
函数的作用是绘制直方图,常用于统计或数据采集。共有四种形式:bar
、bar3
、barh
、bar3h
,其中bar
和bar3
分别用来绘制二维和三维竖直方图,barh
和bar3h
分别用来绘制二维和三位水平直方图,其调用格式为:bar(x,y)
,其中 x 必须单调递增或递减,y 为 m*n 的矩阵,产生的结果为 m 组,每组 n 个垂直柱。bar(...,'grouped')
,使同一组直方条紧紧靠在一起。bar(...,'stack')
,把同一组数据描述在一个直方条上
Pie Charts
pie()
函数用于描绘圆饼图
x = [1 1 2 2 3 4 5];
pie(x);
x中的数据被看作频数,饼图中的比例:x[i]/sum(x),当 x 中所有元素的元素和 sum(x) < 1 时,图形不是一个整圆,例如x = [0.1,0.2,0.3]
时,得到
Pie3
pie3()
用于描绘三维饼图
x = [2 3 5];
pie3(x);
Polar chart
polar()
用于描绘极坐标图像,其调用格式为:polar(theta,rho);
,其中theta
是用弧度制表示的角度,rho
对应半径
stairs and stem charts
stairs()
和stem()
两个函数的用法与plot()
函数类似,只不过这两个,一个是画阶梯图,另个是画针状图
errorbar
errorbar顾名思义,就是指有误差范围的。其调用格式为:errorbar(x,y,l,u)
,x 是自变量,y 是因变量,l 是 y 的变动下限,u 是 y 的变动上限,或者errorbar(x,y,e)
,e 是 y 的变动绝对值
fill
fil(x1,y1, 选项 1,x2,y2, 选项 2,······)
按向量元素的下标渐增次序依次用直线段连接 x,y 对应元素定义的数据点。假如这样连线所得的折线不封闭,那MATLAB会自动将折线首尾连接起来,形成封闭多边形,然后在多边形内部涂满指定颜色
plot3
三维曲线函数plot3()
,其调用格式为:plot(x,y,z,’style’);
,x,y,z 分别对应三个坐标轴,style 可以是线的颜色,风格样式
meshgrid
上面讲的 3d 画图的方法是关于线的,如果想画一个与能呈现出面的图,就要用到meshgrid()
函数,其调用格式为:[x,y] = meshgrid(x,y);
由向量 x 和 y 生成二维数组,用来计算二元函数 f(x,y) 的值 z=f(x,y)
三维网格图
mesh(x,y,z)
:绘制由数组 X,Y,Z 所确定的曲面网格图,X,Y,Z都为二维数组时,要求它们的维数相同。X,Y 也可以是向量,但 Z 必须为二维数组,[m,n] =size(Z)
,此时必须满足:length(X) = n
且length(Y) = m
mesh(z)
:相当于X = 1:n
,Y = 1:m
,其中[m,n] = size(Z)
mesh(...,C)
:二维数组 C 确定网格颜色,省略 C 时相当于 C=Zmesh(...,'PropertyName',PropertyValue,...)
:设置属性值
这里我多加了个hidden off
,这个命令是使每个四边形区域不填充任何颜色,这样就可以看到后面的图像
meshz(X,Y,Z)
调用方式与 mesh 相同,在 mesh 的基础上屏蔽边界面
meshc(X,Y,Z)
调用方式与 mesh 相同,在 mesh 的基础上增加等高线
等值线图
- contour是等高线绘制函数,其调用格式为:
contour(z)
,根据矩阵 z 画出等高线,z 是以 x,y 为平面的高度,z 必须是一个至少二维的矩阵,x,y 轴的范围是[1,n]和[1,m],[m,n] = size(z) contour(z,n)
,用 n 条水平线来绘制 z 的等高线contour(z,v)
,是以向量 v 中的数据来绘制矩阵 z 的等高线,等高线的个数等于向量 v 的长度
三维表面图
surf(Z)
:相当于 X = 1:n ,Y = 1:m,其中[m,n] = size(Z)
surf(Z,C)
:二维数组 C 确定网格颜色,省略 C 时相当于 C=Zsurf(...,'PropertyName',PropertyValue)
:设置属性值
surfc(X,Y,Z)
调用方式与 surf 相同,在 surf 的基础上增加等高线
一些图书图形的绘制
cylinder
matlab 为我们提供了绘制柱面的函数 cylinder,其调用格式为:
[x,y,z] = cylinder
,返回半径为 1、高度为 1 的圆柱面 x,y,z 轴的坐标值,圆柱面有 20 个距离相同的的点[x,y,z] = cylinder(r)
,返回半径为 r,高度为 1 的柱面的 x,y,z 轴的坐标值,柱面有 20 个距离相同的点[x,y,z] = cylinder(r,n)
,返回半径为 r,高度为 1 的柱面的 x,y,z 轴的坐标值,柱面有 n 个距离相同的点
sphere
matlab 为我们提供了绘制球面的函数sphere,其调用格式为:
sphere
,生成三位直角坐标系中的单位球体,该单位球体有 20*20 个面sphere(n)
,在当前坐标系中画出有 n*n 个面的球体
ellipsoid
matlab 为我们提供了绘制椭球面的函数ellipsoid,其调用格式为:
[x,y,z] = ellipsoid(xc,yc,zc,a,b,c,n)
,返回绘图数据,x,y,z 均为 (n+1)*(n+1) 的二维数组[x,y,z] = ellipsoid(xc,yc,zc,a,b,c)
,返回绘图数据,n = 20