Matlab:图形绘制

Matlab

  • 绘制二维图形
    • plot函数
    • fplot函数
    • fimplicit函数
    • bar函数
    • histogram函数
    • pie函数
    • area函数
      • 图形窗口的分割
      • 图形叠加
  • 绘制三维图形
    • fplot3函数
    • 二维网格绘制
    • 三维曲面绘制

我认为,对于一切情况,只有热爱才是最好的老师。

>> a = 20;
>> x = -2:0.01:2;
>> for i = 1:200
    y = abs(x).^(2/3) + exp(1)/3.*power((pi-power(x,2)),1/2).*sin(a*pi*x);
    a = i/10;
end
>> plot(x,y,'r')

Matlab:图形绘制_第1张图片

绘制二维图形

曲线是由顶点与线段的连接组合而成,而二维图形是由一条或多条曲线组成的平面图形。下面,简单介绍绘制二维图形的函数。

plot函数

在Matlab中,plot函数是最广泛使用的基本绘图函数。plot函数主要用于绘制平面上的线性坐标曲线。

plot函数的调用格式
1.plot(x),根据参数x的不同类型绘制对应的线。
2.plot(x,y),参数x和y为向量或矩阵,分别用于存储要绘制的数据点的横坐标和纵坐标。
3.plot(x1, y1, x2, y2, … , xn, yn),x1和y1、x2和y2……xn和yn分别组成一组向量对,以每一组向量对为横、纵坐标绘制出一条曲线。

%示例1>> y = 1:1:8;
>> plot(y,'k')

示例1如图:
Matlab:图形绘制_第2张图片

%示例2>> t = linspace(0,2*pi,200);
>> x = sin(t)+sin(2*t);
>> y = cos(t)-cos(2*t);
>> plot(x,y,'k')

示例2如图:
Matlab:图形绘制_第3张图片

%示例3>> t1=linspace(0,2*pi,66);
>> x=cos(t1)+sin(t1);
>> t2=linspace(0,2*pi,88);
>> y=sin(t2)-cos(t2);
>> plot(t1,x,t2,y)

示例3如图:
Matlab:图形绘制_第4张图片

fplot函数

fplot函数不同于plot函数需要给出的自变量和因变量的数组,而是根据参数函数的变化特性自适应地设置采样间隔。当函数值变化缓慢时,设置的采样间隔大;当函数值变化剧烈时,设置的采样间隔小。

fplot函数的调用格式
1.fplot(func, lims),其中,func代表定义曲线y坐标的函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元行向量[xmin,xmax]描述,默认为[-5, 5]。
2.fplot(func_x, func_y, lims),其中,func_x,func_y代表函数,通常采用函数句柄的形式。lims为参数函数func_x和func_y的自变量的取值范围,用二元向量[tmin,tmax]描述。

%示例1>> fplot(@(x)sin(x.^2)+cos(x.^2),[-pi, pi])

示例1如图:
Matlab:图形绘制_第5张图片

%示例2>> fplot(@(t)sin(t), @(t)cos(t), [-pi, pi])

示例2如图:
Matlab:图形绘制_第6张图片

fimplicit函数

显函数:在某一变化过程中,两个变量x、y,对于某一范围内的x的每一个值,y都有确定的值和它对应,y就是x的函数。即y=f(x)。
隐函数:方程F(x,y)=0能确定y是x的函数
fimplicit函数能够绘制隐函数的图形,而上述的plot函数和fplot函数可以绘制显函数的图形,但不能绘制隐函数的图形。

fimplicit函数的基本格式
fimplicit(f, [a b c d]) , 其中,f是匿名函数表达式或函数句柄,
[a,b]指定x轴的取值范围,[c, d]指定y轴的取值范围。若省略c和d,
则表示x轴和y轴的取值范围均为[a,b]。若没有指定取值范围,x轴和y轴的默认取值范围为[-5, 5]。

%示例:
>> fimplicit(@(x,y)x.*x.*x+y.*y.*y-5*x.*y+1/5)

Matlab:图形绘制_第7张图片

bar函数

bar函数为条形图函数,用于显示不同时间点的数据大小或比较各组数据的大小。

bar函数的调用格式
bar(x, width, style) ,其中,参数x存储绘图数据;选项width设置条形的相对宽度和控制在一组内条形的间距,默认宽度为0.8;选项style用于指定分组排列模式,类型有’grouped’(簇状分组)、‘stacked’(堆积)、‘histc’(横向直方图)、‘hist’(纵向直方图),默认采用簇状分组排列模式。

%示例:
>> x = [1:8:88];
bar(x,'grouped');

Matlab:图形绘制_第8张图片

histogram函数

histogram函数为直方图函数
histogram函数的调用格式
histogram (x, nbins) ,其中,参数x存储绘图数据;选项nbins用于设置统计区间的划分方式。若nbins是一个正整数,则统计区间均分成nbins个小区间;若nbins是向量,则向量中的每一个元素指定各区间的最小值,默认按x中的值自动确定划分的区间数。

%示例:
>> x = [1:1:10];
>> histogram(x,1:1:10)

Matlab:图形绘制_第9张图片

pie函数

pie函数为扇形统计图
pie函数的调用格式
pie(x, explode) ,其中,参数x存储绘图数据;explode是与x同等大小的向量或矩阵,与explode的非零值对应的部分将从饼图中心分离出来。explode缺省时,饼图是一个整体。

%示例:
>> x = [1:8:88];
>> pie(x,[1:1:11])

