Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

quiver3

三维箭头图或向量图

  • 3-D Cartesian grid with plotted arrows

说明

示例

quiver3(X,Y,Z,U,V,W) 在由 XYZ 指定的笛卡尔坐标处,绘制具有定向分量 UVW 的箭头。例如,第一个箭头源于点 X(1)Y(1)Z(1),根据 U(1) 在 x 轴方向延伸,根据 V(1) 在 y 轴方向延伸,并根据 W(1) 在 z 轴方向延伸。默认情况下,quiver3 函数缩放箭头长度,使其不重叠。

quiver3(Z,U,V,W) 在沿曲面 Z 的等距点上绘制箭头,箭头的定向分量由 UVW 指定。

  • 如果 Z 是向量,则箭头的 x 坐标范围是从 1 到 Z 中的元素数,并且 y 坐标均为 1。

  • 如果 Z 是矩阵,则箭头的 x 坐标范围是从 1 到 Z 中的列数,而 y 坐标范围是从 1 到 Z 中的行数。

示例

quiver3(___,scale) 调整箭头的长度:

  • scale 为正数时,quiver3 函数会自动调整箭头的长度,使其不重叠,然后将箭头长度拉伸 scale 倍。例如,scale 为 2 会使箭头长度加倍,scale 为 0.5 会使箭头长度减半。

  • scale'off'0 时,如 quiver3(X,Y,Z,U,V,W,'off'),则禁用自动缩放。

示例

quiver3(___,LineSpec) 设置线型、标记和颜色。标记出现在由 XYZ 指定的点上。如果使用 LineSpec 指定标记,则 quiver3 不显示箭尖。要指定标记并显示箭尖,请改为设置 Marker 属性。

quiver3(___,LineSpec,'filled') 填充由 LineSpec 指定的标记。

quiver3(___,Name,Value) 使用一个或多个名称-值对组参数指定箭头图属性。有关属性列表,请参阅 Quiver 属性。在所有其他输入参数之后指定名称-值对组参数。名称-值对组参数应用于箭头图中的所有箭头。

示例

quiver3(ax,___)ax 指定的坐标区中而不是当前坐标区 (gca) 中创建箭头图。参数 ax 可以置于前面的语法中的任何输入参数组合之前。

示例

q = quiver3(___) 返回 Quiver 对象。此对象对于在创建箭头图后控制其属性非常有用。

示例

全部折叠

加载表示北美上空气流的采样数据。对于此示例,选择该数据的子集。

load wind
X = x(5:10,20:25,6:10);
Y = y(5:10,20:25,6:10);
Z = z(5:10,20:25,6:10);
U = u(5:10,20:25,6:10);
V = v(5:10,20:25,6:10);
W = w(5:10,20:25,6:10);

创建所选子集的三维箭头图。向量 XYZ 表示每个箭头的起始点位置,UVW 表示每个箭头的定向分量。默认情况下,quiver3 函数会缩短箭头,使其不重叠。调用 axis equal 以沿每个轴使用相等的数据单位长度。这会使箭头指向正确的方向。

quiver3(X,Y,Z,U,V,W)
axis equal

Figure contains an axes. The axes contains an object of type quiver.

默认情况下,quiver3 函数会缩短箭头长度,使其不重叠。要禁用自动缩放,使箭头长度完全由 UVW 确定,请将 scale 参数设置为 0

例如,首先返回具有 10×10 个面的单位球体的 xyz 坐标。使用 surfnorm 函数计算其曲面图法线的定向分量。然后,创建一个没有自动缩放的三维箭头图。

[X,Y,Z] = sphere(10);
[U,V,W] = surfnorm(X,Y,Z);
quiver3(X,Y,Z,U,V,W,0)
axis equal

Figure contains an axes. The axes contains an object of type quiver.

为了进行比较,再创建一个具有自动缩放的图。请注意,箭头较短且不重叠。

figure
quiver3(X,Y,Z,U,V,W)
axis equal

Figure contains an axes. The axes contains an object of type quiver.

绘制垂直于由函数 z=xe-x2-y2 定义的曲面的向量。使用 quiver3 函数绘制向量,使用 surf 函数绘制曲面。

首先,创建一个由等间距的 xy 值组成的网格。使用它们来计算 z。然后,求法向量。

[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);

将向量显示为一个三维箭头图。然后,在相同的坐标区中显示曲面。通过调用 axis equal,调整显示,使向量显示为垂直于曲面。

quiver3(X,Y,Z,U,V,W)
hold on
surf(X,Y,Z)
axis equal

Figure contains an axes. The axes contains 2 objects of type quiver, surface.

创建一个三维箭头图,并指定箭头的颜色。

例如,首先返回曲面的 xyz 坐标。使用 surfnorm 函数计算其曲面图法线的定向分量。

[X,Y] = meshgrid(-pi/2:pi/8:pi/2,-pi/2:pi/8:pi/2);
Z = sin(X) + cos(Y);
[U,V,W] = surfnorm(Z);

然后,创建一个箭头为红色的三维箭头图。

quiver3(X,Y,Z,U,V,W,'r')
axis equal

Figure contains an axes. The axes contains an object of type quiver.

从 R2019b 开始,您可以使用 tiledlayoutnexttile 函数显示分块图。调用 tiledlayout 函数以创建 1×2 分块图布局。调用 nexttile 函数创建一个坐标区对象,并将该对象返回为 ax1。通过将 ax1 传递给 quiver3 函数来创建左图。通过将坐标区传递给 title 函数为绘图添加标题。重复上述过程以创建右图。

