【发布时间】:2013-04-26 09:49:57
【问题描述】:
我有一个不同试验的轨迹列表,它们本身就是一个点列表......
trajectories = [[(x,y),(x,y), ...], [(x,y), ...], ...]
点数因试验而异。
最终目标是在试验中绘制平均轨迹 +/- SEM(平均值的标准误差)。
据我所知,我应该得到最长的轨迹,并为每个剩余的轨迹添加“分辨率”到其他向量,使它们的长度相同,所以像这样:
#find the maximum length
max_len = len(trajectories[0])
longest = []
for t in trajectories:
if len(t) > max_len:
max_len = len(t)
longest = t
# now transform the other vectors I assume using the longest vector or the length of this vector
newTrajectories = []
for i,t in enumerate(trajectories):
newTrajectories[i] = resample(t, longest or max_len, or something similar!!)
是否有一个函数给出 len X 的元组 (x,y) 和另一个 len Y 的 vec,其中 X>Y 在正确的位置向 Y vec 添加点 (x,y),例如使用上一个和下一个点还是中位数?
编辑: 我能想到的最简单的例子是使用 2 个轨迹向量:
vec_one = [(2,4),(3,5),(1,6)]
vec_two = [(2,4), (1,6)]
它们都从 x=2, y=4 开始,到 x=1, y=6 结束 但是 vec_one 更长(花费了更多时间)。 我认为为了能够对轨迹进行平均,vec_two 需要更长,因此我需要以某种方式推断缺失的 x,y 位置的值。
我一直在看 scypi.interpolate 模块的 splprep、splrep 和 splev,但恐怕我还不太了解。
Edit2:实际上,我试图从 (x,y) 时间序列中抽象出时间。所以问题变成了在哪里引入新值以及我选择一个“站点”来插入值的标准,我推断值的方式现在似乎不那么重要了......
【问题讨论】:
-
“平均轨迹 +/- sem 试验”是什么意思。您的意思是“平均轨迹+/-总和”吗?如果需要平均轨迹,+/- 是什么意思?
-
抱歉 SEM = 平均值的标准误差 :)
-
那么轨迹坐标怎么样.. x,y 坐标是整数值吗?对于给定的轨迹,您是否有每个 x
的轨迹坐标 -
X 和 y 是浮点数,它们是我在 640x480,30fps 视频中跟踪的像素分布的质心。我不明白您所说的“x
-
基本上我假设您需要在计算 SEM 之前找到平均轨迹。这是正确的吗?为了找到平均轨迹,您应该要求对每个 x 值的 y 坐标进行平均。 x 的范围应该是 [0, max_range]。为了能够在每个 x 处找到 y 的平均值,您需要为所有小于范围的 x 提供轨迹坐标。我希望这让我更清楚。让我知道我的理解是否正确。
标签: python interpolation