Кодирование автокорреляционной функции правильно в Python - PullRequest
1 голос
/ 01 апреля 2019

У меня есть два набора данных, каждый из которых имеет длину 325 элементов. Один - данные вдоль оси X, другой - данные вдоль оси Y. Вместе Q [0] и Q [1] составляют Q.

Уравнение должно быть примерно таким:

(Q (i + deltai, j) - среднее (Q_i, j)) x (Q_i, j - среднее (Q_i, j)) / (Q_i, j - среднее (Q_i, j)) ^ 2

Какая функция автокорреляции. Я хочу перебрать i + delta i для первой функции, просматривая данные в Q. Я начал писать два цикла for для этого, а затем попробовал np.correlate. В конце концов, я запутался, будучи новичком в python, и почувствовал, что последние несколько дней гонялся за хвостом.

Код, который я пробовал:

I = npzfile['i']
Q = npzfile['q']
U = npzfile['u']

nxside = Q.shape[0]
nyside = Q.shape[1]

for i in numpy.arange(0,nxside-1,1):
     result = numpy.correlate(Q[0], Q, mode='full')
     result2 = (result/float(result.max()))
     plt.plot(result2, '-')

 for i in numpy.arange(0,nxside-1,1):
     for j in numpy.arange(0, nyside-1,1):

# #       # J= (i)
# #       # # L = ()
# #       # # print L
     M = (Q - numpy.mean(Q))
     B = (Q[i] - numpy.mean(Q))
     K = (Q - numpy.mean(Q))**2
     Z = numpy.abs(M*B)/numpy.abs(K)
#    print numpy.abs((M*B)/K)
     plt.plot(Z, 'ro')

Я ожидаю, что результат будет что-то, что изменяется от 0 до 1 по оси Y, более 325 элементов.

...