TDA - Скользящее окно на нескольких сигналах - PullRequest
0 голосов
/ 30 июня 2019

Я пытаюсь определить функцию в Python, которая выполняет скользящее окно для нескольких сигналов (и использую полученный SW в качестве входа для Ripser).Я хочу добиться этого (примеры с синусами, извините за плохие навыки рисования) изображение, описывающее мою цель

У меня 14 сигналов по 10000 точек, поэтому матрица 14 x 10000 иЯ хочу выполнить скользящее окно для всех сигналов, чтобы они каким-то образом коррелировали, сгруппировав все точки для всех сигналов в каждом окне, учитывая его размерность.

Сначала я попробовал использовать код, созданный Кристопером Трали, но это дает мне ошибку в измерении X, так что теперь я пытаюсь изменить его.

def slidingWindowMultipleSignals(I, dim, Tau, dT):
'''
Performs the sliding window on multiple signals.
Author: Christopher J. Tralie
'''
N = I.shape[0] #Number of frames
P = I.shape[1] #Number of pixels (possibly after PCA)
pix = np.arange(P)
NWindows = int(np.floor((N-dim*Tau)/dT))
X = np.zeros((NWindows, dim*P))
idx = np.arange(N)
for i in range(NWindows):
    idxx = dT*i + Tau*np.arange(dim)
    start = int(np.floor(idxx[0]))
    end = int(np.ceil(idxx[-1]))+2
    if end >= I.shape[0]:
        X = X[0:i, :]
        break
    f = scipy.interpolate.interp2d(pix, idx[start:end+1], I[idx[start:end+1], :], kind='linear')
    X[i, :] = f(pix, idxx).flatten()
return X

Проблема в том, что я не знаю, что нужно изменить, чтобы сделать то, что я описал с изображением.Может ли кто-нибудь указать мне правильное направление?

...