精华内容
下载资源
问答
  • 在绘制图像的过程,下面举几个例子:例1:一个最简单的例子,该二维矢量场图的矢量皆从(0,0)出发,分别指向(1,0) 、(-1,0) 、(0,1) 、(0,-1)。画出下图 但我们发现箭头并没有完全指到(1,0) 、(-1,0) 、(...

    1.

    一般用于绘制二维矢量场图,函数调用方法如下:

    该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数。在绘制图像的过程中,

    下面举几个例子:

    例1:一个最简单的例子,该二维矢量场图中的矢量皆从(0,0)出发,分别指向(1,0) 、(-1,0) 、(0,1) 、(0,-1)。

    画出下图

    51b271269180d537cae3b2701cf97bd7.png

    但我们发现箭头并没有完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1) 。如果需要箭头完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1),我们需要改变scale参数,将其设为1。参考方法如下:

    画出图像如下 :

    15c906bc13ee9329b66cd8ad8b52bff0.png

    当然,也可以改变颜色。改变颜色可以参考LineSpec的设置,参考代码如下:

    画出图像如下:

    158a8935fb19a890a134431650ad2097.png

    例2:(参考MathWorks):已知u=ycosxv=ysinxv=ysinx

    画出下图:

    8d54d7df1e471506a8bb57c016bf049b.png

    用法与quiver类似,用于三维矢量场图的绘制。

    例3: (参考MathWorks)绘制z=y2x2

    画出下图:

    b045431a906af0bcdef6385a2e899820.png

    3.dfield与pplane(多应用于常微分方程)

    dfield与pplane的原作者是Rice University的John C. Polking,用于解决涉及常微分方程的问题,比较方便,这里可以下载dfield与pplane的.m文件

    在MATLAB中调用dfield,呈现 :

    201f5ebbb2059fc2e4ddcc476d2375e2.png

    如果我们要绘制常微分方程x′=x2t

    3e2127c17d0db3e4908c15a56e7bca5e.png

    在MATLAB中调用pplane,呈现

    60e7d2a4c7864d35d9481df6a913db0b.png

    以默认的微分方程为例,可以绘制矢量场图:

    2a4fd0642c1949945ebb7406436b7ca3.png

    展开全文
  • 在科研出图,经常需要在底图上绘制流速图、受力图、磁场方向图等,而MATLAB正好拥有一个对应的quiver函数可以使用。本文以冰流速制图为例介绍quiver函数的使用和注意事项。 quiver()功能 语法1:quiver(x,y,u,v) ...

    介绍

    在科研出图中,经常需要在底图上绘制流速图、受力图、磁场方向图等,而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就是“箭筒,箭套”的意思 ...如下图,你可以把这个函数看作位置矢量 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

    展开全文
  • 1.quiver函数 一般用于绘制二维矢量场图,函数调用方法如下: quiver(x,y,u,v)   该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数。在绘制图像的...

    1.quiver函数 

    一般用于绘制二维矢量场图,函数调用方法如下:

    quiver(x,y,u,v)
    

      

    该函数展示了点(x,y)对应的的矢量(u,v)。其中,x的长度要求等于u、v的列数,y的长度要求等于u、v的行数。在绘制图像的过程中,通常用 meshgrid 来生成所需的网格采样点。

    下面举几个例子:

    例1:一个最简单的例子,该二维矢量场图中的矢量皆从(0,0)出发,分别指向(1,0) 、(-1,0) 、(0,1) 、(0,-1)。

    x=[0 0 0 0]; 
    y=x;
    u=[1 -1 0 0];
    v=[0 0 1 -1]; 
    quiver(x,y,u,v)
    

      

    画出下图

     

    但我们发现箭头并没有完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1) 。如果需要箭头完全指到(1,0) 、(-1,0) 、(0,1) 、(0,-1),我们需要改变scale参数,将其设为1。参考方法如下:

    quiver(x,y,u,v,1)
    

      画出图像如下 :

    当然,也可以改变颜色。改变颜色可以参考LineSpec的设置,参考代码如下:

    >> quiver(x,y,u,v,'-r')  %这里将图像设置为红色
    

      画出图像如下:

    例2:(参考MathWorks):已知$u=ycosx$, $v=ysinx$

    [x,y] = meshgrid(0:0.2:2,0:0.2:2);  %生成所需的网格采样点 x与y在0到2区间 每隔0.2取一个点
    u = cos(x).*y;
    v = sin(x).*y;
    quiver(x,y,u,v) %绘制二维矢量场图
    

      

    画出下图:

    2.quiver3函数

    用法与quiver类似,用于三维矢量场图的绘制。

    例3: (参考MathWorks)绘制$z=y^2-x^2$的三维矢量场图。

    >> [x,y]=meshgrid(-3:.5:3,-3:.5:3); %生成所需的网格采样点 x与y在-3到3范围内 每隔0.5取一个点
    >> z=y.^2-x.^2;
    >> [u,v,w]=surfnorm(z); %取三维曲面的法线
    >> quiver3(z,u,v,w)  %绘制三维矢量场图
    

      画出下图:

    3.dfield与pplane(多应用于常微分方程)

    dfield与pplane的原作者是Rice University的John C. Polking,用于解决涉及常微分方程的问题,比较方便,这里可以下载dfield与pplane的.m文件

    在MATLAB中调用dfield,呈现 :

    如果我们要绘制常微分方程$x'=x^2-t$对应的矢量场图,我们可以输入对应的公式与参数值。在这里,上图中默认的常微分方程对应矢量场图:

    在MATLAB中调用pplane,呈现

    以默认的微分方程为例,可以绘制矢量场图:

     

    转载于:https://www.cnblogs.com/rgvb178/p/5926168.html

    展开全文
  • 多维数组值传递、quiver3、quiver、plot3、plot等用法以及向量归一化问题实例解析!
  • 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 函数注释过程,本文参照 matplotlib quiverkey 函数,构造类似函数为 Matlab quiver 矢量场进行标注。 quiverkey函数 首先看 matplotlib quiverkey 如何定义的 ...
  • 这里所说的矢量化显示是指为矩阵的每一个点标注出该点的运动方向,或者其他矢量。如下图所示 下同通过一个基本的例子来说明一个大致的过程。 假设有一个矩阵A=[1 2 3 ;4 5 6],在每一个处沿水平方向的速度为...
  • 2020-10-04 Matlab中相图的画法

    千次阅读 2020-10-04 17:17:02
    Matlab中相图的画法Matlab中相图的画法演示结果 Matlab中相图的画法 最近在Youtube中看到一段很好的相图代码,把它拿出来分享给大家。 [t,y]=meshgrid(0:.2:4,0:.2:4); m=t+sin(y); L=sqrt(1+m.^2); quiver(t,y,1./L...
  • MATLAB中向量场的可视化

    千次阅读 2013-12-28 20:04:32
    设二维函数z=f(x,y),其中z为海拔,x为东西测向距离而y为南北测向距离。 显然有如下事实:斜率大的地方陡峭一些,...可以使用梯度表示MATLAB中有个函数专门完成这个事情,他就是quiver。 用法: quiver(x,y,u,
  • Matlab中向量场的绘制

    2016-01-12 09:20:00
    % quiver(x,y,u,v) % x,y是包含坐标位置的矩阵,而u和v则是包含偏导数的矩阵。 % 例如绘制f(x,y)=y-3x-2x^2-3xy-3y^2的方法: % 先用gradient函数计算偏导数,然后再用quiver绘制向量场 f=@(x,y) -y-3*x-2*...
  • 设二维函数z=f(x,y),其中z为海拔,x为东西测向距离而y为南北测向距离。 显然有如下事实:斜率大的地方陡峭一些,等高...可以使用梯度表示MATLAB中有个函数专门完成这个事情,他就是quiver。 用法: quiver(x,y...
  • matlab开发-箭图悬挂颜色2和3D。实现MATLAB中给定的quiver/quiver3函数,该函数根据大小添加颜色编码
  • MATLAB中绘制三维坐标中的箭头函数,比较用,可以灵活处理三维坐标中的箭头指向,MATLAB中有自带的函数quiver3,也是可以绘制三维坐标中的箭头,
  • 1.绘制带箭头向量图,见下面实例:clear;...quiver3(A(1),A(2),A(3),B(1)-A(1),B(2)-A(2),B(3)-A(3),scale);%表示以A为起点,由A指向Btext(A(1),A(2),A(3),'A');%在A点附件标注字母Aaxis([-10 4 5 8 0 7]);...
  • 补二维进阶绘图特殊图形绘制bar() 柱状图area()填充图pie 饼状图errobar 图形加上误差范围hist 直方图stairs 阶梯图stem 火柴杆图contour 等高线绘图fill 多边形填充图feather 羽毛图comet 彗星图quiver 向量场图...
  • MATLABMATLAB 可视化之 向量场绘图

    千次阅读 2018-08-01 11:34:03
    翻译自 MATLAB 官方文档 feather : 羽毛图,绘制速度向量 quiver : 箭头图 compass : 罗盘图 quiver3 : 3D 箭头图 streamslice : 在切片平面绘制流线图 streamline : 根据二维或三维向量数据绘制流线图 ...
  • matlab 箭头的样式问题

    千次阅读 2016-07-18 17:12:53
    matlab 经常用quiver画箭头的话,会发现样式以及箭头的大小不满意,大概搜索了一下,建议用annotation函数来绘制箭头图案。可以参照这里 ...
  • quiver3,空间向量场图 [x, y] = meshgrid(-2:0.2:2, -1:0.1:1); z = x.*exp(-x.^2-y.^2); [u, v, w] = surfnorm(x, y, z); %找出与曲面上各个点垂直的向量(u, v, w),注意已经归一化 quiver3(x, y, z, u, v, w)...
  • matlab 修改 设置 三维箭头大小 尺寸

    万次阅读 2018-02-01 09:14:19
    matlab 修改 设置 三维箭头大小 尺寸 冰三点水 ...matlab中绘制三维箭头的函数是quiver3。但是该函数的帮助文档并未说明如何修改箭头大小。总结修改方法如下: clc clear close all; h = quiver3(0,0,0,
  • 章MATLAB在场论中的应用1.1标量函数及其可视化1.1.1标量的定义1.1.2MATLAB中plot函数简介1.1.3使用plot函数绘制一维标量函数1.1.4MATLAB环境下二...1.2.3MATLAB中quiver函数简介1.2.4MATLAB中streamline函数简介1....
  • MATLAB 矢量场

    千次阅读 2019-03-31 16:28:31
    1. 空间三维矢量的基本概念 https://blog.csdn.net/tina_ttl/article/details/51279530 2. 一个三维矢量场(转) clear; clc; [X, Y, Z] = peaks(20); [U, V, W] = surfnorm(X, Y, Z); quiver3(X, Y, Z, U, V,...
  • matlabm_map工具箱1.4

    2012-09-01 21:35:40
    可以测量距离( m_lldist, m_xydist ),绘制等值线(m_contour),等值线填充图(m_contourf),矢量图(m_quiver),栅格图(m_pcolor)等,并与相应的matlab函数语法类似,很容易使用。 m_map通过m_coast提供1...
  • matlab中如何绘制坐标系&如何让图片动起来绘制坐标系plot3quiver3plotTransforms如何让图片动起来 绘制坐标系 plot3 figure(1) plot3( [0 0 0; 0 0 0; 0 0 1], [0 0 0; 0 1 0; 0 0 0], [1 0 0; 0 0 0; 0 0 0], '...
  • MATLAB】绘制矢量场图

    千次阅读 2020-07-23 20:58:15
    MATLAB中绘制矢量场图的函数是quiver,利用help命令查看该函数的解释。 一般来说,输入参数可以是四个(x,y,u,v),也可以是两个参数(u,v),要求是这些参数都大小相同的矩阵。 注意:在输入参数只有两个(u,v),...
  • matlab视频保存以及速度矢量箭头

    千次阅读 2016-12-13 16:50:21
    最近用matlab画图,主要涉及的matlab函数是: VideoWriter:保存视频的新函数,取代了之前的movie2avi。需要结合writeVideo函数。 quiver:速度矢量绘图函数。 做了一些动画效果的视频,截取效果如下: ...
  • 在搜索过程,找到了MATLAB绘制海面风场图像,但实现过程,显示出错 m_pcolor (line 43) data(i)=NaN。又是第一次接触matlab,有点儿懵。不过搞了一下午总算搞懂了,记录下菜鸡之路。 绘制的重点在于quiver函数...

空空如也

空空如也

1 2
收藏数 35
精华内容 14
关键字:

matlab中quiver

matlab 订阅