我正在努力理解quiver
函数,而且,它究竟是什么规定了箭袋的起源、方向和长度。我理解它与plotv
不同。
例如,代码quiver(0,1); axis equal
生成:
从[1,1]
开始,到[1,2]
结束,长度为2。我不太清楚MATLAB是怎么计算出来的?
其次,如果我提供一个向量,如果输入如quiver([0 0 0 0],[1 2 3 4])
,我得到:
所以每一个看起来都是从一个整数值开始的,但是我还是不确定MATLAB是如何推导出长度和方向的?
最后,我试图绘制一个正弦波,从原点开始,到y轴上的正弦波值结束。
x = linspace(0,2*pi,100);
y = sin(x);
h = quiver(x(1:3:end),y(1:3:end));
为什么箭筒的Angular 是向前的?我如何规范化箭头使它们大小相同?我尝试访问MaxHeadSize
属性,但它只对最大的箭头有效。
有人能描述一下这是怎么回事吗?
1条答案
按热度按时间t0ybt7op1#
quiver
接受x, y, u, v
或u, v
。您似乎在使用后一种情况,即只提供x和y方向上的向量长度。在这种情况下,Matlab在xy平面上的等间距点(恰好从(1,1)开始)上绘制 Flutter 图。如果您不希望这样,请考虑将x
和y
数据也提供给 Flutter 函数,即quiver( 0, 0, 0, 1 )
。'AutoScale', 'off'
搭配箭号函数,即x
分量。'MaxHeadSize'
选项来满足你的需要。(更多信息请参见箭袋属性参考。)除此之外,我发现this answer使用注解来获得想要的效果。