**matlab画图:**图像是数据结果的一种可视化表现,它能直观的体现你的数据结果,并且能体现你获得结果的准确性,在当前的大数据时代,在做数据分析的时候,将其可视化可以直观多维的展示数据,可以让人们更好的发现并且记住数据的特征,因此很多时候掌握一些绘图方法是非常重要的,而使用MATLAB可以非常简单的进行绘图(当然还有很多其它工具可供使用),下文是一些基本绘图方法的整理,其中很多很多内容非常基础,希望对你能有些帮助。

1.二维图像

二维图像是我们在学习过程中经常会接触到的图像,比如在做数学题目时随手画出的一个正弦曲线,这个图像往往是我们根据它的函数做出来的,事实确是这样,在我们学习过程中画出来的每一个图像几乎都是函数,反过来说,每一个函数都对应着它自己的图像,我们能画出来的二维图像往往是一个一元函数即二元方程,在Matlab中做二维图像也是这样,我们根据一个函数来画出它的图像,不过要注意的一点是,在Matlab画图的过程中,它并不认识你给出的那个函数,它要做的仅仅是把你给出的函数上的点连成线而已。

(1)plot

在Matlab里面做二维图像最基础也是最常用的两个函数:plot()fplot()函数,其中,plot的经常使用的方法有下面三种:

  • plot(x)
  • plot(x,参数)
  • plot(x1,y1,x2,y2,...,xn,yn)

首先,**第一种方法里面若x为一维数组,则作出的图像是以其数组长度为横坐标,间隔为1,以数组中的具体值为纵坐标的。**而其也可以为复数变量,如下:

y = [5,10,15,20]
z = [100,200,300,400]
x =y+z*i
//这里的x经过此定义将会被认为是一个复数变量,图像将会以实部即y为横坐标,虚部即z为纵坐标作图
subplot(1,2,1);plot(y);
subplot(1,2,2);plot(x);

效果如下图:

**第二种形式就更好理解了,往往其中的x、y都为一维数组,其实y也就是x对应的函数值,后边的参数用于指定曲线的线形、颜色和数据点标记,**如下:

x = [0:0.1:2*pi];
y = sin(x);
plot(x,y,'-m*');

效果如下图:

可以看到,x是一个长度为63的一维数组,y是和x等长的在sin(x)上的一维数组,后边的-m*分别为曲线线形、颜色、数据点标记,其中参数的一些具体属性如下表所示:

线形 颜色 数据点标记
‘-’:实线 k:黑色 *:星号
‘:’:虚线 b:蓝色 o:圆圈
‘-.’:点划线 c:蓝绿色 s:方块
‘–’:双划线 g:绿色 p:五角星
m:洋红色 ^:朝上三角符号
r:红色 x:叉
w:白色 +:+
y:黄色 d:菱形
v:朝下三角符号
<:朝左三角符号
>:朝右三角符号
H:六角形

第三种使用方法,意思是把n个图像做出在一个窗口中,同时也少敲了几个plot,当然,如果你想把代码分开写也可以,只需要加上hold on命令就行了,关于它后文会有介绍。

(2)fplot

* fplot(f,lims,参数)

* fplot(funx,funy,tlims,参数)

在第一种方法中,f代表一个函数,通常采用函数句柄的形式。lims为x轴的取值范围,用二元向量[xmin,xmax]描述,默认值为[-5,5]。参数定义与plot函数相同。例如使用fplot函数绘制sin(x)图像如下:

fplot(@(x)sin(x),[0,2*pi],':r*')

结果如下图:

在第二种方法中,funx、funy代表函数,通常采用函数句柄的形式。tlims为参数函数funx和funy的自变量的取值范围,用二元向量[tmin,tmax]描述。如绘制参数方程(x=tsint,y=tcost)曲线如下:

fplot(@(t)t.*sin(t),@(t)t.*cos(t),[0,10*pi],'-r')

注意:用matlab R2014b使用该函数出错,有文章指出用fplot不能画参数方程的图像(该观点暂未验证)

(3)其它形式下的二维曲线图

上文举例说明了最基础最常用的两个做二维曲线的函数,实际上,二维图形的种类还有很多,不光只有一根线构成的曲线图,还有各种统计图、坐标图等等,相应的在Matlab中也有画它们图形的方法,下面是其它几种图形作图方法(非全部):

  • 符号函数(显函数、隐函数、参数方程)