[X,Y] = meshgrid(-2:0.25:0,-2:0.25:0);
Z1 = -0.5*(X.^2 + Y.^2);
[U1,V1,W1] = surfnorm(Z1);
Z2 = -X.*Y;
[U2,V2,W2] = surfnorm(Z2);

tiledlayout(1,2)

% Left plot
ax1 = nexttile;
quiver3(ax1,X,Y,Z1,U1,V1,W1)
axis equal
title(ax1,'Left Plot')

% Right plot
ax2 = nexttile;
quiver3(ax2,X,Y,Z2,U2,V2,W2)
axis equal
title(ax2,'Right Plot')

Figure contains 2 axes. Axes 1 with title Left Plot contains an object of type quiver. Axes 2 with title Right Plot contains an object of type quiver.

创建一个三维箭头图,并返回箭头图对象。然后,删除箭尖并在每个箭尖的起始点添加点标记。

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

q = quiver3(X,Y,Z,U,V,W);
axis equal
q.ShowArrowHead = 'off';
q.Marker = '.';

Figure contains an axes. The axes contains an object of type quiver.

输入参数

全部折叠

箭头起始点的 x 坐标,指定为标量、向量或矩阵。

如果 XY 是向量,而 ZUVW 是矩阵,则 quiver3XY 扩展为矩阵。在这种情况下,size(Z)size(U)size(V)size(W) 必须等于 [length(Y) length(X)]。有关将向量扩展为矩阵的详细信息,请参阅 meshgrid

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

箭头起始点的 y 坐标,指定为标量、向量或矩阵。

如果 XY 是向量,而 ZUVW 是矩阵,则 quiver3XY 扩展为矩阵。在这种情况下,size(Z)size(U)size(V)size(W) 必须等于 [length(Y) length(X)]。有关将向量扩展为矩阵的详细信息,请参阅 meshgrid

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

箭头起始点的 z 坐标,指定为标量、向量或矩阵。

如果 XY 是向量,而 Z 是矩阵,则 size(Z) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

箭头的 x 分量,指定为标量、向量或矩阵。

如果 XY 是向量,而 U 是矩阵,则 size(U) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

箭头的 y 分量,指定为标量、向量或矩阵。

如果 XY 是向量,而 V 是矩阵,则 size(V) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

箭头的 z 分量,指定为标量、向量或矩阵。

如果 XY 是向量,而 W 是矩阵,则 size(W) 必须等于 [length(Y) length(X)]

如果 XY 是矩阵,则 XYZUVW 的大小必须相同。

线型、标记和颜色,指定为包含符号的字符向量或字符串。符号可以按任意顺序显示。您不需要同时指定所有三个特征(线型、标记和颜色)。

如果使用 LineSpec 指定标记,则 quiver3 不显示箭尖。要指定标记并显示箭尖,请改为设置 Marker 属性。

示例: '--or' 是带有圆形标记的红色虚线

线型说明
-实线
--虚线
:点线
-.点划线
标记说明
'o'圆圈
'+'加号
'*'星号
'.'
'x'叉号
'_'水平线条
'|'垂直线条
's'方形
'd'菱形
'^'上三角
'v'下三角
'>'右三角
'<'左三角
'p'五角形
'h'六角形
颜色说明

y

黄色

m

品红色

c

青蓝色

r

红色

g

绿色

b

蓝色

w

白色

k

黑色

箭头缩放因子,指定为正数或 'off'。默认情况下,quiver3 函数会自动缩放箭头,使其不重叠。quiver3 函数在自动缩放箭头后应用缩放因子。

指定 scale 等效于设置箭头图对象的 AutoScaleFactor 属性。例如,将 scale 指定为 2 会使箭头的长度加倍。将 scale 指定为 0.5 会使箭头的长度减半。

要禁用自动缩放,请将 scale 指定为 'off'0。当您将这两个值中的任意一个指定为 0 时,箭头图对象的 AutoScale 属性设置为 'off',箭头的长度完全由 UVW 确定。

目标坐标区,指定为 Axes 对象。如果未指定坐标区,则 quiver3 函数使用当前坐标区。

名称-值对组参数

指定可选的、以逗号分隔的 Name,Value 对组参数。Name 为参数名称,Value 为对应的值。Name 必须放在引号中。您可采用任意顺序指定多个名称-值对组参数,如 Name1,Value1,...,NameN,ValueN 所示。

示例: 'Color','r','LineWidth','1

注意

此处所列的属性只是一部分。有关完整列表,请参阅 Quiver 属性

箭杆宽度,指定为大于 0 的数值标量(以磅为单位)。一磅等于 1/72 英寸。默认值为 0.5 磅。

示例: 0.75

箭尖显示,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示带箭尖的向量。

  • 'off' - 显示不带箭尖的向量。

自动缩放箭头长度,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 缩放箭头长度以便可容纳在网格定义的坐标数据和缩放箭头内,这样它们不会发生重叠。然后,quiverquiver3 函数将 AutoScaleFactor 应用于箭头长度。

  • 'off' - 不缩放箭头长度。

缩放因子,指定为标量。值 2 使箭头的长度加倍。值 0.5 使箭头的长度减半。

仅当 AutoScale 属性设置为 'on' 时,此属性才起作用。

示例: 2

提示

要使用柱坐标或球面坐标创建一个三维箭头图,请首先使用 pol2cartsph2cart 函数将它们转换为笛卡尔坐标。

扩展功能

在 R2006a 之前推出