利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。
参考书目:《MATLAB基础教程 (第三版) (薛山)》
之前的章节都是基础的数据运算用法,对于功课来说更加重要的内容是建模、绘图、观察数据趋势,接下来我会结合自己的使用经验,来为大家分享绘图、建模使用的小技巧。
特殊图形绘制(1)
1 条形图和面积图
MATLAB中主要有四个函数用于绘制条形图:
函数 | 说明 | 函数 | 说明 |
---|---|---|---|
bar | 绘制纵向条形图 | bar3 | 绘制三维纵向条形图 |
barh | 绘制横向条形图 | bar3h | 绘制三维横向条形图 |
1.1 bar和barh
函数bar和barh都是用于绘制二维条形图,分别绘制纵向和横向图形。这两个函数的用法相同,所以以bar函数举例来说明两个函数的用法。
这是官方文件对于bar函数的用法描述:
举例:
A = ceil(rand(5,3)*10);
x = [1,3,6,7,5];
subplot(2,3,1),bar(A),title('bar');
subplot(2,3,2),bar(x,A),title('specify the x label');
subplot(2,3,3),bar(A,1.5),title('width=1.5');
subplot(2,3,4),bar(A,'stacked'),title('stacked');
subplot(2,3,5),barh(A),title('barh: default' );
subplot(2,3,6),barh(A,'stacked'),title('barh: stacked');
1.2 bar3和bar3h
bar3和bar3h用于绘制三维柱状图,分别绘制纵向图形和横向图形。这两个函数的用法相同,并且与函数 bar 和 barh 的用法类似,读者可以和 bar函数和 barh 函数进行比较学习。下面以bar3 函数为例介绍这两个函数的用法。bar3 函数的官方解释用法如下:
举例:
A = randi(20,[6,3],"double")
subplot(2,2,1),bar3(A,'detached'),title('detached');
subplot(2,2,2),bar3(A,'grouped'),title('grouped');
subplot(2,2,3),bar3(A,'stacked'),title('stacked');
subplot(2,2,4),bar3h(A,'detached'),title('detached');
1.3 area
上面介绍了二维条形图和三维条形图的绘制,下面介绍另一种图形:填充图。填充图绘制由向量构成的曲线,或者当输入参数为矩阵时,绘制矩阵的每一列为一条曲线,并填充曲线间的区域。填充图可以直观显示向量的每个元素,或显示矩阵的每一列对总和的贡献大小。填充图由函数area 绘制,官方说明的用法如下:
举例:
A = randi(20,[6,3],"double");
subplot(1,3,1),area(A),title('area plot of A');
subplot(1,3,2),area(A,3),title(basevalue = 3');
subplot(1,3,3),area([1 3 6 8 9 1],A),title('x=[1 3 6 8 9 1]');
2 饼状图
饼状图是一种统计图形,用于显示每个元素占总体的百分比,最常见的有磁盘容量统计图。在 MATLAB中,函数pie和 pie3 分别用于绘制二维和三维饼状图。这两个函数的用法基本相同,下面以pie函数为例介绍饼状图的绘制。函数pie的的官方说明用法如下:
例题: 磁盘的可用空间为13.9GB,已用空间为18.1GB,绘制磁盘空间的饼状图并标记为“可用空间”和“已用空间”。
X = [13.9,18.1];
pie(X,{'可用空间','已用空间'})
pie3(X,{'可用空间','已用空间'})
3 离散数据图
以下是用于绘制离散数据的函数:
函数 | 功能 |
stem | 绘制二维离散图形 |
stem3 | 绘制三维离散图形 |
stairs | 绘制二维 |
举例:
x=[0:10:360]*pi/180;
y=sin(x);
subplot(2,2,1),plot(x,y),title('a');
subplot(2,2,2),stem(x,y),title('b');
subplot(2,2,3),stairs(x,y),title('c');
t=0:.1:10;
s=0.1+i;
y= exp(-s*t);
subplot(2,2,4),stem3(real(y),imag(y),t),title('d');