MATLAB绘图总结

MATLAB绘图总结目录一些常用的MATLAB绘图方法二维图像绘制三维作图提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档一些常用的MATLAB绘图方法总结一下一些常用的MATLAB的绘图函数和参数设置,增强结果的可视化程度。二维图像绘制二维图像是在不同的平面坐标上将数据点连接起来的平面图像。常用的平面坐标有,直角坐标、极坐标、对数坐标等,MATLAB有很多常用的指令来绘制不同的二维图像。plot和fplotMATLAB中最常用的两个二维函数绘制函数plot()和fplot()pl

大家好,又见面了,我是你们的朋友全栈君。

一些常用的MATLAB绘图方法

总结一下一些常用的MATLAB的绘图函数和参数设置,增强结果的可视化程度。


二维图像绘制

二维图像是在不同的平面坐标上将数据点连接起来的平面图像。常用的平面坐标有,直角坐标、极坐标、对数坐标等,MATLAB有很多常用的指令来绘制不同的二维图像。

plot和fplot

MATLAB中最常用的两个二维函数绘制函数plot()fplot()

plot – 二维线图
此 MATLAB 函数 创建 Y 中数据对 X 中对应值的二维线图。 如果 X 和 Y 都是向量,则它们的长度必须相同。plot 函数绘制 Y 对 X 的图。
如果 X 和 Y 均为矩阵,则它们的大小必须相同。plot 函数绘制 Y 的列对 X 的列的图。
如果 X 或 Y中的一个是向量而另一个是矩阵,则矩阵的各维中必须有一维与向量的长度相等.
如果矩阵的行数等于向量长度,则 plot函数绘制矩阵中的每一列对向量的图。
如果矩阵的列数等于向量长度,则该函数绘制矩阵中的每一行对向量的图。如果矩阵为方阵,则该函数绘制每一列对向量的图。 如果 X 或Y 之一为标量,而另一个为标量或向量,则 plot 函数会绘制离散点。但是,要查看这些点,您必须指定标记符号,例如 plot(X,Y,‘o’)。

fplot – 绘制表达式或函数
此 MATLAB 函数 在默认区间 [-5 5](对于 x)绘制由函数 y = f(x) 定义的曲线。

例:绘制 y = 2 x ⋅ sin ⁡ ( x ) y = 2x·\sin(x) y=2xsin(x)的函数图像,MATLAB程序如下:

x=[-5:0.01:5];
y=2*x.*sin(x);
a=plot(x,y)%绘制函数并获得其句柄
x=[-5:0.01:5];
y=@(x) 2*x.*sin(x);
fplot(y)

结果如下:
在这里插入图片描述

上述只是plot()fplot() 的简单使用。为使绘制出的图像更具有自明性,我们还需要对图像进行调整。

hold on %保持图像
grid on %增加网格
xlabel('x'); %x轴
ylabel('y'); %y轴
title('y=2xsin(x)'); %标题
legend('y=2xsin(x)'); %图例
a.Color='r'; %曲线颜色设置

结果如下:
在这里插入图片描述
可见图像的自明性有很大提升,此外下表列出了曲线线性、颜色、数据点等参数属性

在这里插入图片描述

对数坐标图

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

semilogx 函数x轴为对数刻度,y轴为线性刻度;semilofy 函数 x轴为线性刻度;loglog函数x轴,y轴均为对数刻度。

极坐标图

polar(theta,rho,'参数')

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

条形图

bar(y,style)
bar(x,y,style)

此 MATLAB 函数 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是 m×n 矩阵,则 bar 创建每组包含 n 个条形的 m 个组。
style 用于指定分组排列模式,模式有grouped(簇状分组)和stacked(堆积分组)两种。

x = [2018,2019,2020];
y = [10,20,30,40,50;10,20,30,40,50;10,20,30,40,50];
subplot(1,2,1);%图形窗口分隔,下文会讲解其使用
bar(x,y,'grouped')
subplot(1,2,2);
bar(x,y,'stacked')

结果如下:
MATLAB绘图总结

直方图

hist(y)
hist(y,x)

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

rose(theta[],x)

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

面积图

score = [10,25,3,18,41];
ex = [0,0,0,0,1];%1的位置对应的那块原理圆心
pie(score,ex);

结果如下:
在这里插入图片描述

pie(X,explode,labels)
此 MATLAB 函数使用 X 中的数据绘制饼图。饼图的每个扇区代表 X 中的一个元素。

散点图

scatter(x,y,sz,‘filled’)
此 MATLAB 函数 在向量 x 和 y 指定的位置创建一个包含圆形的散点图。该类型的图形也称为气泡图。

sz用于指定线性、颜色、数据点标记。‘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,'rp','filled');

结果如下:
MATLAB绘图总结

矢量图