explot('f(x)',[a,b])

表示在a<x<b绘制显函数y=f(x)的图像。

ezplot('f(x,y)',[xmin,xmax,ymin,ymax])

表示在区间xmin<x<xmax和ymin<y<max之间绘制隐函数f(x,y)=0的函数图像。

ezplot('x(t)','y(t)',[tmin,tmax])

表示在区间tmin<t<tmax绘制参数方程x=x(t),y=y(t)的函数图像。

  • 对数坐标图

semilogx(x1,y1,'参数',x2,y2,'参数'...)

semilogy(x1,y1,'参数,x2,y2','参数'...)

loglog(x1,y1,'参数',x2,y2,'参数'...)

其中,semilogx函数x轴为常用对数刻度,y轴为线性刻度;semilogy函数x轴为线性刻度,y轴为常用对数刻度;loglog函数x轴和y轴均采用常用对数刻度。

  • 极坐标图

polar(theta,rho,'参数')

其中,theta为极角,rho为极径,参数内容与plot相同。

  • 条形图

bar(y,style)

bar(x,y,style)

x = [2018,2019,2020]
y = [10,20,30,40,50;
10,20,30,40,50;
10,20,30,40,50];
bar(x,y)

第一个,参数y是数据,选项style用于指定分组排列模式,模式有两种供选择,分别为:‘grouped’:簇状分组,‘stacked’:堆积分组。 第二个,x存储横坐标,y存储数据,y的行数必须与向量x的长度相同。选项style用于指定分组排列模式。

  • 直方图

hist(y)

hist(y,x)

其中,y是要统计的数据,x用于指定区间的划分方式。若x是标量,则统计区间均分成x个小区间;若x是向量,则向量x中的每一个数指定分组中心值,元素的个数为数据分组数。x缺省时,默认按10个等分区间进行统计。

rose(theta[],x)

其中,参数theta用于确定每一区间与原点的角度,选项x用于指定区间的划分方式。

  • 面积类图形

pie(x,explode)

其中,参数x存储待统计数据,选项explode控制图块的显示模式。使用如下,可以试着改下参数或者help一下看看。

score = [10,25,3,18,41]
ex = [0,0,0,0,1]
pie(score,ex)

效果如下图:

  • 散点类图形

scatter(x,y,选项,'filled')

其中,x、y用于定位数据点,选项用于指定线型、颜色、数据点标记。如果数据点标记是封闭图形,可以用选项’filled’指定填充数据点标记。该选项省略时,数据点是空心的。 一颗心:

t = 0:pi/50:2*pi
x = 16*sin(t).^3
y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t)
scatter(x,y,'rd','filled')

效果如下图:

  • 矢量类图形

quiver(x,y,u,v)

其中,(x,y)指定矢量起点,(u,v)指定矢量终点。x、y、u、v是同样大小的向量或同型矩阵,若省略x、y,则在x-y平面上均匀取若干个作为起点。

已知向量A、B,求A+B,并用矢量图表示。
A = [4,5]; B = [-10,0]; C = A+B;
hold on
quiver(0,0,A(1),A(2));
quiver(0,0,B(1),B(2));
quiver(0,0,C(1),C(2));
text(A(1),A(2),'A');text(B(1),B(2),'B');
text(C(1),C(2),'C')
axis([-12,6,-1,6])
grid on

效果如下图:

  • 进阶:双Y轴绘图

plotyy()

示例代码:

x =  [0:0.01:20]
y1 = 200*exp(-0.05*x).*sin(x)
y2 = 0.8*exp(-0.5*x).*sin(10*x)
plotyy(x,y1,x,y2)

和plot()有什么区别呢?效果如下图:

2.三维图像

在上文的二维作图示例中我们可以知道二维作图的基本方法,而有时候二维的图形满足不了我们的需要,这个时候就需要做一些三维图像了,而三维图像里边除了包含曲线作图之外还包含曲面作图。

2.1三维曲线图像

在二维曲线作图里边我们主要使用的函数是plot和fplot函数,而在三维曲线作图里面我们使用的是plot3和fplot3函数,其不但长得像,功能也是差不多的,只不过是做了扩展而已。

  • plot3和fplot3

关于plot3函数,其基本用法如下:

one plot3(x,y,z,参数)

two plot(x1,y1,z1,x2,y2,z2,...,xn,yn,zn)

是不是似曾相识,没错,它和plot功能确实非常像,只是多了一维数据而已。如要画出sin(x)的三维图,只需这样就好:

