MATLAB学习笔记(四)

学习MATLAB的绘图功能

具体内容有:
1.绘制二维图形,并对二维图形进行标注
2.调整图形
3.子图窗口的划分
4.绘制三维图形
5.使用交互绘图工具

1.二维图形

1)基本图形的绘制

>> x = [0:2:18];
>> y = [0,0.33,4.13,6.29,6.85,11.19,13.19,13.96,16.33,18.17];
>>plot(x,y),title('实验1'),xlabel('时间'),ylabel('距离'),grid

以上代码可以在一行上使用一起执行也可以分开执行,当使用逗号间隔时表示要一起执行,各函数分别表示: title(标题),xlabel(时间),ylabel(距离),grid(添加栅格)
代码执行的效果如下图:这里写图片描述

2)创建多个图形
MATLAB可以随时生成和显示图形窗口,但生成的第二幅图形会覆盖掉第一幅图形。解决方法有两个:一是用pause命令暂停程序,二是用figure创建新的图形。

>> figure(2)

可以创建一个新的空白绘图窗口,如果不指定括号中的编号,则MATLAB会自动产生图形编号
这里写图片描述

基本绘图功能函数总结如下:

函数功能
plot创建一个x-y坐标图
title添加标题
xlabel添加x轴标注
ylabel添加y轴标注
gride添加栅格
pause暂停程序观察图形
figure定义当前图形
hold保持图形

3)绘制多条曲线

hold on方法可以用于绘制多条曲线,用于保持图形

>> x = 0:pi/100:2*pi;
>> y1 = cos(x*4);
>> plot(x,y1)
>> y2 = sin(x);
>> hold on;
>> plot(x,y2)

绘制图像后结果如下:
这里写图片描述

另一种方法可以使用

>> plot(x,y1,x,y2)

也可以绘制两条曲线

颜色问题:MATLAB中,绘图命令画出的第一条曲线以蓝色为默认颜色,使用hold on方法每条线是由不同的绘图命令完成的,分两次完成绘制,因此两条曲线的颜色相同。plot(x,y1,x,y2)语句是一次画出两个图形,为了区分第二个图形的默认颜色是绿色。

example:

>> x = 0:pi/100:2*pi;
>> y1 = cos(x) * 2;
>> y2 = cos(x) * 3;
>> y3 = cos(x) * 4;
>> y4 = cos(x) * 5;
>> z = [y1,y2,y3,y4];
>> plot(x,y1,x,y2,x,y3,x,y4)

这里写图片描述

4)peaks函数
函数peaks是MATLAB中的双变量正态分布的实体模型函数,用于演示图形功能。若函数peaks只有一个变量n,则会产生一个n*n的矩阵,函数peaks创建的矩阵可以作为函数plot的自变量。

>> plot(peaks(100)) 

这里写图片描述

5)单复数数组绘图
如果plot的输入是一个复数数组,则MATLAB以复数的实部为x轴,虚部为y轴进行绘图

>> A = [0+0i,1+2i,2+5i,3+4i];
>> plot(A),title('复数绘图'),xlabel('实部'),ylabel('虚部')

这里写图片描述

6)双复数数组绘图
如果plot的输入参数是两个复数数组,则忽略复数的虚部进行绘图。以第一个数组的实部作为x轴坐标,以第二个数组的虚部作为y轴坐标,绘制曲线。

>> A
A =
   0.0000 + 0.0000i   1.0000 + 2.0000i   2.0000 + 5.0000i   3.0000 + 4.0000i
>> B = sin(A)
B =
   0.0000 + 0.0000i   3.1658 + 1.9596i  67.4789 -30.8794i   3.8537 -27.0168i
>> plot(A,B),title('复数绘图'),xlabel('第一个数组的实部'),ylabel('第二个数组的实部')
警告: 复数 X 和/或 Y 参数的虚部已忽略 

这里写图片描述

7)线条,颜色和标记的风格

help plot
doc plot

可以获取线条颜色和标记风格的详细信息,风格由中三部分组成

线条类型点类型颜色
-实线· 点线y 黄色
:点o 圈线r 红色
-. 点划线× x线c 青色
– 虚线+字线m 洋红色
* 星形线g 绿色
s 方形b 蓝色
d 菱形w 白色
p 五角星b 蓝色
h 六角星k 黑色

example:

