それ自体がポイントのリストであるさまざまな試行の軌跡のリストがあります...
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) の vec と 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) 時系列から時間を抽象化しようとしています。したがって、問題は、新しい値を導入する場所と、値を挿入するための「サイト」を選択する基準によって、値を推定する方法が重要ではなくなったようです...