精华内容
下载资源
问答
  • MATLAB quiver函数使用:绘制矢量箭头介绍quiver()功能注意1:quiver()对(x,y,u,v)的要求注意2:quiver()绘制箭头时所在的坐标系举例总结代码及冰流速数据 介绍 在科研出图中,经常需要在底图上绘制流速图、受力图、...

    介绍

    在科研出图中,经常需要在底图上绘制流速图、受力图、磁场方向图等,而MATLAB正好拥有一个对应的quiver函数可以使用。本文以冰流速制图为例介绍quiver函数的使用和注意事项。

    quiver()功能

    语法1:quiver(x,y,u,v)
    这是quiver最常用的命令形式,表示在(x,y)位置上绘制向量(u,v)。(x,y)为箭头的起始坐标,(u,v)为箭头的方向矢量,sqrt(uu+vv)为物理量的大小,arctan(v/u)为物理量的方向。

    语法2:quiver(x,y,u,v,scale)
    数值scale是指箭头的放大缩小比例。在默认情况下,quiver命令会自动调整箭头的大小,以保证箭头之间不重叠。例如,scale为2时,表示箭头放大2倍,以此类推。

    语法3:quiver(x,y,u,v,scale,‘LineSpec’)
    'LineSpec’表示绘制箭头的颜色、线型、 标志样式。例如’LineSpec’为’y’时,表示箭头显示为黄色。

    注意1:quiver()对(x,y,u,v)的要求

    quiver()要求(x,y,u,v)为同型矩阵,即x,y,u,v的行列数要相等,假设均为m行n列。(x,y)可以使用meshgrid()生成,例如要生成3行4列的矩阵索引,可以如下代码举例

    // An highlighted block
    [x,y] = meshgrid(1:4,1:3);
    %x =
    %     1     2     3     4
    %     1     2     3     4
    %     1     2     3     4
    %y = 
    %     1     1     1     1
    %     2     2     2     2
    %     3     3     3     3
    

    可以看出,meshgird(1:n,1:m),第一个参数是列数,第二个参数是行数,结果中,x表示列数,y表示行数。这与MATLAB中的矩阵表示"先行后列"是相反的,因此在使用meshgrid()生成矩阵索引时需要注意调整行数和列数的位置

    注意2:quiver()绘制箭头时所在的坐标系

    quiver()绘制箭头所在的坐标系是常见的笛卡尔坐标系,如下图所示,x轴向右为正,y轴向上为正,因此这解释了【注意1】中为何x表示列数,y表示行数。
    x轴向右为正,y轴向上为正
    但是,考虑到矩阵格式的图像时,矩阵的左上角为(1,1),矩阵描述的坐标系是向右为正,向下为正。因此,(u,v)同样分别表示水平方向和垂直方向,注意v可能前面要加负号

    举例

    下图是用quiver(x,y,u,v)绘制的达尔克冰川流速图,这与冰流方向是不一致的。
    达尔克冰川冰流速图
    用quiver(x,y,u,-v)绘制箭头时,箭头沿水平轴镜像反转,显示是符合实际情况的。
    在这里插入图片描述

    总结

    quiver()函数原本是用于笛卡尔坐标系中的,当用quiver()函数显示矩阵形式的矢量场时,需要考虑到矩阵索引大小和笛卡尔坐标之间的区别,做好(x,y)与(u,v)在含义和正负符号上的一致性,才能画出准确的矢量场图形。

    代码及冰流速数据

    链接:https://pan.baidu.com/s/1MPgeLzTnde7st3yHS7VnFA
    提取码:4f5w
    链接

    展开全文
  • Matlab quiver函数用法 - 画矢量箭头

    千次阅读 2020-01-11 17:25:36
    用于画矢量函数的箭头图(quiver plot)、 举一个矢量函数的例子: F⃗=i⃗x+i⃗x\vec{F}=\vec{i}x+\vec{i}xF=ix+ix 如下图,你可以把这个函数看作位置矢量 r⃗\vec{r}r,图中每一个箭头的方向都是向径(即从原点粗...

    提要:

    • quiver (x, y,u,v)在点(x,y)处画(u,v)所定义的向量箭头。x,y,u,v必须是维度和元素数都一样的矩阵。如果是一维数组的话,x,y,u,v的元素数必须一致。quiver函数会自动调整箭头的长度以适应显示
    • quiver(x,y,u,v,scale)scale 用于限定箭头的长度,如果scale = 1 则等值显示矢量的长度,而scale = 0.2 则显示0.2倍的矢量长度。
    • quiver(u,v)在x-y平面上均匀地画箭头图
    • quiver(x,y,u,v,LinSpec)用于限定箭头的属性,比如颜色,线型等。

    quiver就是“箭筒,箭套”的意思
    Quiver meaning

    quiver用于画矢量函数的箭头图(也叫速度图)(quiver plot, velocity vector plot)
    举一个矢量函数的例子:
    F=ix+jy\vec{F}=\vec{i}x+\vec{j}y
    如下图,你可以把这个函数看作位置矢量 r\vec{r},图中每一个箭头的方向都是向径(即从原点出发的一条直线),并且它的长度等于它到原点的距离。
    \vec{F}=\vec{i}x+\vec{j}y
    quiver (x, y,u,v)在点(x,y)处画(u,v)所定义的向量箭头。x,y,u,v必须是维度和元素数都一样的矩阵。如果是一维数组的话,x,y,u,v的元素数必须一致。quiver函数会自动调整箭头的长度以适应显示。

    %%  draw the velocity vector arrow of the vector function  i*x + j*y 
    % generate grids in a sub-definition area
    clc
    x = -1:0.5:1;
    y = -1:0.5:1;
    
    % generate the function values
    u = x;
    v = y;
    
    % draw vector arrow graph
    quiver(x, y, u, v)
    text(0.5, 0, '$\leftarrow \vec{F}=\vec{i}x + \vec{j}y $', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);
    grid on
    axis equal
    

    \vec{F}=\vec{i}x+\vec{j}y_line
    quiver(x,y,u,v,scale)scale 用于限定箭头的长度,如果scale = 1 则等值显示矢量的长度,而scale = 0.2 则显示0.2倍的矢量长度。比如以上的代码,若加入scale参数,则输出图像如下:

    %%  draw the velocity vector arrow of the vector function  i*x + j*y 
    % generate grids in a sub-definition area
    clc
    x = -1:0.5:1;
    y = -1:0.5:1;
    
    % generate the function values
    u = x;
    v = y;
    
    % draw vector arrow graph
    scale = 0.2
    quiver(x, y, u, v,scale)
    text(0.5, 0, '$\leftarrow \vec{F}=\vec{i}x + \vec{j}y $', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);
    grid on
    axis equal
    

    \vec{F}=\vec{i}x+\vec{j}y_line_scale=2

    quiver(u,v)在x-y平面上均匀地画箭头图
    比如函数F=iy+jxx2+y2\vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x^{2}+y^{2}} } 使用quiver(x,y,u,v,scale)书写代码:

    %%  draw the velocity vector arrow of the vector function  (i*y + j*x)/sqrt(x^2 + y^2)
    % generate grids in a sub-definition area
    clc
    
    R = 2:2:6;
    theta = -pi:pi/4:pi;
    x = R'*cos(theta);
    y = R'*sin(theta);
    
    % generate the function values
    rr = sqrt(x.^2 + y.^2);
    fx = -y./rr;
    fy = x./rr;
    %[FX,FY] = meshgrid(fx,fy);
    
    % draw vector arrow graph
    scale = 0.2;
    quiver(x, y, fx, fy,scale)
    text(4, 2, '$\vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x^{2}+y^{2}} } $', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);
    grid on
    axis equal
    

    输出的图像为
    \vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x{2}+y{2}} }
    而我们用quiver(u,v)替换掉quiver(x,y,u,v,scale),代码变为:

    %%  draw the velocity vector arrow of the vector function  (i*y + j*x)/sqrt(x^2 + y^2)
    % generate grids in a sub-definition area
    clc
    
    R = 2:2:6;
    theta = -pi:pi/4:pi;
    x = R'*cos(theta);
    y = R'*sin(theta);
    
    % generate the function values
    rr = sqrt(x.^2 + y.^2);
    fx = -y./rr;
    fy = x./rr;
    %[FX,FY] = meshgrid(fx,fy);
    
    % draw vector arrow graph
    scale = 0.2;
    quiver(fx, fy,scale)
    text(4, 2, '$\vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x^{2}+y^{2}} } $', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);
    grid on
    axis equal
    

    输出的箭头图不再是环形分布,而变成x-y平面上的均匀分布:
    \vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x{2}+y{2}} }_uniform_distribution
    quiver(x,y,u,v,LinSpec)用于限定箭头的属性,比如颜色,线型等。
    示例代码:

    %%  draw the velocity vector arrow of the vector function  (i*y + j*x)/sqrt(x^2 + y^2)
    % generate grids in a sub-definition area
    clc
    
    R = 2:2:6;
    theta = -pi:pi/4:pi;
    x = R'*cos(theta);
    y = R'*sin(theta);
    
    % generate the function values
    rr = sqrt(x.^2 + y.^2);
    fx = -y./rr;
    fy = x./rr;
    %[FX,FY] = meshgrid(fx,fy);
    
    % draw vector arrow graph
    scale = 0.2;
    quiver(x, y, fx, fy,scale,'.r')
    text(4, 2, '$\vec{F}=\frac{ -\vec{i}y+\vec{j}x}{\sqrt{x^{2}+y^{2}} } $', 'HorizontalAlignment', 'left', 'Interpreter', 'latex', 'FontSize', 15);
    grid on
    axis equal
    

    LinSpec_Matlab_Quiver

    展开全文
  • quiver - Quiver or velocityplotGUI AlternativesTo graph selected variables, use the Plot Selector in the Workspace Browser, or use the FigurePalette Plot Catalog. Manipulate graphs in plot edit mode ....

    quiver - Quiver or velocity

    plot

    a4c26d1e5885305701be709a3d33442f.png

    GUI Alternatives

    To graph selected variables, use the Plot Selector a4c26d1e5885305701be709a3d33442f.png in the Workspace Browser, or use the Figure

    Palette Plot Catalog. Manipulate graphs in plot edit mode with the Property Editor.

    For details, see Plotting Tools — Interactive Plotting in the MATLAB Graphics

    documentation and Creating Graphics from the Workspace Browser in the MATLAB

    Desktop Tools documentation.

    Syntax

    quiver(x,y,u,v)

    quiver(u,v)

    quiver(...,scale)

    quiver(...,LineSpec)

    quiver(...,LineSpec,'filled')

    quiver(axes_handle,...)

    h = quiver(...)

    hlines = quiver('v6',...)

    Description

    A quiver plot displays velocity vectors as arrows with

    components (u,v) at the points (x,y).

    For example, the first vector is defined by components

    u(1),v(1) and is displayed at the point

    x(1),y(1).

    quiver(x,y,u,v) plots vectors

    as arrows at the coordinates specified in each corresponding pair

    of elements in x and y. The matrices x,

    y, u, and v must all be the same size

    and contain corresponding position and velocity components.

    However, x and y can also be vectors, as

    explained in the next section. By default, the arrows are scaled to

    just not overlap, but you can scale them to be longer or shorter if

    you want.

    Expanding x- and y-Coordinates

    MATLAB expands x and y if they are not

    matrices. This expansion is equivalent to calling meshgrid to generate matrices from vectors:

    [x,y] = meshgrid(x,y);

    quiver(x,y,u,v)

    In this case, the following must be true:

    length(x) = n and length(y)

    = m, where [m,n] =

    size(u) = size(v).

    The vector x corresponds to the columns of u

    and v, and vector y corresponds to the rows of

    u and v.

    quiver(u,v) draws vectors

    specified by u and v at equally spaced points in

    the x-y plane.

    quiver(...,scale)

    automatically scales the arrows to fit within the grid and then

    stretches them by the factor scale. scale

    = 2 doubles their relative length, and

    scale = 0.5 halves the length. Use

    scale = 0 to plot the velocity vectors without automatic

    scaling. You can also tune the length of arrows after they have

    been drawn by choosing the Plot Edit a4c26d1e5885305701be709a3d33442f.png tool, selecting the quivergroup

    object, opening the Property Editor, and adjusting the

    Length slider.

    quiver(...,LineSpec) specifies

    line style, marker symbol, and color using any valid

    LineSpec. quiver draws the markers at the origin

    of the vectors.

    quiver(...,LineSpec,'filled')

    fills markers specified by LineSpec.

    quiver(axes_handle,...) plots

    into the axes with the handle axes_handle instead of into

    the current axes (gca).

    h = quiver(...) returns the

    handle to the quivergroup object.

    Backward-Compatible Version

    hlines = quiver('v6',...)

    returns the handles of line objects instead of quivergroup objects

    for compatibility with MATLAB 6.5 and earlier.

    Note The v6

    option enables users of Version 7.x of MATLAB to create FIG-files

    that previous versions can open. It is obsolete and will be removed

    in a future version of MATLAB.

    Examples

    Showing the Gradient with Quiver Plots

    Plot the gradient field of the function a4c26d1e5885305701be709a3d33442f.png:

    [X,Y] = meshgrid(-2:.2:2);

    Z = X.*exp(-X.^2 - Y.^2);

    [DX,DY] = gradient(Z,.2,.2);

    contour(X,Y,Z)

    hold on

    quiver(X,Y,DX,DY)

    colormap hsv

    hold off

    a4c26d1e5885305701be709a3d33442f.png

    See Also

    Quivergroup Properties for property descriptions

    展开全文
  • matlab官方quiver介绍 速度场 在平面直角坐标系中,两个点(x1,y1)(x_1,y_1)(x1​,y1​)和(x2,y2)(x_2,y_2)(x2​,y2​)唯一地确定一个矢量或速度,现在将这个矢量平移到以(0,0)(0,0)(0,0)为起点得到得两个点坐标为(0,...

    matlab官方quiver介绍

    速度场

    在平面直角坐标系中,两个点(x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2)唯一地确定一个矢量或速度,现在将这个矢量平移到以(0,0)(0,0)为起点得到得两个点坐标为(0,0)(0,0)(x2x1,y2y1)(x_2-x_1,y_2-y_1),令x2x1=x,y2y1=yx_2-x_1 = x , y_2-y_1 = y,则在matlab绘图时,实际上只需要给出xxyy就能画出这个矢量。

    代码实例

    下面的代码中,首先生成一个5*5的网格,然后统一将所有速度场调整为向右,也就是x任意正数y0

    [x,y] = meshgrid(0:0.5:2,0:0.5:2);
    u = [0.5 0.5 0.5 0.5 0.5]'*[0.5 0.5 0.5 0.5 0.5];
    v = [0 0 0 0 0]'*[0 0 0 0 0];
    
    figure
    quiver(x,y,u,v)
    grid on
    

    得到的图形如下
    在这里插入图片描述
    现在要使箭头方向相反,直接在x前加负号就行

    [x,y] = meshgrid(0:0.5:2,0:0.5:2);
    u = -[0.5 0.5 0.5 0.5 0.5]'*[0.5 0.5 0.5 0.5 0.5];
    v = [0 0 0 0 0]'*[0 0 0 0 0];
    
    figure
    quiver(x,y,u,v)
    grid on
    

    在这里插入图片描述
    其他矢量方向也可以根据xy的比例调整,举个最简单的例子,将部分xy调整成一样的数值,那么非常明显,矢量的方向为斜向上45°

    [x,y] = meshgrid(0:0.5:2,0:0.5:2);
    u = [0.5 0.5 0.5 0.5 0.5]'*[0.5 0.5 0.5 0.5 0.5];
    v = [0.5 0.5 0 0 0]'*[0.5 0.5 0 0 0];
    
    figure
    quiver(x,y,u,v)
    grid on
    

    在这里插入图片描述

    展开全文
  • matlab箭头

    2014-11-03 17:58:00
    [转载]在matlab箭头 原文地址:在matlab箭头作者:纯情小郎君 完整见链接http://www.mathworks.com/matlabcentral/fx_files/14056/1/content/arrow3_examples.html ARROW3EXAMPLES(R13) Two-...
  • MATLAB绘制箭头

    2019-10-17 10:12:32
    quiver3(x,y,z,u,v,w) quiver3(z,u,v,w) quiver3(...,scale) quiver3(...,LineSpec) quiver3(...,LineSpec,'filled') quiver3(...,'PropertyName',PropertyValue,...) quiver3(ax,...) h = quiver3(...) 说明 三维...
  • matlab开发-Quiver5

    2019-08-24 14:14:43
    matlab开发-Quiver5。使用真正的三维箭头绘制箭头
  • matlabquiver函数的用法

    万次阅读 2019-05-05 17:34:27
    quiver(a,b,u,v):绘制矢量场,即箭头 a,b,u,v都是列向量,只有一列。 a,b表示绘制箭头的起始坐标 u,v表示所绘制箭头的方向坐标,u,v相当于x,y 箭头的长度,即模等于sqrt(u^2+v^2) 箭头的方向,即...
  • matlab开发-quiver3Dpatch

    2019-08-24 03:15:18
    matlab开发-quiver3Dpatch。基于补丁命令的彩色三维箭头绘制
  • matlab 箭头的样式问题

    千次阅读 2016-07-18 17:12:53
    matlab 中经常用quiver箭头的话,会发现样式以及箭头的大小不满意,大概搜索了一下,建议用annotation函数来绘制箭头图案。可以参照这里 ...
  • 一、语法 1.语句 quiver(x,y,u,v) quiver(u,v) quiver(...,scale) quiver(...,LineSpec) ...箭头图将速度向量显示为箭头,其中分量(u,v)位于点(x,y)处。 例如,第一个向量由分量u(1),v(1)定...
  • 三维箭头quiver3的用法

    千次阅读 2016-06-01 11:25:01
    前转载了一个quiver3的博文,但只是粘贴的matlab帮助,还全英文。现在用matlab帮助的一个例子来介绍它的用法。 quiver3函数在(x,y,z)处显示(u,v,w)向量。以下程序显示一个抛物线 vx = 2; % x方向速度 vy = 3;...
  • matlab图加上箭头和标注实例

    万次阅读 2018-05-10 11:23:37
    在图上加箭头的函数有annotation(),quiver(), annotation()函数 (1) annotation(annotation_type) % 以指定的对象类型,使用默认属性值建立注释对象。 (2) annotation(‘line’,x,y) % 建立从(x(1), y(1))到(x(2),...
  • matlab quiver函数 使用…

    万次阅读 2017-03-14 10:55:41
    quiver(x,y,u,v) 该函数使用箭头来直观的显示矢量场。该调用格式表示通过在(x, y)指定的位置绘制小箭头来表示以该点为起点的向量(u,v)。 x、y、u、v的行数、列数必须对应相等。即x、y、u、v必须是同型矩阵。 需要...
  • Matlab 图添加箭头指示 在图上加箭头的函数有 annotation(),quiver() annotation()函数 (1) annotation(annotation_type) 以指定的对象类型,使用默认属性值建立注释对象。 (2) annotation(‘line’,x,y) 建立从 x ...
  • matlab 修改 设置 三维箭头大小 尺寸

    万次阅读 2018-02-01 09:14:19
    matlab 修改 设置 三维箭头大小 尺寸 冰三点水 ...matlab中绘制三维箭头的函数是quiver3。但是该函数的帮助文档并未说明如何修改箭头大小。总结修改方法如下: clc clear close all; h = quiver3(0,0,0,
  • matlab 画箭头

    2017-08-05 17:46:14
    非常实用的文章原文地址:画箭头">在matlab 画箭头作者:纯情小郎君完整见链接http://www.mathworks.com/matlabcentral/fx_files/14056/1/content/arrow3_examples.html ARROW3  EXAMPLES (R13) Two-...
  • 1.一般用于绘制二维矢量场图,函数调用方法如下:该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数...画出下图 但我们发现箭头并没有完全指到(1,0) 、(-1,0) 、(...
  • quiver(x,y,u,v)函数使用箭头来直观的显示矢量场。该调用格式表示通过在(x, y)指定的位置绘制小箭头来表示以该点为起点的向量(u,v)。 x、y、u、v的行数、列数必须对应相等。即x、y、u、v必须是同型矩阵。 需要注意的...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

matlabquiver箭头

matlab 订阅