MATLAB中quiver函数用法

目录

语法

说明

示例

创建箭头图

禁用自动缩放

绘制梯度和等高线

指定箭头颜色

指定箭头图的坐标区

在创建后修改箭头图


        quiver函数的功能是绘制箭头图或向量图。

语法

quiver(X,Y,U,V)
quiver(U,V)
quiver(___,scale)
quiver(___,LineSpec)
quiver(___,LineSpec,'filled')
quiver(___,Name,Value)
quiver(ax,___)
q = quiver(___)

说明

quiver(X,Y,U,V) 在由 X 和 Y 指定的笛卡尔坐标上绘制具有定向分量 U 和 V 的箭头。例如,第一个箭头源于点 X(1) 和 Y(1),按 U(1) 水平延伸,按 V(1) 垂直延伸。默认情况下,quiver 函数缩放箭头长度,使其不重叠。

quiver(U,V) 在等距点上绘制箭头,箭头的定向分量由 U 和 V 指定。

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

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

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

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

  • 当 scale 为 'off' 或 0 时,如 quiver(X,Y,U,V,'off'),则禁用自动缩放。

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

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

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

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

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

示例

创建箭头图

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

load('wind','x','y','u','v')
X = x(11:22,11:22,1);
Y = y(11:22,11:22,1);
U = u(11:22,11:22,1);
V = v(11:22,11:22,1);

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

quiver(X,Y,U,V)
axis equal

        如图所示:

禁用自动缩放

        默认情况下,quiver 函数会缩短箭头长度,使其不重叠。将 scale 参数设置为 0 可禁用自动缩放,从而完全由 U 和 V 来确定箭头长度。

        例如,使用 meshgrid 函数创建一个由 X 和 Y 值组成的网格。使用这些值指定定向分量。然后,创建一个没有自动缩放的箭头图。

[X,Y] = meshgrid(0:6,0:6);
U = 0.25*X;
V = 0.5*Y;
quiver(X,Y,U,V,0)

        如图所示:

绘制梯度和等高线

        绘制函数 z=xe−x2−y2 的梯度和等高线。使用 quiver 函数绘制梯度,使用 contour 函数绘制等高线。

        首先,创建一个由等间距的 x 和 y 值组成的网格。使用它们来计算 z。然后,通过指定点之间的间距,求得 z 的梯度。

spacing = 0.2;
[X,Y] = meshgrid(-2:spacing:2);
Z = X.*exp(-X.^2 - Y.^2);
[DX,DY] = gradient(Z,spacing);

        将梯度向量显示为一个箭头图。然后,在相同的坐标区中显示等高线。通过调用 axis equal,调整显示以使梯度向量垂直于等高线。

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

        如图所示:

指定箭头颜色

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

[X,Y] = meshgrid(-pi:pi/8:pi,-pi:pi/8:pi);
U = sin(Y);
V = cos(X);
quiver(X,Y,U,V,'r')

        如图所示:

指定箭头图的坐标区

        创建一个由 X 和 Y 值以及两组 U 和 V 定向分量组成的网格。

[X,Y] = meshgrid(0:pi/8:pi,-pi:pi/8:pi);
U1 = sin(X);
V1 = cos(Y);
U2 = sin(Y);
V2 = cos(X); 

        创建一个具有两个坐标区 ax1 和 ax2 的分块布局图。想每个坐标区添加一个箭头图和标题。(在 R2019b 之前,使用 subplot 而不是 tiledlayout 和 nexttile。)

tiledlayout(1,2)

ax1 = nexttile;
quiver(ax1,X,Y,U1,V1)
axis equal
title(ax1,'Left Plot')

ax2 = nexttile;
quiver(ax2,X,Y,U2,V2)
axis equal
title(ax2,'Right Plot')

        如图所示:

在创建后修改箭头图

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

[X,Y] = meshgrid(-pi:pi/8:pi,-pi:pi/8:pi);
U = sin(Y);
V = cos(X);

q = quiver(X,Y,U,V);
q.ShowArrowHead = 'off';
q.Marker = '.';

        如图所示:

  X — 箭头起始点的 x 坐标,Y — 箭头起始点的 y 坐标,U — x 分量,V — y 分量,LineSpec — 线型、标记和颜色,scale — 箭头缩放因子,ax — 目标坐标区。