x = [0:0.01:10]
y = x
z = sin(x)
plot3(x,y,z,'-r')

效果如下图:

怎么样,是不是非常简单,假如要绘制个空间的螺旋线,其参数方程为:x=sint+tcost,y=cost-tsint,z=t,只需这样就好:

t = [0:0.1:10*pi]
x = sin(t)+t.*cos(t)
y = cos(t)-t.*sin(t)
z = t
plot3(x,y,z)

效果如下图:

对于plot3函数来讲,它的参数x,y,z不止可以是一维数组,实际上:

参数x、y、z是同型矩阵时,以x、y、z对应列元素绘制曲线,曲线条数等于矩阵列数。
参数x、y、z中有向量,也有矩阵时,向量的长度与矩阵相符。
对于其不止一组数据的方法2,其作用与plot类似,每一组x、y、z向量构成一组数据点的坐标,绘制一条曲线。 而plot3函数的后面线型、颜色和数据点标记的参数则与plot完全一致。 对于fplot3函数,其基本引用方法如下:

fplot3(funx,funy,funz,tlims)

其中,funx、funy、funz代表定义曲线x、y、z坐标的函数,通常采用函数句柄的形式。tlims为参数函数自变量的取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5],与fplot是几乎完全一致的,不再举例。

2.2三位曲面图像

在做三维曲面图的时候,第一步往往是生成一个平面网格,这个平面网格是什么东西呢,其实就是用矩阵X、Y分别存储每一个小矩形顶点的x坐标与y坐标,矩阵X、Y就是该矩形区域的xy平面网格坐标矩阵:

说的简单些,就是给我们要用的空间坐标系做个底面出来,本来x、y都是一维向量,它们也就是只能当两根轴,这个时候用新的两个X、Y矩阵来把空间坐标系的二维地面给表示出来,这样的话每一个[X,Y]就都能对应一个Z了,就是这个意思。在MATLAB中,产生平面区域内网格坐标矩阵有两种方法:

  • 1.利用矩阵运算生成:

X = ones(size(y))*x
Y = y*ones(size(x))

  • 2.利用meshgrid函数生成:

[X,Y] = meshgrid(x,y)

绘制三维曲面的函数

mesh(x,y,z,c)surf(x,y,z,c)mesh(z,c)surf(z,c)

其中,x、y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的曲面颜色。c省略时,颜色的设定正比于图形的高度。 当x、y省略时,z矩阵的第2维下标当作x轴坐标,z矩阵的第一维下标当作y轴坐标。 另外还有一些其它的绘制三维曲面的函数:

带等高线的三维网格曲面函数meshc带底座的三维网格曲面函数meshz具有等高线的曲面函数surfc具有光照效果的曲面函数surfl

这些函数使用都和mesh还有surf大致相同,可自行练习了解。

//用4种方式绘制函数z=(x-1)^2+(y-2)^2-1的曲面图
//其中,x=[0,2],y=[1,3][x,y]=meshgrid(0:0.1:2,1:0.1:3)
z=(x-1).^2+(y-2).^2-1
subplot(2,2,1);meshc(x,y,z)
subplot(2,2,2);meshz(x,y,z)
subplot(2,2,3);surfc(x,y,z)
subplot(2,2,4);surfl(x,y,z)

效果如下图所示:

  • fmesh函数和fsurf函数 用于绘制参数方程定义的曲面

fsurf(funx,funy,funz,uvlims)

fmesh(funx,funy,funz,uvlims)

其中,funx、funy、funz代表定义曲面x、y、z坐标的函数,通常采用函数句柄的形式。uvlims为funx、funy和funz的自变量的取值范围,用4元向量[umin,umax,vmin,vmax]描述,默认为[-5,5,-5,5]。

3.高维图像

matlab中若将颜色等看作一维可以做出四维图像,甚至五维图像。若更高维度图像,则需要进行降维处理。

4.图形修饰辅助操作

不管是二维曲线三维曲线还是曲面,大家掌握的方法都差不多了,图大概率是能被我们做出来了哈哈哈,不过能把图做出来固然重要,可更重要的是还能做出美图来,这就离不开我们的图形修饰了,比如给做好的图形加个标题加个注释什么的,我们要做出来图,还要做出来细图,更要做出来美图,接下来文章将列举我们经常使用的并且很有用的图形修饰辅助操作。