Matlab:图形绘制_第10张图片

area函数

area函数为面积图
area函数的调用格式
area(Y, basevalue) ,其中,若Y是向量,以Y为纵坐标绘制一条曲线;若Y是矩阵,则矩阵Y 的每一列元素对应一条曲线,堆叠绘制多条曲线。选项basevalue指定区域的基值,默认为0。

%示例:
>> x = [12,18,16,98;68,99,23,45;67,1,6,10;20,22,9,12];
>> area(x)

Matlab:图形绘制_第11张图片

图形窗口的分割

subplot函数,用来实现对当前图形窗口的分割。subplot函数的调用格式
subplot(m, n, p),其中,参数m和n表示将图形窗口分成m行n列个绘图区,区号按行优先编号。第3个参数指定第p个区为当前活动区,若p是向量,则表示将向量中的几个区合成1个绘图区。

>> x=-3:0.1:3;
>> subplot(2,2,2);    %将图形窗口划分成2×2——4个子图,选定2区为当前活动区
>> y2 = sin(2.*x.^2); %图形存放在2>> plot(x,y2);
>> subplot(2,2,3); %选定3区为当前活动区
>> y3 = cos(x.^3); 
>> plot(x,y3);  %图形存放在3

Matlab:图形绘制_第12张图片

图形叠加

在已存在的图形上再叠加新的图形,可使用图形保持命令hold。hold on命令控制保持原有图形,hold off命令控制刷新图形窗口,不带参数的hold命令控制在两种状态之间进行切换。

%示例:
>> t=linspace(0,2*pi,200);
>> x=sin(t)+sin(2*t);
>> y=cos(t)-cos(2*t);
>> plot(x,y);  %绘制三个叶片
>> axis equal
>> hold on   %保持原有图形
>> fplot(@(x)sin(x),@(x)cos(x),[-pi,pi]) %绘制圆

Matlab:图形绘制_第13张图片

绘制三维图形

三维图形是通过x,y,z三条坐标轴表现的立体图形。

fplot3函数

fplot3函数的调用格式
fplot3(x, y, z, 选项) ,其中,参数x、y、z组成一组曲线的空间坐标。通常,x、y和z为长度相同的向量, x、y、z对应元素构成一条曲线上各数据点的空间坐标;当x、y、z是同样大小的矩阵时,则以x、y、z对应列元素作为数据点坐标,曲线条数等于矩阵列数。当x、y、z中有向量,也有矩阵时,行向量的长度与矩阵的列数相同,列向量的长度与矩阵的行数相同。

%示例:
>> t = 0:pi/20:10*pi;
>> x = sin(t)+t.*cos(t);
>> y = cos(t)-t.*sin(t);
>> z = t;
>> plot3(x,y,z)

Matlab:图形绘制_第14张图片

二维网格绘制

将x方向区间[a,b]分成m份,将y方向区间[c,d ]分成n份,由各划分点分别作平行于两坐标轴的直线,将区域[a,b] × [c,d ]分成m × n个小网格,生成代表每一个小网格顶点坐标的网格坐标矩阵。

%示例:
>> a = 0:8;
>> b = 0:8;
>> [x,y] = meshgrid(a,b); %生成二维网格坐标矩阵的函数
>> plot(x,y,'k',y,x,'k') %注意x,y顺序

Matlab:图形绘制_第15张图片

三维曲面绘制

mesh函数用于绘制三维网格图,surf函数用于绘制三维曲面图。
调用格式
mesh(x, y, z, c)
surf(x, y, z, c)
x、y定义网格顶点的xy平面坐标;z定义网格顶点的高度;选项c用于指定在不同高度下的补面颜色。

%示例:
a = linspace(-2, 2, 25);
[x,y] = meshgrid(a);
z = -exp(-x.^2-y.^2);
subplot(2,3,1)
mesh(x,y,z);
subplot(2,3,2)
meshc(x,y,z);  %meshc函数用于在绘图的同时,在x-y平面上绘制函数的等值线
subplot(2,3,3)
meshz(x,y,z);  %meshz函数用于在网格图基础上在图形的底部外侧绘制平行于z轴的边框线
subplot(2,3,4)
surf(x,y,z); 
subplot(2,3,5)
surfl(x,y,z);  %surfl函数创建一个带光源高光的三维曲面图
subplot(2,3,6)
surfc(x,y,z);  %surfc函数用于在三维曲面的曲面底部显示等高线图

Matlab:图形绘制_第16张图片

fmesh函数与fsurf函数,是根据参数函数的变化特性自适应地设置网格顶点间距。
调用格式
fmesh(funx, funy, funz, lims, 选项)
fsurf(funx, funy, funz, lims, 选项)
参数funx、funy、funz代表定义曲面网格顶点x、y、z坐标的函数,通常采用函数句柄的形式。参数函数funx、funy、funz有两个自变量,lims为自变量的取值范围,用4元向量[umin,umax, vmin, vmax]描述,umin、vmin为自变量的下限,umax、vmax为自变量的上限,默认为[-5, 5, -5,5]。

%示例:
subplot(1,2,1)
fmesh(@(x,y)sin(x).^2+cos(y).^2, [0,pi, 0,pi]);
subplot(1,2,2)
fsurf(@(x,y)sin(x.^2)+cos(y.^2),[0,pi, 0,pi]);

Matlab:图形绘制_第17张图片

你可能感兴趣的:(初识,Matlab,Matlab,图形绘制)