理解MATLAB的 Flutter 图

jckbn6z7  于 2022-11-24  发布在  Matlab
关注(0)|答案(1)|浏览(126)

我正在努力理解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属性,但它只对最大的箭头有效。
有人能描述一下这是怎么回事吗?

t0ybt7op

t0ybt7op1#

    • Ans 1:**从Matlab的quiver文档中,quiver接受x, y, u, vu, v。您似乎在使用后一种情况,即只提供x和y方向上的向量长度。在这种情况下,Matlab在xy平面上的等间距点(恰好从(1,1)开始)上绘制 Flutter 图。如果您不希望这样,请考虑将xy数据也提供给 Flutter 函数,即quiver( 0, 0, 0, 1 )
    • 回答2:**矢量的方向和长度由您提供。图中矢量的长度通过[Ref:quiver properties]。如果您不想这样做,请使用'AutoScale', 'off'搭配箭号函数,即
quiver( [0, 0, 0, 0], [1, 2, 3, 4], 'AutoScale', 'off' )
    • Ans 3:**正弦图中的矢量向前倾斜,因为您在shivet命令中为矢量提供了一个非零的x分量。
x = linspace( 0, 2*pi, 20 );    % x-coordinates of the vectors' origin.
y = zeros( size( x ) );         % y-coordinates of the vectors' origin.
u = zeros( size( x ) );         % x-components of the vectors.
v = sin( x );                   % y-components of the vectors.

h = quiver( x, y, u, v, 'AutoScale', 'off' );
    • Ans 4:**遗憾的是,没有这样的选项来拥有相同大小的箭袋箭头。你所能做的就是修改'MaxHeadSize'选项来满足你的需要。(更多信息请参见箭袋属性参考。)除此之外,我发现this answer使用注解来获得想要的效果。

相关问题