У меня есть пара 1D массивов (разной длины), как следующее:кросскорреляция Python
data1 = [0,0,0,1,1,1,0,1,0,0,1]
data2 = [0,1,1,0,1,0,0,1]
Я хотел бы получить максимальную взаимную корреляцию серии 2 в питона. В MATLAB, функция xcorr()
будет возвращать его OK
Я попытался следующие 2 метода:
numpy.correlate(data1, data2)
signal.fftconvolve(data2, data1[::-1], mode='full')
Оба метода дают мне одни и те же ценности, но ценности Я получаю от python отличные от того, что выходит из Matlab. Python дает мне целые значения> 1, тогда как matlab дает фактические значения корреляции от 0 до 1.
Я попытался нормализовать сначала 2 массива (среднее значение/SD), но значения взаимной корреляции, которые я получаю, находятся в тысячах который не кажется правильным.
Matlab также даст вам значение запаздывания, при котором кросс-корреляция является наибольшей. Я предполагаю, что это легко сделать с помощью индексов, но что является наиболее подходящим способом для этого, если мои массивы содержат 10 тысяч значений?
Я хотел бы подражать функции xcorr(
), что у matlab есть любые мысли о том, как я буду делать это в python?
Пожалуйста, пост фактические и ожидаемые значения от MATLAB и 2 питона LIBS –
Приведи это http://stackoverflow.com/questions/6991471/вычислительная кросс-корреляционная функция –
Я видел эту ветку некоторое время назад и пробовал все эти методы. numpy.correlate дает мне значения от 1 до 500. и xcorr() требует, чтобы 2 1D-массивы имели одинаковую длину (мины не равны) – Simon