plot(x,y,':ok')  % 点,圆圈,黑色
plot(x,y,'--xr')  % 虚线,x形状,红色
plot(x,y,'-b')  % 实线,默认点类型,蓝色

8)坐标轴定标和图例标注

函数用法
axis如果没有输入参数就将坐标轴固定在当前配置状态,再次输入axis会恢复对坐标轴的控制
axis(v)axis的输入参数是一个四维矢量,分别定义了x轴和y轴的最小值和最大值,格式为[xmin,xmax,ymin,ymax]
legend(‘string1’,’string2’,etc)添加图例,对不同曲线加以说明
text(x_coordinate,y_coordinate,’string’)在图形的不同位置添加文本框,输入参数为文本框的位置和内容
gtext(‘string’)添加文本框,框的位置由鼠标操作确定,该命令与函数text类似

example:
将x轴限定在-2到+3的范围内,将y轴限定在0到10范围内

axis([-2,3,0,10]) 

2.子图

使用subplot(m,n,p)命令可以把图形窗口分成m行n列的多个区域,并在第p个小窗口绘制下一个图形
example:

>> x = 0:pi/20:2*pi;
>> subplot(2,1,1)   % 在两行一列的上半部分绘图
>> plot(x,sin(x))
>> subplot(2,1,2)   % 在两行一列的下半部分绘图   
>> plot(x,sin(2*x))

分为上下两部分

3.其他类型的二维图形

1)极坐标图
使用函数polar(theta,r)

>> x = 0:pi/100:pi;
>> y = sin(x);
>> polar(x,y)

这里写图片描述

2)对数图

>> x = 0:0.5:50;
>> y = 5 * power(x,2);
>> subplot(2,2,1)
>> plot(x,y),title('plot图')
>> 
>> subplot(2,2,2)
>> semilogx(x,y),title('semilogx图')
>> 
>> subplot(2,2,3)
>> semilogy(x,y),title('semilogy图')
>> 
>> subplot(2,2,4)
>> loglog(x,x),title('loglog图')

这里写图片描述

3)条形图和饼图
条形图,柱状图和饼图是三种最常见的图形表现方式

函数用法
bar(x)若x为矢量则绘制垂直条形图,若为二维矩阵则按行分组显示
barh(x)若x为矢量则绘制水平条形图,若为二维矩阵则按行分组显示
bar3(x)绘制三维条形图
bar3h(x)绘制三维水平条形图
pie(x)绘制饼图。矩阵x的元素用饼图中的一部分表示
pie3(x)绘制三维饼图。矩阵x中的元素用饼图的一部分表示
hist(x)绘制柱状图

example:

>> x = [1,2,5,4,8];
>> y = [x;1:5];
>> subplot(2,2,1),bar(x),title('垂直条形图')
>> subplot(2,2,2),bar(y),title('两组显示的垂直条形图')
>> subplot(2,2,3),bar3(y),title('三维条形图')
>> subplot(2,2,4),pie(x),title('饼图')
>> 

这里写图片描述

4)柱状图
柱状图是一种用于数据统计分析的图形,通过它可以显示出数据的分布情况

>> x = [100,95,74,87,22,78,34,35,93,88,86,42,55,48];
>> hist(x)

这里写图片描述
数据被默认分成10份,如果原始数据量很大,可以分成更多份

hist(x,25)

这里写图片描述

如果把函数hist赋值给一个变量,那么图中每个条形图中的数据就会存储在矩阵A中:

>> A = hist(x)
A =
     1     2     1     1     1     0     1     1     3     3

4)双y轴图
有时需要把两个x-y坐标图输入到同一坐标图中,在这种情况下,如果两个坐标轴y轴的度量相差很多的话会会按照较大的度量来确定坐标轴的度量,这样度量较小的部分变化难以看出,如下所示:
首先在第一部分采用普通方式绘制二维图形:

>> x = 0:pi/20:2*pi;
>> y1 = sin(x);
>> y2 = exp(x);
>> subplot(2,1,1)
>> plot(x,y1,x,y2)

第二部分使用plotyy函数,可以在一张图中使用两个不同的y轴坐标作图,左边是第一组数据的y轴坐标,右边是第二组数据的y轴坐标

>> subplot(2,1,2)
>> plotyy(x,y1,x,y2)

这里写图片描述

函数plotyy可以选择不同的绘图类型,下面的代码采用对数坐标轴

