不正确的 GNU Octave 3D 图
Incorrect GNU Octave 3D Plot
我尝试使用 GNU Octave 在 3D 中绘制四个点。所以我首先定义它们。
a = [1 2 3];
b = [-1 0 -1];
c = [5 4 3];
d = [1 0 -2];
接下来,我尝试了 plot3(a,b,c,d, 'o')
但我很快就放弃了这个想法。相反,我宁愿使用两次 plot3
函数将其除以 hold on
.
plot3(a,b,'o')
hold on
plot3(c,d);
事情是这样的:
该图描绘的不是四个点,而是共面的 6 个点。
谁能解释一下我做错了什么?
正如 the documentation 非常清楚地指出的那样,函数的输入是 x
、y
和 z
坐标。如果使用数组,则会为这些向量中的每个对应点创建一个点。在您的例子中,您提供给 plot3
的每个输入都有 三个元素 ,因此将创建 三个点 。由于您像这样调用 plot3
两次,结果将是 6
分。
plot3
的正确用法是将所有 x
值放在一个数组中,y
值放在一个数组中, 和数组中的 z
个值。
plot3([a(1), b(1), c(1), d(1)], [a(2), b(2), c(2), d(2)], [a(3), b(3), c(3), d(3)], 'o')
或者更简洁
points = [a; b; c; d];
plot3(points(:,1), points(:,2), points(:,3), 'o');
如果您阅读 plot3
的帮助文本,您会发现:
-- plot3 (X, Y, Z)
-- plot3 (X, Y, Z, FMT)
-- plot3 (X, CPLX)
-- plot3 (CPLX)
您正在使用 plot3 (X, CPLX)
的形式调用 plot3
,其中表示:
If only two arguments are given, as
plot3 (X, CPLX)
the real and imaginary parts of the second argument are used as the
Y and Z coordinates, respectively.
你应该做的是以 plot3 (X, Y, Z, FMT)
的形式调用 plot3
。此外,您只需调用 plot3
即可完成所有这些操作,无需调用 hold on
并添加新点。像这样:
a = [ 1 2 3];
b = [-1 0 -1];
c = [ 5 4 3];
d = [ 1 0 -2];
p = [a; b; c; d];
plot3 (p(:,1), p(:,2), p(:,3), "o")
我尝试使用 GNU Octave 在 3D 中绘制四个点。所以我首先定义它们。
a = [1 2 3];
b = [-1 0 -1];
c = [5 4 3];
d = [1 0 -2];
接下来,我尝试了 plot3(a,b,c,d, 'o')
但我很快就放弃了这个想法。相反,我宁愿使用两次 plot3
函数将其除以 hold on
.
plot3(a,b,'o')
hold on
plot3(c,d);
事情是这样的:
谁能解释一下我做错了什么?
正如 the documentation 非常清楚地指出的那样,函数的输入是 x
、y
和 z
坐标。如果使用数组,则会为这些向量中的每个对应点创建一个点。在您的例子中,您提供给 plot3
的每个输入都有 三个元素 ,因此将创建 三个点 。由于您像这样调用 plot3
两次,结果将是 6
分。
plot3
的正确用法是将所有 x
值放在一个数组中,y
值放在一个数组中, 和数组中的 z
个值。
plot3([a(1), b(1), c(1), d(1)], [a(2), b(2), c(2), d(2)], [a(3), b(3), c(3), d(3)], 'o')
或者更简洁
points = [a; b; c; d];
plot3(points(:,1), points(:,2), points(:,3), 'o');
如果您阅读 plot3
的帮助文本,您会发现:
-- plot3 (X, Y, Z)
-- plot3 (X, Y, Z, FMT)
-- plot3 (X, CPLX)
-- plot3 (CPLX)
您正在使用 plot3 (X, CPLX)
的形式调用 plot3
,其中表示:
If only two arguments are given, as
plot3 (X, CPLX)
the real and imaginary parts of the second argument are used as the
Y and Z coordinates, respectively.
你应该做的是以 plot3 (X, Y, Z, FMT)
的形式调用 plot3
。此外,您只需调用 plot3
即可完成所有这些操作,无需调用 hold on
并添加新点。像这样:
a = [ 1 2 3];
b = [-1 0 -1];
c = [ 5 4 3];
d = [ 1 0 -2];
p = [a; b; c; d];
plot3 (p(:,1), p(:,2), p(:,3), "o")