atand结果分布上的奇怪模式

时间:2015-08-17 13:46:36

标签: matlab rounding histogram angle

我有粒子轨迹,在图像序列(20个粒子,3500帧)上跟踪它们后获得。我需要获得这些粒子的速度矢量角度分布。粒子在每个帧上的位置存储在矩阵tracksXtracksY中,每个3500x20两倍。这是我正在使用的代码:

speedX = diff(tracksX);
speedY = diff(tracksY);
angles = atand(speedY./speedX);
anglesh = angles(:);
figure(1); hist(anglesh,360);

然而,我在直方图上得到一个奇怪的对称图案,在[-0.5,0] bin中有一个巨大的峰值,在[0,0.5] bin中有零角度。 我没有足够的代表来添加图片,所以这里有一个链接Weird distribution figure

是否会因为Matlab执行的某些舍入而发生?怎么解决? 粒子运动有点随机,有朝X方向移动的趋势,相当于0° - 20°的箱子,因此我非常怀疑这种模式可能出现在初始数据中。

1 个答案:

答案 0 :(得分:0)

让我猜一下:位置以像素为单位,粒子在时间点之间不会移动很多像素?

您所看到的是一堆离散化工件。

  • 峰值为0,反映静止或向右移动的像素
  • +/- 45度和90度的峰值反射粒子向上/向下或沿对角线移动一个像素。
  • 移动更多的峰值,例如2到右边,一个到顶部

根据您的数据,您可能能够执行一些粒子位置拟合来估计子像素定位(尽管您应该小心设置它以避免像素锁定),或者您可以人为地使用更长的时间步骤(例如,采用第1至第4,第2至第5,第3至第6时间点之间的差异来制作直方图),使这看起来更加明智。