提示
        要使用极坐标创建箭头图,请首先使用 pol2cart 函数将其转换为笛卡尔坐标。​​​​​​​        

  • 10
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 MATLAB ,可以使用 quiver 函数绘制矢量场,可以通过设置 quiver 函数的属性来改变箭头的颜色。具体方法如下: 1. 使用 quiver 函数绘制矢量场,例如: ```matlab x = linspace(-2, 2, 10); y = linspace(-2, 2, 10); [X, Y] = meshgrid(x, y); U = X; V = Y; quiver(X, Y, U, V); ``` 2. 设置箭头的颜色,可以使用 quiver 函数的 Color 属性,例如: ```matlab quiver(X, Y, U, V, 'Color', 'r'); ``` 这将把箭头的颜色设置为红色。可以使用其他颜色名称或 RGB 值来设置箭头的颜色。 3. 如果要为每个箭头设置不同的颜色,可以使用 quiver 函数的 CData 属性,例如: ```matlab C = rand(size(X)); quiver(X, Y, U, V, 'Color', 'k', 'CData', C); ``` 这将为每个箭头随机分配一个颜色。 希望这些信息能够帮助您设置 MATLAB quiver 函数的箭头颜色。 ### 回答2: MATLAB Quiver 是在绘制矢量场时非常常用的工具。在绘制矢量场时,我们常常需要对箭头进行颜色的设置,使其可以更好地表达我们希望表达的信息。下面是一些关于 MATLAB Quiver 箭头颜色的常见问题及其解答。 1. 如何将 MATLAB Quiver 箭头颜色设置为单一颜色? 答:要将 MATLAB Quiver 箭头的颜色设置为单一颜色,你需要设置箭头颜色属性。箭头颜色可以是一个RGB颜色向量,也可以是一个代表颜色的字符串。对于RGB颜色向量,它应该是一个1x3的向量,其每个元素表示红、绿、蓝三个颜色分量。对于字符串,它可以是可以识别的颜色名称,如'red'、'blue'等。 示例: ```matlab x = linspace(-2*pi,2*pi,20); y = x; [xx,yy] = meshgrid(x,y); u = cos(xx).*yy; v = sin(xx).*yy; quiver(xx,yy,u,v,'color','g'); ``` 此代码将显示一个矢量场,其箭头颜色设置为绿色。 2. 如何在 MATLAB Quiver 箭头使用不同的颜色? 答:MATLAB Quiver 箭头可以使用不同的颜色来表示不同的物理量。对于该功能,您可以使用‘Quiver AutoColor’属性来控制颜色的使用。该属性表示为True时,MATLAB将自动为每个箭头分配颜色。当属性设置为False(默认值)时,您需要使用'CData'属性来手动指定颜色。 示例: ```matlab x = linspace(-2*pi,2*pi,20); y = x; [xx,yy] = meshgrid(x,y); u = cos(xx).*yy; v = sin(xx).*yy; z = sqrt(u.^2 + v.^2); quiver(xx,yy,u,v,'CData',z,'AutoColor','off'); ``` 此代码将显示一个矢量场,其箭头沿方向从黄色(低值)到红色(高值)渐变。 3. 如何根据箭头长度改变 MATLAB Quiver 箭头颜色? 答:要根据箭头长度来控制 MATLAB Quiver 箭头的颜色,您可以使用'CDataMapping'属性。该属性可以设置为‘direct’或‘scaled’。当属性设置为'direct'时,箭头颜色将与'CData'属性指定的值直接相关。当属性设置为'scaled'时,箭头颜色将由'CData'属性和'ColorMap'属性的值相乘得到,ColourMap用来描述颜色与值之间的映射。 示例: ```matlab x = linspace(-2*pi,2*pi,20); y = x; [xx,yy] = meshgrid(x,y); u = cos(xx).*yy; v = sin(xx).*yy; z = sqrt(u.^2 + v.^2); quiver(xx,yy,u,v,z,'CDataMapping','scaled','ColorMap',jet(10)); ``` 此代码将显示一个矢量场,其箭头根据其长度被着色,颜色将从'jet'颜色映射获取。 在使用 MATLAB Quiver 工具绘制矢量场时,箭头颜色的设置是非常重要的。通过对箭头颜色属性、Autocolor属性和CData属性的设置,您可以完全控制箭头颜色,实现对矢量场的精细描绘。 ### 回答3: 在 MATLAB Quiver 函数可以用于绘制 2D 或 3D 的箭头图。可以通过设置 Quiver 函数的属性来控制箭头的颜色,以下是几种可能的方法。 1. 使用 RGB 值设置箭头颜色。 可以通过设置 Quiver 函数的 'Color' 属性来设置箭头的颜色,使用 RGB 元组来表示颜色。例如,以下代码用 Quiver 函数绘制 2D 箭头图,并将箭头颜色设置为红色: x = -2:0.2:2; y = -2:0.2:2; [X,Y] = meshgrid(x,y); U = sin(X).*Y; V = cos(X).*Y; quiver(X,Y,U,V,'Color',[1 0 0]); 其,[1 0 0] 表示红色,[0 1 0] 表示绿色,[0 0 1] 表示蓝色。 2. 使用 colormap 设置箭头颜色。 还可以使用 colormap 选项来设置箭头颜色。与其他 MATLAB 绘图函数一样,Quiver 函数可以通过 colormap 属性来设置色彩映射。可以使用 MATLAB 预定义的 colormap,如 'hsv'、'jet'、'gray' 等,或者自定义 colormap。例如,以下代码用 Quiver 函数绘制 2D 箭头图,并将箭头颜色设置为 'hsv' colormap: x = -2:0.2:2; y = -2:0.2:2; [X,Y] = meshgrid(x,y); U = sin(X).*Y; V = cos(X).*Y; quiver(X,Y,U,V,'Color',[0 0 0],'colormap',hsv); 在这个例子,'Color' 属性设置为 [0 0 0],这表示箭头边缘的颜色是黑色,而箭头内部的颜色使用 'hsv' colormap 来设置。 3. 使用 line-style 和 marker-style 设置箭头颜色。 还可以使用 Quiver 函数的 line-style 和 marker-style 属性来设置箭头颜色。例如,以下代码用 Quiver 函数绘制 2D 箭头图,并将箭头颜色设置为蓝色: x = -2:0.2:2; y = -2:0.2:2; [X,Y] = meshgrid(x,y); U = sin(X).*Y; V = cos(X).*Y; quiver(X,Y,U,V,'LineWidth',2,'Color',[0 0 1],'MaxHeadSize',0.5,'AutoScale','off'); 其,'LineWidth' 属性设置箭头的宽度,'MaxHeadSize' 属性设置箭头头部的最大尺寸,'AutoScale' 属性控制是否将箭头自动缩放以适应画图区域。 这些都是控制 MATLAB Quiver 函数箭头颜色的方法,具体可以根据需要选择不同的方式进行设定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值