4.1基础绘图指令

除去上文所述plot等绘图函数命令之外,还有有一些其它修饰图形的常用命令。

指令 作用
figure(num) 新打开一个图形窗口,num为窗口序号
hold on 从指令开始,将后续所有图形绘制在一个figure窗口中
hold off 和hold on搭配只用,此指令开始,后续图像不在与之前图形绘制在一个窗口中
axis on 显示坐标轴
axis off 不显示坐标轴
axis square 使坐标区域为正方形
axis normal 自动调整轴的长宽比和数据单元的相对比例
axis equal 设置纵横比,使数据单元为各方面都一样
axis equal tight 将轴限制设置为数据的范围
axis ij 把坐标系统的原点放在左上角
axis xy 把原点放在左下角

这些呢是一些常用的辅助绘图指令,没有参数,直接在脚本输入就行,功能已经列在表中非常明确,大家可以自行练习查看实用效果。

4.2图形标注函数

title(图形标题)

xlabel(x轴说明)

ylabel(y轴说明)

text(x,y,文本说明)

legend(图1,图2,...,参数...)

值得一提的是,上面这些函数的使用方法远不及示例这么简单,它们都有非常多的参数可供选择使用,示例只是列出最简单、最常用的方法,下面是两段代码:

//没有图形标注
x = 0:0.5:4*pi
y1 = sin(x)
y2 = cos(x)
y3 = 1./(1+exp(-x))
y4 = (1/(2*pi)^0.5).*exp(((-1).*(x-2*pi).^2)./(2*2^2))
plot(x,y1,x,y2,x,y3,x,y4)
//加上简单图形标注
title('四条函数图像')
xlabel('横坐标')
ylabel('纵坐标')
text(0,0,'猜猜我在哪')
legend('y1','y2','y3','y4','Location','southwest')

4.3图形窗口分割函数subplot

subplot(m,n,p)

其中,m和n指定将窗口分成mXn个绘图区,p指定的是当前图像所在区域,如m=2,n=3,则一个figure窗口被分成2行三列供6个绘图区,可以容纳6个图形。若p=3,说明当前图像要被画进第三个窗口,也就是第二行第一列的窗口内。p小于等于mXn

4.4图形修饰处理

  • 视点处理

方位角:视点与原点连线在xy平面上的投影与y轴负方向形成的角度,正值表示逆时针,负值表示顺时针。

仰角:视点与原点连线与xy平面的夹角,正值表示视点在xy平面上方,负值表示视点在xy平面下方。

  • view函数

view(az,el)

其中az为方位角,el为仰角。系统默认的视点定义为方位角-37.5°,仰角30°。

//绘制函数z=(x-1)^2+(y-2)^2-1的曲面图,并从不同视点展示曲面
[x,y] = meshgrid(0:0.1:2,1:0.1:3)
z =(x-1).^2+(y-2).^2-1
subplot(2,2,1); mesh(x,y,z)
subplot(2,2,2); mesh(x,y,z);view(0,90)
subplot(2,2,3); mesh(x,y,z);view(90,0)
subplot(2,2,4); mesh(x,y,z);view(-45,-60)

效果如下图:

  • 色彩处理

默认的,向量元素在[0,1]范围内取值,3个元素一次表示红、绿、蓝三种颜色的相对亮度,称为RGB三元组即[R G B],如[0 0 1]是蓝色,[1 0 0]是红色,[1 1 1]是白色,[0 0 0]是黑色。(当然,也有在[0,255]内取值的,不再介绍)

  • 色图(Colormap)

首先,创建一个色图矩阵方法如下:
cmap = colormap(parula(5))
其中,parula是内建色图中包含的一个种类,其中参数5可以是任何一个数值,它关系着色图矩阵的范围,一般来说使用的时候省略就好。

5.参考文献

  1. https://zhuanlan.zhihu.com/p/270418437

