def transform_to_same_length(x, n_var, max_length):
n = x.shape[0]
# x的形状(n,var,length)
# the new set in ucr form np array
ucr_x = np.zeros((n, max_length, n_var), dtype=np.float64)
# loop through each time series
for i in range(n):
mts = x[i]
curr_length = mts.shape[1]
idx = np.array(range(curr_length))
idx_new = np.linspace(0, idx.max(), max_length)
for j in range(n_var):
ts = mts[j]
# linear interpolation
f = interp1d(idx, ts, kind='cubic')
new_ts = f(idx_new)
ucr_x[i, :, j] = new_ts
return ucr_x