精华内容
下载资源
问答
  • quiver函数简介

    2012-09-23 15:57:07
    主要介绍了quiver函数的一些用法,很好的学习资料,大家可以借鉴一下。
  • 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函数的使用 用于画矢量函数的箭头图(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

    展开全文
  • matlab的quiver函数的用法

    万次阅读 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) 箭头的方向,即...

        quiver(a,b,u,v):绘制矢量场,即箭头

        a,b,u,v都是列向量,只有一列。

        a,b表示绘制箭头的起始坐标

        u,v表示所绘制箭头的方向坐标,u,v相当于x,y

        箭头的长度,即模等于sqrt(u^2+v^2)

        箭头的方向,即向量的倾角,等于arctan(v/u)

         比如,当u,v都是小于0,则箭头的方向则是倾向于左下角;

     

                     当u小于0,v大于0,则箭头的方向则是倾向于左上角;

     

                     当u大于0,v大于0,则箭头的方向则是倾向于右上角; 

     

                     当u大于0,v小于0,则箭头的方向则是倾向于右下角;

                      

        推荐博客:

     

    https://www.ilovematlab.cn/thread-475484-1-1.html

     

    展开全文
  • 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必须是同型矩阵。 需要...
    函数功能
    使用箭头绘制矢量图。例如,该函数可用于绘制梯度图。

    语法格式

    quiver(x,y,u,v)

    该函数使用箭头来直观的显示矢量场。该调用格式表示通过在(x, y)指定的位置绘制小箭头来表示以该点为起点的向量(u,v)。
    x、y、u、v的行数、列数必须对应相等。即x、y、u、v必须是同型矩阵。
    需要注意的是,如果x、y不是矩阵,MATLAB会调用meshgrid函数将其扩展。然后再调用quiver函数。在这种情况下,x中元素的个数必须等于u、v的列数,y中元素个数必须等于u、v的行数(否则使用meshgrid扩展后无法满足x、y、u、v是同型矩阵,具体参见meshgrid函数)。

    quiver(u,v)

    在x-y面上绘制向量(u,v),由于没有指定向量的起点,所以,matlab将在x-y面上均匀的取若干个点作为起点。

    quiver(...,scale)

    自动缩放箭头大小以使它适合网格的大小,然后根据scale因子拉伸这些箭头。例如,scale = 2则使箭头的相对长度增大为原来的2倍,scale = 0.5则使箭头的长度缩短一半。scale = 0则关闭箭头大小的自动缩放。也可以在箭头绘制完成后, 点击图形窗口工具栏中的箭头按钮打开Plot Edit工具, 使用鼠标选择绘图窗口中的箭头对象, 右键快捷菜单打开对象的属性编辑器, 进而调整箭头长度、线型等。

    quiver(...,LineSpec)

    其中LineSpec参数指定了线型、标志样式、颜色。quiver函数会把指定标志绘制在向量的起点。

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

    使用LineSpec指定的标志进行填充。

    实例:
    >> x=1:10;
    >> [x1,y1]=meshgrid(x,10-x);
    >> quiver(x1,y1)

    matlab <wbr>quiver函数 <wbr>使用箭头绘制矢量图

    展开全文
  • 1.一般用于绘制二维矢量场图,函数调用方法如下:该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数。在绘制图像的过程中,下面举几个例子:例1:一个最简单的...
  • 如果对曲线y=y(x)y=y(x)y=y(x)上每一个点(x0,y0)(x_{0},y_{0})(x0​,y0​),F⃗(x0,y0)\...那么对于曲线 y=y(x)y=y(x)y=y(x) ,它的切线场可以用一个矢量函数F⃗(x,y)=i⃗Fx(x,y)+Fy(x,y)\vec{F}(x,y)=\vec{i}F_{x}(...
  • quiver ( x ( 1 : 4 : end , 1 : 4 : end ) , y ( 1 : 4 : end , 1 : 4 : end ) , u ( 1 : 4 : end , 1 : 4 : end ) , v ( 1 : 4 : end , 1 : 4 : end ) , 'b' , 'MaxHeadSize' , 3 , 'autoScalefactor' , 1.7 , '...
  • 可以利用matlab提供的meshgrid函数,为我们自动生成。 [cpp] view plain copy >> A=[1 2 3;4 5 6];  >> [height,width]=size(A);  >> [y,x]=meshgrid(1:width,1:height)    y ...
  • quiver()函数

    2019-07-16 10:30:00
    1.quiver函数 一般用于绘制二维矢量场图,函数调用方法如下: 1 quiver(x,y,u,v)   该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度...
  • 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,...
  • 1.quiver函数 一般用于绘制二维矢量场图,函数调用方法如下: quiver(x,y,u,v)   该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数。在绘制图像的...
  • Matlab自带函数中不包含构造 quiver 函数注释过程,本文参照 matplotlib 中 quiverkey 函数,构造类似函数为 Matlab 中 quiver 矢量场进行标注。 quiverkey函数 首先看 matplotlib 中 quiverkey 如何定义的 ...
  • matlab开发-quiver3d

    2019-08-27 04:22:41
    matlab开发-quiver3d。该函数改进了Quiver3可视化三维矢量场的技术。
  • matplotlib.pyplot.quiver使用指南,包括基本的函数参数介绍与示例程序。
  • 三维箭头quiver3的用法

    千次阅读 2016-06-01 11:25:01
    前转载了一个quiver3的博文,但只是粘贴的matlab...quiver3函数在(x,y,z)处显示(u,v,w)向量。以下程序显示一个抛物线 vx = 2; % x方向速度 vy = 3; % y方向速度 vz = 10; % z方向速度 a = -32; % z方向加速度

空空如也

空空如也

1 2 3 4
收藏数 72
精华内容 28
关键字:

quiver函数