Python de corrélation croisée

J'ai une paire de tableaux 1D (de longueurs différentes) comme suit:

data1 = [0,0,0,1,1,1,0,1,0,0,1]
data2 = [0,1,1,0,1,0,0,1]

Je voudrais obtenir le max de corrélation croisée de la série 2 en python. Dans matlab, les xcorr() fonction sera de retour, il est OK

J'ai essayé les 2 méthodes suivantes:

  1. numpy.correlate(data1, data2)
  2. signal.fftconvolve(data2, data1[::-1], mode='full')

Les deux méthodes de me donner les mêmes valeurs, mais les valeurs que j'obtiens de python sont différents de ce qui vient de matlab. Python me donne des entiers valeurs > 1, alors que matlab donne réelle corrélation entre les valeurs 0 et 1.

J'ai essayé de normaliser les 2 tableaux premier (valeur moyenne/écart type), mais la corrélation croisée des valeurs que je reçois sont des milliers qui n'a pas l'air correct.

Matlab vous donnera également un décalage de la valeur à laquelle la corrélation croisée est le plus grand. Je suppose que c'est facile de faire cela à l'aide d'indices mais quel est le moyen le plus approprié de le faire si mes tableaux contiennent 10 de milliers de valeurs?

Je voudrais imiter le xcorr() fonction matlab a des idées sur comment je pourrais faire ça en python?

S'il vous plaît poster réelles et les valeurs attendues à partir de matlab et les 2 libs python
Reportez-vous sur cette stackoverflow.com/questions/6991471/...
J'ai vu ce thread il y a un moment et ont essayé toutes ces méthodes. numpy.corréler me donne des valeurs de n'importe où de 1 à 500. et matplotlib est xcorr() nécessite les 2 tableaux 1D être de la même longueur (la mienne ne l'est pas)
"Si x et y ne sont pas de la même longueur, le plus court vecteur est complété par des zéros à la longueur de la plus longue vecteur." À partir de Matlab xcorr de la documentation. Essayez peut-être qu'avec le matplotlib est xcorr ?

OriginalL'auteur Simon | 2014-09-14