【发布时间】:2014-01-19 08:14:03
【问题描述】:
我在 plot3 中遇到了奇怪的问题。我得到 (p, theta, phi) 并将它们转换为笛卡尔坐标。我的计算基于下图。
[p theta phi] = getmeasurement(x, y, z);
x' = p*cos(theta)*sin(phi);
y' = p*sin(theta)*sin(phi);
z' = p*cos(phi);
现在,我有 (x', y', z') 但如果我使用
plot3(x', y', z')
我得到相反的结果。我必须用 x' 切换 z' 以获得正确的结果,如下所示
plot3(z', y', x')
为什么会这样?
【问题讨论】:
-
尝试改变视角,查看帮助视图;
-
并避免使用 x',而是使用 x2。 '在matlab中有特殊含义(转置)
-
@Guddu,感谢您的建议。我知道转置只是我想更清楚。我还要打印另一个数据,如何自定义特定数据以便将所有数据绘制在一个图表中?
-
如果您的 x,y,z 是向量(数据点序列),例如 2 个点
x=[1 2]; y=[2 3]; z=[10 20];。要在 3D 中绘制一条线加入它们,请执行plot3(x,y,z)。要单独绘制点,plot3(x,y,z,'+'),其中+是一个符号。要逐个绘制每个点(就像在循环中一样)使用hold on就像plot3(x(1),y(1),z(1),'+'); hold on; plot3(…)您只需要在图中使用一次hold on。 -
我要问的是我有三个 3D 数据,每个数据都有 x、y 和 z 数据作为点。我对前两个没有问题。然而,最后一个需要修改以匹配前两个数据(不是数据,而是数据的绘制方式)。正如我在帖子中提到的那样,我可以做到这一点,但它似乎并不直观。