quiver – 箭头图或速度图
quiver(x,y,u,v,LineSpec,‘filled’)
此 MATLAB 函数 在 x 和 y 中每个对应元素对组所指定的坐标处将向量绘制为箭头。矩阵 x、y、u 和 v必须大小相同并包含对应的位置和速度分量。但是,如下节所述,x 和 y还可以是向量。默认情况下,箭头缩放到刚好不重叠,但您可以根据需要将箭头缩放的长一些或短一些。

[x,y]为起点坐标,[u,v]为重点坐标。LinSpec设置线性、颜色。
例:

%已知向量A、B,求A+B,并用矢量图表示。
A = [4,5]; B = [-10,0]; C = A+B;
hold on 
quiver(0,0,A(1),A(2),'-b');
quiver(0,0,B(1),B(2),'--black');
quiver(0,0,C(1),C(2),'-.g');
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

结果如下:
MATLAB绘图总结

双坐标轴

plotyy – 创建具有两个 y 轴的图形
此 MATLAB 函数 绘制 Y1 对 X1 的图,在左侧显示 y 轴标签,并同时绘制 Y2 对 X2 的图,在右侧显示 y 轴标签。
plotyy(X1,Y1,X2,Y2,‘function1’,‘function2’)

例:

clear;clc;
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);
legend('y1=200*exp(-0.05*x).*sin(x)','y2=0.8*exp(-0.5*x).*sin(10*x)');

结果如下:
在这里插入图片描述


三维作图

上文讲到了许多常用的二维图像绘制的函数和方法。下面我们将介绍一些常用的MATLAB三维图像绘制函数。


## plot3和fplot3 >plot3 – 三维点或线图 >plot3(X1,Y1,Z1,LineSpec1,…,Xn,Yn,Zn,LineSpecn) >此 MATLAB 函数 绘制三维空间中的坐标。 要绘制由线段连接的一组坐标,请将 X、Y、Z 指定为相同长度的向量。 要在同一组坐标轴上绘制多组坐标,请将X、Y 或 Z 中的至少一个指定为矩阵,其他指定为向量。

例:绘制空间螺旋线图像,其参数方程为
x = sin ⁡ ( t ) + t cos ⁡ ( t ) ; y = cos ⁡ ( t ) − t sin ⁡ ( t ) ; z = t ; x=\sin(t)+t\cos(t);y=\cos(t)-t\sin(t);z=t; x=sin(t)+tcos(t);y=cos(t)tsin(t);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);

结果如下:
MATLAB绘图总结
其使用与plot很想,也可以使用plot的参数改变空间曲线的线性、颜色、点标识。同时为增加图像的自明性,也可以对图像加上轴标签,标题,图例等。

fplot3 – 三维参数化曲线绘图函数
fplot3(funx,funy,funz,tinterval,LineSpec)
此 MATLAB 函数 在默认区间 [-5,5](对于 t)绘制由 x = funx(t)、y = funy(t) 和 z = funz(t)定义的参数化曲线。

其使用与fplot基本一致。

三维曲面

绘制三维曲面的一些函数

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

各参数的意义:x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定不同高度下的曲面颜色,c省略时,颜色设定为正比于图形的高度。
此外还有一些其他的绘制三维图像的函数

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

热力图

heatmap – 创建热图 h = heatmap(tbl,xvar,yvar,‘ColorVariable’,cvar) 此
MATLAB 函数 基于表 tbl 创建一个热图,并返回 HeatmapChart 对象。xvar 输入参数指示沿 x
轴显示的表变量。yvar输入参数指示沿 y 轴显示的表变量。默认颜色基于计数聚合,这种方法计算每对 x 和 y
值一起出现在表中的总次数。可使用 h在创建热图之后对其进行修改。有关属性列表,请参阅 HeatmapChart 属性。

图形修饰

基本绘图指令

在这里插入图片描述


综上介绍了一些常用的MATLAB作图函数。此外我将介绍另外一种更方便的作图方法,这样你在忘记这些函数的时候,也可以做出需要的结果图像。

在MATLAB界面的“工作区”,找到你要绘制图像的变量,双击进入“变量”界面,全部选中后,点击界面上面的“绘图”这里有MATLAB所有的绘图函数,点击即可绘制对应图像。是不是简单呢
MATLAB绘图总结

笔者的MATLAB版本为R2020a,上述办法并不一定适用于读者的MATLAB。可能需要自己去寻找变量界面。

图形标注

title(图形标题)
xlabel(x轴说明)
ylabel(y轴说明)
text(x,y,文本说明)
legend(1,图2...,参数...)

在plot函数介绍部分已经介绍了这些标注方法的使用。

图形窗口处理

窗口分隔

subplot – 在平铺位置创建坐标区
subplot(m,n,p)
此 MATLAB 函数 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。
MATLAB按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。

窗口视角

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

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

view – 照相机视线
view(az,el)
此 MATLAB 函数 为当前坐标区设置照相机视线的方位角和仰角。
其中az为方向角,el为仰角。系统默认的视点方向角为-37.5°,仰角为30°

色彩处理

  • Colormap
    创建色图矩阵
camp=colormap(parula(5));

