擅长:python、mysql、java
<p>做这件事没有绝对正确的方法。下面只是一种方法。在</p>
<p>让我们从假设/声称人们通常倾向于走直线开始。所以你可以用<a href="http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm" rel="nofollow">Ramer-Douglas-Peucker algorithm</a>用一小段线段来估计人的预期路径。(有一个<a href="https://github.com/sebleier/RDP/" rel="nofollow">Python implementation of the algorithm here</a>。)</p>
<p>然后生成<a href="http://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line" rel="nofollow">distances of the true data points from the line segments</a>。在</p>
<pre><code>timeseries = []
for point in points:
timeseries.append(
min((distance between point and segment)
for segment in segments))
</code></pre>
<p>这个距离数组是一个时间序列。然后你可以用时间序列的<a href="http://en.wikipedia.org/wiki/Root_mean_square" rel="nofollow">root-mean-squared</a>作为振幅的度量,然后用<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.fftpack.rfft.html#scipy-fftpack-rfft" rel="nofollow">Fourier transform</a>来找到它的主频(或频率)。在</p>