>> subplot(2,1,1)
>> plotyy(x,y1,x,y2,'semilogy')
>> subplot(2,1,2)
>> plotyy(x,y1,x,y2,'semilogx')

这里写图片描述

4.三维绘图

三维绘图的MATLAB命令如下:

函数用法
plot3(x,y,z)绘制三维线图
come3(x,y,z)绘制具有动画效果的三维线图
mesh(z)或mesh(x,y,z)绘制网格曲面图
surf(z)或surf(x,y,z)绘制表面图
Shading interp渲染曲面图中的颜色
Shading flat用纯色给每个网格着色
colormap(map_name)按用户设定的颜色绘制曲面图
contour(z)或contour(x,y,z)绘制三维等高图
surfc(z)或surfc(x,y,z)同时绘制曲面图和等高图
pcolor(z)或pcolor(x,y,z)绘制伪色图

1)三维线图
plot3是绘制三维线图的基本函数,通过x,y,z三个输入矢量在三维空间内绘制三维线图

>> x = linspace(0,10*pi,1000);
>> y = cos(x);
>> z = sin(x);
>> plot3(x,y,z)
>> grid
>> xlabel('角度'),ylabel('cos(x)'),zlabel('sin(x)'),title('plot3绘图') 

这里写图片描述

2)mesh曲面图
注意:若函数自变量是一个m*n矩阵,则矩阵中元素的数值为z轴坐标,元素的位置分别是x轴坐标和y轴坐标(要注意理解)

>> z = [1,2,3,4,5,6,7,8,9,10;
        2,4,6,8,10,12,14,16,18,20;
        3,4,5,6,7,8,9,10,11,12];
>> mesh(z),xlabel('x-axis'),ylabel('y-axis'),zlabel('z-axis')

这里写图片描述

mesh可以有三个自变量,mesh(x,y,z)。矢量x的元素个数必须和矩阵z的列数相同,矢量y的元素个数必须和矩阵z的行数相同(要注意理解)

>> x = linspace(1,50,10)
x =
    1.0000    6.4444   11.8889   17.3333   22.7778   28.2222   33.6667   39.1111   44.5556   50.0000
>> y = linspace(500,1000,3)
y =
         500         750        1000
>> z = [1,2,3,4,5,6,7,8,9,10;
        2,4,6,8,10,12,14,16,18,20;
        3,4,5,6,7,8,9,10,11,12]
z =
     1     2     3     4     5     6     7     8     9    10
     2     4     6     8    10    12    14    16    18    20
     3     4     5     6     7     8     9    10    11    12
>> mesh(x,y,z)

这里写图片描述

3) surf曲面图
surf和mesh的不同之处在于,surf图绘制的是着色的三维曲面图,其颜色由z决定。
surf图的输入参数和mesh相同可以有一个输入变量也可以有三个输入变量。surf(z)以z的行列作为x轴和y轴的坐标。

使用shading命令可以控制图形的阴影效果

shading interp

这里写图片描述

使用colormap命令可以控制图形的颜色

>> mesh(x,y,z),colormap(summer)

这里写图片描述

4) 等高图

>> x = [-1:0.2:2];
>> y = x;
>> [X,Y] = meshgrid(x,y);   % 采样点
>> Z = X .* exp(-X.^2 - Y .^2);
>> subplot(2,2,1),mesh(X,Y,Z)
>> subplot(2,2,2),surf(X,Y,Z)
>> subplot(2,2,3),contour(X,Y,Z)
>> subplot(2,2,4),surfc(X,Y,Z)

这里写图片描述

5) 伪色图
伪色图与等高图类似,不同之处在于伪色图是用带栅格的二维阴影图代替等高图中的轮廓线。根据MATLAB中实体模型函数peaks中的输入参数矩阵x,y,z做出伪色图,输出结果是一个类似山峰的曲面:

>> [x,y,z] = peaks;
>> subplot(2,2,1),pcolor(x,y,z)
>> 
>> subplot(2,2,2),pcolor(x,y,z),shading interp
>> 
>> subplot(2,2,3),pcolor(x,y,z),shading interp,hold on,contour(x,y,z,20,'k')  % 其中20代表绘制20条等高线,k代表黑色
>> 
>> subplot(2,2,4),contour(x,y,z)

这里写图片描述

5.图形窗口的简单操作

自己尝试一下就好

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值