我有以下两个时间序列信号:
import numpy as np
x = np.cos(2*np.pi*np.power(3*(np.linspace(1, 1000, 1000))/1000, 2))
y = np.cos(2*np.pi*(9*(np.linspace(1, 399, 399))/400))
所以x
和y
的形状分别是(1000,)
和。(399,)
我想用fastdtw
python 包做以下两个动态时间扭曲:
x
是参考信号(较长的信号):
我想映射y
到更长的信号形状 ( x.shape=(1000,)
)。它由以下代码完成:
from scipy.spatial.distance import euclidean
from fastdtw import fastdtw
distance, path = fastdtw(x, y, dist=euclidean) # x:reference signal
inds = [ind[1] for ind in path]
y_warped = y[inds]
在这种情况下,上面的代码可以正常工作并映射y:(399,)
到y_warped:(1000,)
.
y
是参考信号(较短的信号):
我想映射x
到较短的信号形状 ( y.shape=(399,)
)。
from scipy.spatial.distance import euclidean
from fastdtw import fastdtw
distance, path = fastdtw(y, x, dist=euclidean) # y:reference signal
inds = [ind[1] for ind in path]
x_warped = x[inds]
但在这种情况下,我x_warped
的形状与 相同x
,但我希望得到x.shape=(399,)
。如何将较长的信号变形为较短的信号?提前致谢!