如何在Octave中绘制向量?

3
我想制作一个程序,它可以将两个矢量相加并将它们的和一起绘制出来。但它们必须是位置矢量。
我尝试创建 v1=[0;2]v2=[1;3],但使用 plot 显示它们会导致许多散点。
如何指定矢量的起始位置,例如使 v1v2 从原点开始?

"they are all over the place" 是一个相当不精确的描述。请发布一个 [mcve],包括您的代码、结果图和期望的结果。 - beaker
2个回答

1

我通常使用quiver函数来完成你所描述的操作,其目的是绘制矢量场。你的示例可以用以下方式绘制:

   xx=[0;2];
   yy=[0;0];
   quiver(xx,yy,[0;1],[2;3],0,"linewidth",4);axis equal;xlim([-4 4]);ylim([0 5]);grid on;

它产生以下输出:

enter image description here

向量的起点由变量xxyy指定,具体方式如下:第n个向量的起点由[xx(n,1);yy(n,1)]给出(查看help meshgrid以获取有关此信息。基本上,网格是定义函数的域的一种方法,在这里它恰好是一个向量场)。


这对于向量场非常有用,但不适合裸向量(例如像它们实际的形式绘制向量)。向量场中的向量被缩放(它们的大小被缩放),它们的“视觉长度”不反映它们的实际长度,OP想要演示向量加法,因此这不是一个合适的解决方案。(考虑情况:quiver([0], [0], [5], [4])quiver([0; 0], [0; 0], [5; 2], [4; 3]);,看看向量[5; 4]如何在将另一个向量([2; 3])作为quiver的参数添加时被缩小)。 - Cromax

0

这里是在Octave中绘制数学向量的示例:

clf
xs=[0 0 1 5 0]
ys=[0 0 7 1 0]
xe=[5 1 5 1 6]
ye=[1 7 1 7 8]
q=1;
h=quiver(xs(q),ys(q),xe(q),ye(q), 0,'b');
hold on
set (h, "maxheadsize", 0.033);
q=3;
h=quiver(xs(q),ys(q),xe(q),ye(q), 0,'--b');
set (h, "maxheadsize", 0.033);
q=2;
h=quiver(xs(q),ys(q),xe(q),ye(q), 0,'r');
set (h, "maxheadsize", 0.033);
q=4;
h=quiver(xs(q),ys(q),xe(q),ye(q), 0,'--r');
set (h, "maxheadsize", 0.033);
q=5;
h=quiver(xs(q),ys(q),xe(q),ye(q), 0,'g');
set (h, "maxheadsize", 0.033);
axis("square")
grid on
hold off

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接