matlab画图入门教程相关推荐

  1. matlab画图入门篇--各种基本图形绘制的函数与实例【转载】

    MATLAB画图入门篇--各种基本图形绘制的函数与实例 一. 二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plo ...

  2. 良心推荐 最适合新手学习的Matlab快速入门教程

    MATLAB 快速入门教程(一) 一.关于MATLAB的基本操作和介绍 1. 如何打开matlab的文件 2. 如何运行一段代码 3. some tips about matlab 1. 如何打开ma ...

  3. MATLAB编程与应用系列-关于MATLAB编程入门教程的总体编写安排

    本系列教程来源于出版设计<基于MATLAB编程基础与典型应用书籍>,如涉及版权问题,请联系:156204968@qq.com. 出版社:人民邮电出版社, 页数:525. 本系列教程目前基于 ...

  4. matlab怎么删除对象,ROS与Matlab语言入门教程-在Gazebo中增加、建立和移除对象

    本例程探索如何深层次地与MATLAB中的Gazebo仿真器交互.主题包括创建简单的模型.增加链接和加入模型.将模型连接在一起和应用力到物体. 预备知识:"4.2 开始使用Gazebo和仿真的 ...

  5. MATLAB快速入门教程(一)

    一.关于MATLAB的基本操作和介绍 1. 如何打开matlab的文件 我们写的源代码可以存成一个文件如"XXX.m",这表示一个matlab的脚本文件.有时候我们也会见到&quo ...

  6. Matlab画图入门

    1.基本画图 程序如下: x=0:pi/1000:2*pi; y1=sin(2*x); y2=2*cos(2*x); %输出图像 plot(x,y1,'k-',x,y2,'b--'); title(' ...

  7. Matlab图像处理入门教程(菜鸟级)

    1,图像的读入和显示: (1)图像读入:A=imread('文件名',文件格式) [X,map]=imread('文件名') %X代表索引图像矩阵,map为颜色映射表 (2)图像显示:image(A) ...

  8. matlab定义机器人位置,ROS与Matlab语言入门教程-差动机器人的路径跟踪

    该例程演示如何使用机器人运动模型控制机器人跟踪目标路径.该例程使用"Pure Persuit"路径跟踪控制器驱动仿真机器人沿着预先决定的路径运动.要求的路径时一系列的陆标,该陆标是 ...

  9. python画图颜色表示大小变化_python画图(线条颜色、大小、类型:点、虚线等)(图文详细入门教程四)...

    初衷 本人由于平常写论文需要输出一些结果图,但是苦于在网上搜python画图时,详细的教程非常多,但是就是找不到能马上解决自己问题那一行代码,所以打算写一些适合需求简单的朋友应急用的教程,应急就必须方 ...

  10. python画图marker显示_python画图(标记、marker、设置标记大小、marker符号大全)(图文详细入门教程五)...

    初衷 本人由于平常写论文需要输出一些结果图,但是苦于在网上搜python画图时,详细的教程非常多,但是就是找不到能马上解决自己问题那一行代码,所以打算写一些适合需求简单的朋友应急用的教程,应急就必须方 ...

最新文章

  1. ldd 3 重定向打印开启 misc-progs
  2. 1.14 Java注释:类、方法和字段注释
  3. 适配器模式coding
  4. [开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
  5. 李宏毅机器学习(一)基本概念介绍
  6. 华为鸿蒙麒麟玉兔_华为P50除了麒麟9000,还预装鸿蒙系统,比iPhone12值得买
  7. java编译可执行文件_Java编译器完成但没有创建可执行文件?
  8. 报表下拉框多选查询及一般在sql中添加查询条件
  9. Mybatis 有坑,千万别踩!
  10. oracle10g   RMAN增量备份策略
  11. 经验| 张家口交通综合运行协调与应急指挥中心建设
  12. java 几何平均数_统计学——平均数
  13. linux+qq+输入法下载官网,续:Linux下安装输入法和QQ软件
  14. 0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)
  15. SAP SD VF01 销售开票增强
  16. Jetson TX2实现EfficientDet推理加速(二)
  17. bugku_PHP代码审计—md5加密相等绕过
  18. 煎蛋网妹子图爬虫(requests库实现)
  19. 恢复Windows IE浏览器为默认
  20. WSL2 启用systemd

热门文章

  1. 红米10X 5G手机电路原理图纸
  2. 拼装机器人感想_机器人学习心得体会
  3. 微信小游戏(打飞机1)
  4. 纪念 C语言之父 丹尼斯·里奇 逝世11周年:他发明了计算机世界的钢筋水泥!...
  5. JS base64 加密和 后台 base64解密(防止中文乱码)
  6. 设计教务管理系统MySQL,数据库设计实例 教务管理系统
  7. 百度网盘搜索功能伪增强
  8. 开心游戏网页(附效果图)
  9. FleaPHP 1.0.70 开发进度汇报专贴
  10. 用python 代码写一个表白I love you