绘图函数知多少
众所周知,matlab不仅擅长处理与矩阵相关的数值运算,在科学可视化方面,它同样有着很深的积淀。它提供的众多功能丰富的函数,可以很好地满足我们需要用到图形来展示数值信息的各种各样的需求。
MATLAB具有二维、三维乃至四维的图形表现能力。它可以从线型、边界色、色彩、渲染、光线、视角等方面把数据的特征表现出来。
MATLAB的图视化功能是建立在一组图形对象的基础之上。图形对象的核心是图形的句柄(Granhics Handle)操作。
绘图指令分两个层次:
1、底层(Low-level)绘图指令:直接对句柄进行操作。
底层绘图指令控制和表现数据图形的能力比高层绘图指令强。但是灵活多变,较难掌握。
2、高层(High-level)绘图指令:建立在底层指令之上。
高层绘图指令较为常用,且简单明了容易掌握。
常用的一些底层指令如下所示:
gcf:返回当前窗口对象的句柄(Get CurrentFigure)
gca:返回当前轴对象的句柄(Get Current Axes)
gco:返回当前图形对象的句柄(Get CurrentObject)
get:获得句柄图形对象的属性和返回某些对象的句柄值
set:改变图形对象的属性
delete(h):删除句柄为h的图形对象
本文主要介绍一些高层绘图指令的相关函数:
01
matlab能绘制的图形类型
0 2
绘图的一般步骤
x=0:0.01:2*pi;
y=cos(x);
plot(x,y);
xlabel('x轴'); % x轴注解
ylabel('y轴'); % y轴注解
title('余弦函数'); % 图形标题
legend('y = cos(x)'); % 图形注解
gtext('y = cos(x)'); % 图形注解 ,用鼠标定位注解位置
grid on; % 显示格线
03
关于图形坐标轴的设置
04
图形的修饰符号——线型、颜色和标记符
05
同一图形窗口绘制不同的子图
在同一个画面上建立几个坐标系, 用subplot(m,n,p)命令;
把一个画面分成m×n个图形区域, p代表当前的区域号,在每个区域中分别画一个图。
x=linspace(0,2*pi,30);y=sin(x); z=cos(x);
u=2*sin(x).*cos(x);v=sin(x)./cos(x);
subplot(2,2,1),plot(x,y),axis([02*pi -1 1]),title('sin(x)')
subplot(2,2,2),plot(x,z),axis([02*pi -1 1]),title('cos(x)')
subplot(2,2,3),plot(x,u),axis([02*pi -1 1]),title('2sin(x)cos(x)')
subplot(2,2,4),plot(x,v),axis([02*pi -20 20]),title('sin(x)/cos(x)')
06
三维图的各种样式
Matlab绘制三维图,最常用的是surf、mesh这两个函数及其衍生函数。
x=linspace(-2,2, 25); % 在x轴上取25点
y=linspace(-2, 2, 25); % 在y轴上取25点
[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵
zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
surf(xx, yy, zz); % 画出立体曲面图
以peaks函数为例,以各种不同方法进行绘图
1、meshz可将曲面加上围裙:
[x,y,z]=peaks;
meshz(x,y,z);
axis([-inf inf -inf inf -inf inf]);
2、waterfall可在x方向或y方向产生水流效果:
[x,y,z]=peaks;
waterfall(x,y,z);
axis([-inf inf -inf inf -inf inf]);
3、y方向的水流效果:
[x,y,z]=peaks;
waterfall(x',y',z');
axis([-inf inf -inf inf -inf inf]);
4、meshc可以同时画出网状图与等高线:
[x,y,z]=peaks;
meshc(x,y,z);
axis([-inf inf -inf inf -inf inf]);
5、surfc同时画出曲面图与等高线:
[x,y,z]=peaks;
surfc(x,y,z);
axis([-inf inf -inf inf -inf inf]);
6、对比meshc、meshz、surfc、surfl这四个函数
[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)
07
其他图形的绘制
举一个例子,使用同一色图,以不同着色方式绘制圆锥体。
[x,y,z] =cylinder(pi:-pi/5:0,10)
colormap(lines)
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)
作者:极值学院占学长