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

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

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

(0)
上一篇 2022年6月29日 下午3:16
下一篇 2022年6月29日 下午3:16


相关推荐

  • Itext图层合并/分离

    Itext图层合并/分离技术要点 Itext 图层合并 图层分离合并 分离 最后技术要点 Itext 图层合并 图层分离合并 思路 1 图层来的是单独文件 需要使用 pdfwriter 写入 PdfLayerfoot newPdfLayer layerName1 writer dcb Begin

    2026年3月19日
    2
  • 将本地的项目导入到github仓库总结lxw

    将本地的项目导入到github仓库总结lxw

    2021年10月10日
    48
  • OSD实现原理介绍

    OSD实现原理介绍OSD 的主要实现方法和类型 nbsp nbsp nbsp 目前有两种主要的 OSD 实现方法 外部 OSD 发生器与视频处理器间的叠加合成 视频处理器内部支持 OSD 直接在视频缓存内部叠加 OSD 信息 nbsp nbsp nbsp 外部 OSD 发生器与视频处理器间的叠加合成的实现原理是 由一个 MCU 内建的字符发生器及显示缓存 利用快速消隐 Fast Blank 信号切换电视的画面和 OSD 显示内容 使 OSD 的字符等内容叠加在最终的显示画

    2026年3月19日
    3
  • 【C语言】结构体、枚举、联合体

    【C语言】结构体、枚举、联合体结构体 枚举 联合体的详细使用方法

    2026年3月19日
    2
  • 平庸前端码农之蜕变 — AST

    平庸前端码农之蜕变 — AST前言首先,先说明下该文章是译文,原文出自《ASTforJavaScriptdevelopers》。很少花时间特地翻译一篇文章,咬文嚼字是件很累的事情,实在是这篇写的太棒了,所以忍不住想和大家一起分享。该译文出自我的博客:github.com/CodeLittleP…,我的博客会不定时更新各种类型文章,希望大家支持。OK,我们直接进入正题。为什么要谈AST(抽象语法树)?如果你查看目…

    2022年7月21日
    15
  • pycharm3.7激活码破解方法

    pycharm3.7激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    72

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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