parula是内置的色图种类之一。MATLAB所有内置色图如下:
MATLAB绘图总结
指定当前图形使用的色图

	%以peaks为例,先渲染图形,后紧跟色图种类即可
	surf(peaks);
	colormap cool
	colorbar%显示颜色条

结果如下:
MATLAB绘图总结

  • 用shading函数改变染色方式

shading – 设置颜色着色属性
此 MATLAB 函数 每个网格线段和面具有恒定颜色,该颜色由该线段的端点或该面的角边处具有最小索引的颜色值确定。
shading flat —网格片和网格线都是对应颜色
shading faceted —网格片是对应颜色,网格线是黑色
shading interp —网格片内采用颜色插值

例:对同一色图用不同的染色方式

[x,y] = meshgrid(-5:1:5,-5:1:5);
z = x.^2 + y.^2 - 10*cos(2*pi*x) - 10*cos(2*pi*y) + 20;
colormap(cool)
subplot(1,3,1)
surf(x,y,z);
shading flat
subplot(1,3,2)
surf(x,y,z);
shading interp
subplot(1,3,3)
surf(x,y,z)

结果如下:
MATLAB绘图总结

总结

全文讲到了许多MATLAB绘图的常用函数以及图像修饰方法,希望对各位有所帮助。
此外如果忘记了这些函数,也可以在生成初始图像时在figure窗口的插入部分对图像进行标注。或打开属性检查器,进行更详细的属性设置和图像标注。希望大家能多研究这个属性检查器对修改图形有非常大的帮助。
MATLAB绘图总结
第一次写博客,希望得到您的认可,对您有所帮助,鞠躬

本文借鉴了其他很多博主的文章,在此表示对这些大佬的感谢。
https://blog.csdn.net/weixin_45634606/article/details/104422695
https://blog.csdn.net/woaiyyt/article/details/112983849

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148069.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • linux 更改文件读写权限_如何查看自己文件的权限

    linux 更改文件读写权限_如何查看自己文件的权限整理下Linux文件权限相关知识一、查看文件夹或文件的可读可写权限:ls-l文件夹解析“drwxrwxrwx”,这个权限说明一共10位。第一位代表文件类型,有两个数值:“d”和“-”,“d”代表目录,“-”代表非目录。后面9位可以拆分为3组来看,分别对应不同用户,2-4位代表所有者user的权限说明,5-7位代表组群group的权限说明,8-10位代表其他人

  • pycharm的_pycharm conda

    pycharm的_pycharm conda不知道朋友们用过maven没有,使用JAVA编程的人应该有人用过这个有趣的东西,JAVA导包是容易的,然而,懒是没有极限了,所以maven出来了,一个丰满的开发包仓库,不需要你再去哪儿找找找。但是这又算得了什么,我们伟大的Python怎么可能弱,pip包安装管理器就是这样的存在,他使得安装pymodel变得和在linux下安装软件一样容易,只要简单的一句pipinstallsimplename

  • tracker服务器地址(每日更新)_hypixel服务器地址

    tracker服务器地址(每日更新)_hypixel服务器地址https://dns.icoa.cn/tracker/udp://tracker.tiny-vps.com:6969/announcehttps://1337.abcvg.info/announcehttps://tracker.fastdownload.xyz:443/announcehttps://opentracker.xyz:443/announceh…

  • 360认证得力数据恢复软件,摄影爱好者的救星

    360认证得力数据恢复软件,摄影爱好者的救星  我是一位计算机工作者,身边许多朋友也经常向我咨询一些电脑方面的问题,最为突出的问题就是如何恢复硬盘数据和sd卡,U盘数据,我用过许多软件,但从没有一款软件像得力数据恢复软件这么优秀,这话一点都不假。  第一,无毒,众所周知,一款软件好坏,无毒是最大的招牌,它是经过360,金山毒霸,百度杀毒,卡巴斯基,电脑管家,诺顿杀毒等主流杀毒软件认证的。干净实用。  第二,下载方便,可以经过该地址:h…

  • 大整数乘法python3实现

    大整数乘法python3实现由于python具有无限精度的int类型,所以用python实现大整数乘法是没意义的,但是思想是一样的。利用的规律是:第一个数的第i位和第二个数大第j位相乘,一定累加到结果的第i+j位上,这里是从0位置开始算的。代码如下:importsysdeflist2str(li): whileli[0]==0: delli[0] res=” foriinli: res+

  • <四> H264解码输出yuv文件

    <四> H264解码输出yuv文件现在来写下s5pv210的h264解码,这一章有些部分我理解的不是很透彻,只能写个大概了。希望看到的人能给出些意见,有些地方写错的还望指正出来!  解码过程与编码过程类似,编码过程是先初始化编码器,然后从编码器输出buf中读出h264文件头数据,写入输出文件,然后开始不断地将一帧帧NV12格式的图像写入到编码器的输入buf,启动编码,从编码器输出buf中将h264视频数据写入到输出文件。解

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号