• Matlab图形绘制


    绘制二维图形

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

    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
    • 2

    %示例2:

    >> t = linspace(0,2*pi,200);
    >> x = sin(t)+sin(2*t);
    >> y = cos(t)-cos(2*t);
    >> plot(x,y,'k')
    
    • 1
    • 2
    • 3
    • 4

    %示例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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    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

    %示例2:

    >> fplot(@(t)sin(t), @(t)cos(t), [-pi, pi])
    
    • 1

    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)
    
    • 1

    bar函数

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

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

    %示例:

    >> x = [1:8:88];
    bar(x,'grouped');
    
    • 1
    • 2

    histogram函数

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

    %示例:

    >> x = [1:1:10];
    >> histogram(x,1:1:10)
    
    • 1
    • 2

    pie函数

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

    %示例:

    x = [1:8:88];
    pie(x,[1:1:11])

    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)
    
    • 1
    • 2

    图形窗口的分割

    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区 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    图形叠加
    在已存在的图形上再叠加新的图形,可使用图形保持命令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]) %绘制圆
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    绘制三维图形

    三维图形是通过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)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ##二维网格绘制
    将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顺序
    
    • 1
    • 2
    • 3
    • 4

    三维曲面绘制

    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函数用于在三维曲面的曲面底部显示等高线图
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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]);
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Android App开发超实用实例 | ​Broadcast
    毕设-基于SSM房屋租赁管理系统
    【Docker管理工具】Rancher容器管理平台的基本使用
    微信小程序新版隐私协议弹窗实现最新版
    手撕单链表(C语言)
    基于 outline 实现头像剪裁以及预览
    openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw
    登入验证安全 上(验证码、忘记密码、客户端验证)
    文献阅读的思路
    什么是验厂&什么是认证
  • 原文地址:https://blog.csdn.net/m0_71905144/article/details/127736836