2017-08-11 6 views
2

J'ai un très grand ensemble de données de la forme (T, N) et je voudrais calculer la fonction d'auto-corrélation en Python comme dans numpy.correlate: (!)Comment calculer efficacement la fonction d'autocorrélation des données multidimensionnelles?

c[k] = sum_n sum_t a[t, n] * a[t+k, n] 

mais en sommant sur tous les échantillons N et sans utiliser une boucle for Un calcul selon le mode 'valide' serait suffisant. Cependant, cette fonction ne permet que des tableaux à une dimension. Y a-t-il un moyen rapide de le faire?

+0

Que diriez-vous de [scipy.signal.correlate2d] (https://docs.scipy.org/doc/scipy-0.15.1/reference/generated/scipy.signal.correlate2d.html)? – crazyGamer

+0

Malheureusement, cette fonction calcule toutes les corrélations croisées, même entre différents échantillons. Cependant, je voudrais calculer la corrélation uniquement dans la direction T tout en sommant sur la direction N. – Benti

+0

Que diriez-vous de correlate1d et appliquez-vous le long de chaque ligne: https://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.ndimage.filters.correlate1d.html? – Divakar

Répondre

0

J'ai réalisé, cela a été demandé before. Effectuer une transformation de Fourier et ensuite calculer le spectre de puissance peut faire l'affaire!