【发布时间】:2014-07-17 19:24:29
【问题描述】:
我昨天问了一个类似的问题,关于如何在使用atan2d 时避免数据“跳跃”。该函数在 -180 到 180 的范围内运行,如下所示:
当一个数字超过 180 时,它会直接变为 -180,从而使线图 very ugly and not intuitive 可以读取。我使用unwrap 来解决这个问题是suggested,我认为确实如此。然而,今天我遇到了一个看起来像这样的图表:
.
跳转是固定的,但在它的位置有一行被翻译到顶部。如果您绘制这三条线,它们会非常接近,就像它们应该的那样(-180 和 180 仍然是同一个位置,就像 atan2d 图表一样)。我希望我的图表能够反映角度的真实情况 - 非常接近。
根据 David K 的要求,这是我用来计算其中一条线的角度的代码。 rec,ret 是一组有序的坐标,recx 和 recy 分别是它们的 x 和 y 值。然后我将 theta_r 的结果绘制到一个常规图形上。
for i=1:length(recx)
dy(i,1)=((recy(i)-rety(i)));
dx(i,1)=((recx(i)-retx(i)));
sloperight(i,1)=(dy(i)/dx(i));
theta_r(i,1)=atan2d(dy(i),dx(i));
end
theta_r = 180/pi * unwrap(theta_r * pi/180);
我的问题
如何使展开功能仅在一个方向展开(使所有角度相对于圆上的顺时针方向或逆时针方向)而不是在最近的方向展开?或者我应该使用unwrap 以外的其他东西来使图表看起来不错?
【问题讨论】:
-
如果您发布制作图表的 MATLAB 代码(包括使用
unwrap的部分),可能更容易找出问题所在。例如,从文档来看,unwrap似乎会消除一维数组中的跳跃,但不会消除二维数组的列之间的跳跃。