• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB绘制向量图

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

对于如何在二维平面中绘制带箭头的向量,先给出一个实例:

clear;

clc;

A=[4,5];

B=[-10,0];

C=A+B;

M=[A;B;C];

X=[M(:,1);A(1)];

Y=[M(:,2);A(2)];

plot(X,Y,\'r\');

axis ([-12 6 -1 6])

grid on;

text(A(1),A(2),\'A\');%在A点(即[4,5])标注文字’A’

text(B(1)-0.2,B(2)-0.2,\'B\'); %在B点(即[-10,0])附近标注文字’B’

text(C(1),C(2)+0.2,\'C\'); %在C点附近标注文字’C’

scale=1;

hold on;

quiver(A(1),A(2),B(1)-A(1),B(2)-A(2),scale);

hold on;

quiver(B(1),B(2),C(1)-B(1),C(2)-B(2),scale);

hold on;

quiver(A(1),A(2),C(1)-A(1),C(2)-A(2),scale);

此例摘自http://zhidao.baidu.com/link?url=vgyvTG1RRebCaOBqE1hn9lCQWAsSJ12V94OdlX6c7A-MyCpyp80OJBEgONuDB01eLOHGIKaVEl3sLdJHfbIk2q

 

上例中重点就是quiver函数了,下面讲解一下此函数的用法:

摘自http://wenku.baidu.com/view/e2c2d5b1b9d528ea81c779bb.html

quiver是用来绘制二维方向箭头图(quiver3是用来绘制三维方向箭头图)。

quiver图显示在点(X,Y)处用箭头显示对应于分量(U,V)的速度向量。

quiver(x,y,u,v)在指定点绘制速度向量场。参数x,y,u,v为同维向量或矩阵。X,y表示指定点坐标,u,v表示有相应的速度分量

quiver(u,v)绘制在x-y平面上均匀分布的速度向量图

quiver(u,v,scale)绘制指定扩展箭头大小的速度向量图。参数scale为标量,表示扩展箭头大小比例因子

quiver(u,v,LineSpec)绘制LineSpec指定线条颜色或者线形的速度向量图,并在向量图上画出记号

 

参数LineSpec的取值

颜色y  m  c  r  g  b  w  k

样式.  o  x  *  +  s  d  ^  v  <  >  p  h

类型-  :  -.  --

 

quiver(u,v, LineSpec ,‘filled’)绘制由参数LineSpec指定线条颜色或者线形的速度向量图,并对用LineSpec指定的记号进行填充

quiver(x,y,u,v):在每个由X和Y中相应元素对指定的坐标位置处绘制向量,向量以箭头来表示。矩阵X、Y、U和V必须具有相同阶数并且包含相应的位置和速度分量。如果X和Y不是矩阵,MATLAB将扩展X和Y,这个扩展过程等价于调用meshgrid函数并由向量产生矩阵,即[x,y] =meshgrid(x,y); 在这种情况下,下述语句为真:
length(x) = n 且length(y) = m, 其中 [m,n] = size(u) = size(v).
向量X对应于U和V的列,向量Y对应于U和V的行。

 

例1

[X,Y,Z]=peaks(16);

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

contour(X,Y,Z,10)

hold on

quiver(X,Y,DX,DY)

hold off

例2

[x,y,z]=peaks(20);%通过peaks函数产生x,y,z矩阵坐标

[Dx,Dy]=gradient(z,0.1,0.1);%对z矩阵坐标求梯度

quiver(x,y,Dx,Dy)%绘制图形

常见问题1:

用quiver画出来的图,最大化保存时总是好大,放在文章里不好看,也占地方,不最大化保存时,因为图太小,箭头就看不清楚,有没有方法将箭头变大,然后放在小图里也能看清楚呢?

解决方法:

改变quiver函数中的scale参数就可以了,例如quiver(x,y,2),就变成两倍。

 

常见问题2:

quiver(x,y ,u ,v)表示在坐标(x,y)处画出矢量(u,v),但是试了以后发现所画的矢量和矢量(u,v)并不完全相同,如quiver(0,0,1,1)所画的箭头直到(0.9,0.9)处,不是应该到(1,1)处吗?

问题原因:

这是对于quiver(x,y,u,v,scale),scale的默认值可能是0.9,不是1)。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi线程简介---Create及其参数、Resume、Suspend发布时间:2022-07-18
下一篇:
MATLAB小常识3 - zannier发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap