我有一个数据集,我想绘制为颤抖阴谋。该集合包含以椭圆形表示的恒星参数(中心,长轴长度,短轴长度,长轴的方位(角度)),我想绘制为具有颤抖图的矢量场。数据(轴长和轴承)很嘈杂,我需要平滑它。虽然平滑对轴长度工作正常,但我被卡住的角度平滑。这里的问题是任何椭圆在视觉上(和我的目的)都等价于一个椭圆旋转了180度,椭圆的角度分布在0到180的范围内。这个范围的大部分平滑工作很好,除了角度接近于0并且接近180°的角部情况。虽然角度接近于0且接近180度的两个椭圆看起来在视觉上相似,但它们的“平均”具有90度的角度,这显然是错误的。查看平滑过程中未平滑数据(代表这些恒星的白色星星和绿色箭头)的示例。要清楚我不需要箭头的方向,并且在我最后的情节中,我隐藏了箭头。我只需要它的角度/方位,两个角度179.9和0.1的平均值需要是180或0但不是90. 任何想法如何解决这个问题? 如何平滑颤动阴谋的嘈杂的矢量场
回答
两个选项:
首先,您可以将您的角度转换成int和扩大到了全范围的整型,并采取溢出的优势。例如:
np.astype((ang-180.)/360.*65536, 'uint16')
如果你的平滑功能简单,没有它比较运营商和在我看来一个讨厌的黑客,这可能工作。第二,旋转你的角度一些任意的数量,并做多次平滑,挑选最佳答案。
我会平滑原来的,然后旋转120,平滑,旋转240,平滑。然后取消旋转,然后只保留同意的角度。当然,这带来了3倍以上的性能提升。
编辑: 第三种选择:平滑矢量分量。
谢谢保罗,第一个出来是因为平滑是通过局部回归完成的,并且不起作用。我认为第二个可以工作,如果我通过15度旋转角度三次,将它们旋转回中间位置。仍然这种方法是不是很优雅。我也在想第三种方法。但问题是相似的,矢量(0.999,0)和(-0.999,0),同时具有相同的方向(用于我的目的)将平均为(0,0) – 2015-04-05 14:45:43
如果你想要优雅,你可能需要修补用平滑算法。以下是关于如何比较循环数的一些讨论:https://groups.google.com/forum/#!topic/comp.lang.python/6grSponecHw如果numpy的数据类型为“cyclic”,那将会很好,并覆盖'__add__','__sub__'等等以始终给出所需的角度结果。必须有一些原因,它没有完成..我已经遇到了这个问题的角度无数次,并一直不得不'var [var> 180] - = 180'出我的出路。 – Paul 2015-04-05 15:43:03
- 1. matlab中的着色颤动矢量
- 2. 如何在Matlab的阴谋
- 3. 使用android阴谋的XY阴谋
- 4. 批量修剪嘈杂的图像
- 5. 三元阴谋只有阴谋角
- 6. 在R中使用阴谋的3D阴谋的下降线?
- 7. 如何放大pyqtgraph的阴谋
- 8. 的Python如何为matplotlib阴谋
- 9. ANTLR嘈杂的数据流
- 10. 阴谋破坏
- 11. 添加额外的阴谋剧情阴谋蟒蛇
- 12. 在矢量上滑动矢量的算法
- 13. ItextSharp平滑背景阴影
- 14. 用于3D阴谋的XTick
- 15. Matlab的阴谋4个vecotrs
- 16. 指向箭头的阴谋
- 17. Netlogo阴谋的Y轴
- 18. 用GNU绘制一个复杂的函数阴谋
- 19. 在核心阴谋,我如何让我的轴浮动?
- 20. matplotlib中的3D矢量场
- 21. 阴谋分裂特征向量
- 22. Achartengine:反向阴谋
- 23. 如何删除标签的阴影添加到馅饼阴谋使用核心阴谋libraru在iphone sdk
- 24. 在场景中禁用水平滑动
- 25. 熊猫的阴谋给出了正确的阴谋,而matplotlib给出的错误
- 26. 剧情矢量场
- 27. 如何绘制椭圆体与阴谋
- 28. Gnuplot:如何从矢量场中删除一定数量级以下的矢量?
- 29. 使用颤动在matlab中绘制矢量函数
- 30. 熊猫阴谋阴谋没有显示图
我会对数据进行三角测量,并使用波前传播来选择模数180的“最佳”表示。如果您可以共享数据集,我将尝试发布答案。 – GBy 2015-04-05 16:56:01