【MATLAB】MATLAB 可视化之 向量场绘图

翻译自 MATLAB 官方文档

  • feather : 羽毛图,绘制速度向量
  • quiver : 箭头图
  • compass : 罗盘图
  • quiver3 : 3D 箭头图
  • streamslice : 在切片平面中绘制流线图
  • streamline : 根据二维或三维向量数据绘制流线图

feather : 羽毛图,绘制速度向量

theta = -pi/2:pi/16:pi/2;
r = 2*ones(size(theta));

[u,v] = pol2cart(theta,r);
feather(u,v)

创建显示 theta 的方向的羽毛图。由于 feather 使用笛卡尔坐标,使用 pol2cart 将 theta 和 r 转换为笛卡尔坐标。

quiver : 箭头图

  • 绘制速度矢量
[x,y] = meshgrid(0:0.2:2,0:0.2:2);
u = cos(x).*y;
v = sin(x).*y;

figure
quiver(x,y,u,v)

【MATLAB】MATLAB 可视化之 向量场绘图_第1张图片

  • 绘制梯度矢量
    绘制函数 z=xex2y2 z = x e − x 2 − y 2 的梯度
[X,Y] = meshgrid(-2:.2:2);
Z = X.*exp(-X.^2 - Y.^2);
[DX,DY] = gradient(Z,.2,.2);

figure
contour(X,Y,Z)
hold on
quiver(X,Y,DX,DY)
hold off

compass : 罗盘图

rng(0,'twister') % initialize random number generator
M = randn(20,20);
Z = eig(M);

figure
compass(Z)

【MATLAB】MATLAB 可视化之 向量场绘图_第2张图片

quiver3 : 3D 箭头图

绘制函数 z=xex2y2 z = x e − x 2 − y 2 的曲面的法线图

[X,Y] = meshgrid(-2:0.25:2,-1:0.2:1);
Z = X.* exp(-X.^2 - Y.^2);
[U,V,W] = surfnorm(X,Y,Z);

figure
quiver3(X,Y,Z,U,V,W,0.5)

hold on
surf(X,Y,Z)
view(-35,45)
axis([-2 2 -1 1 -.6 .6])
hold off

streamslice : 在切片平面中绘制流线图

加载 wind 数据集。在 z = 5 的位置绘制一个流切片。

load wind

figure
streamslice(x,y,z,u,v,w,[],[],[5])
axis tight

【MATLAB】MATLAB 可视化之 向量场绘图_第3张图片

streamline : 根据二维或三维向量数据绘制流线图

[x,y] = meshgrid(0:0.1:1,0:0.1:1);
u = x;
v = -y;

figure
quiver(x,y,u,v)

startx = 0.1:0.1:1;
starty = ones(size(startx));
streamline(x,y,u,v,startx,starty)

你可能感兴趣的:(MATLAB)