在Matlab中使用quiver函数进行绘制矢量图时出现以下图像:
quiver是生成矢量图的函数,quiver(x,y,u,v)是在(x,y)处显示(u,v)这个矢量。
经过查找,这种情况的原因一种是版本不对;另一种就是x轴,y轴的量级不对。
从这个图来看,x轴的间隔是10,而y轴是0.1,这个比例大小相差过大。
再举一个栗子
x=[0:75]';
y=rand(76,1)*10000;
u=rand(76,1);
v=-0.5+rand(76,1);
plot(x,y);
hold on;
a=max(v)./max(y);
v=v./a;
b=max(u)./max(x);
u=u./b;
quiver(x,y,u,v,'MaxHeadSize',0.1);
生成的图像是类似上图
x=[0:75]';
y=rand(76,1)*100;
u=rand(76,1);
v=-0.5+rand(76,1);
plot(x,y);
hold on;
a=max(v)./max(y);
v=v./a;
b=max(u)./max(x);
u=u./b;
quiver(x,y,u,v,'MaxHeadSize',0.1);
改动参数后生成图像如下
所以这类情况可以理解为x与y方向的数据量级差距过大
那么解决办法为调整量级,类似上方代码:
x轴方向数据是[0,75],而y轴方向是[0,10000],那么对y轴方向进行缩小,缩到[0,100]。满足量级要求。
需要注意的就是:
1.y轴对应的矢量v也需要进行相同的放缩。
a=max(v)./max(y);
v=v./a;
此处代码进行的就是这样的操作。
2.这里对y轴方向数据进行处理后,数据点的矢量方向实际上发生了一定的偏移。
简单的示意图