MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB

摘要:
˃˃[x,y]=网格;%生成所需的网格采样点x和y,并在-3到3˃˃z=y的范围内每0.5取一个点。^2-x ^2;˃˃[u,v,w]=表面标准;%取三维曲面的法线˃˃颤动3%,绘制三维矢量场,如下图所示:3.dfield和pplanedfield和pplane的原作者是莱斯大学波尔金分校的John C.,它便于解决涉及常微分方程的问题,可以从dfield和applane下载。m文件在MATLAB中调用dfield,表明如果我们想绘制与常微分方程$x’=x^2-t$相对应的矢量场图,我们可以输入相应的公式和参数值。

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)

  

画出下图

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第1张 

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

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

  画出图像如下 :

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第2张

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

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

  画出图像如下:

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第3张

例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) %绘制二维矢量场图

  

画出下图:

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第4张

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)  %绘制三维矢量场图

  画出下图:

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第5张

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

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

在MATLAB中调用dfield,呈现 :

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第6张

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

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第7张

在MATLAB中调用pplane,呈现

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第8张

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

MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB第9张

免责声明:文章转载自《MATLAB中矢量场图的绘制 (quiver/quiver3/dfield/pplane) Plot the vector field with MATLAB》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android 自定义CheckBox 样式ArcEngine开发——许可问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Matlab读取Excel的数据

matlab读取excel中的数据用的是xlsread()这个函数这句代码跟matlab菜单操作中的file中import再选择excel文件的效果是一样的手动导入的时候它会自动识别文件中有什么类型的数据,数字和字符串被分别读入到两个变量中。比如[A B] = xlsread('1.xmls'); A中存储了这个文件中的数字矩阵,B中存储了字符串矩阵,读取...

Matlab并行编程方法1

相信很多朋友在利用matlab进行计算时,会遇到循环次数过大,或者是单次计算量过大的问题,比如需要计算的数值阵列数据量过大,利用传统的编程方式,跑一次程序几个小时,都要等的急死了是不是呢?如果遇到这种情况,则可以尝试一下MATLAB并行计算,传统的计算方式都是串行计算。并行计算之所以可行,取决于两方面因素:a)现在大家的计算机是多核的,至少也是双核了吧,有...

利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系

一、目的        ①在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线。        ②在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线。 二、方法描述        在1x1的单位矩形中随机部署传感器节点,而且假设每个节点的通信半径一样。在每一组节点个数和节点通信半径下进行1000次试验,进而分别模拟...

matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。

最近跑深度学习,提出的feature是4096维的,放到我们的程序里,跑得很慢,很慢。。。。 于是,一怒之下,就给他降维处理了,但是matlab 自带的什么pca( ), princomp( )函数,搞不清楚怎么用的,表示不大明白,下了一个软件包: 名字:Matlab Toolbox for Dimensionality Reduction 链接:http...

非线性方程(组):MATLAB内置函数 solve, vpasolve, fsolve, fzero, roots [MATLAB]

MATLAB函数 solve, vpasolve, fsolve, fzero, roots 功能和信息概览 求解函数 多项式型 非多项式型 一维 高维 符号 数值 算法 solve 支持,得到全部符号解 若可符号解则得到根 支持 支持 支持 当无符号解时  符号解方法:利用等式性质得到标准可解函数的方法 基本即模拟人工运算 vpasolv...

Matlab中编译C++文件

今天在跑《Robust Object Tracking via Sparsity-based Collaborative Model》这篇文章的代码时候,发现出现如下错误: 发现错误时由于vgg_kmiter这个c类型的函数引起的,于是百度查看先关知识,原来是没有编译vgg_kmiter引起的错误,并且在此指出:由于高matlab版本不再支持mxCrea...