2015-03-10 5 views
0

Я использую numpy.correlate на двух наборах данных, и 20000 значений большой.numpy.correlate: Отношение между полным и допустимым

документация указывает:

режим: { «полный», «действует», «же»}, необязательный «полный»:

По умолчанию режим «полный». Это возвращает свертку в каждой точке перекрытия с выходной формой (N + M-1,). В конечных точках свертки сигналы не перекрываются полностью, и могут быть видны граничные эффекты .

'same': Mode же возвращает выход длины max (M, N). Границы эффектов все еще видны.

«valid»: режим действительный возвращает выход длины max (M, N) - min (M, N) + 1. Продукт свертки задается только для точек, где сигналы полностью перекрываются. Значения вне границы сигнала не имеют никакого эффекта

Ниже эти объяснения, я надеюсь, для моих наборов, что «действительный» вариант даст мне то же значение, что и полученный принимающему значение число 20000 возвращаемых с помощью «полного ", поскольку только для этого значения наборы накладываются. Однако эти два значения различны.

Может кто-нибудь объяснить, как это работает?

ответ

1

Помните, что индексация Python начинается с нуля, а не 1. Вы хотите индекс 19999, а не 20000:

x = np.random.randn(20000) 
y = np.random.randn(20000) 

np.correlate(x, y, 'valid')[0] 
# -29.778322045152521 

np.correlate(x, y, 'full')[19999] 
# -29.778322045152521 
+3

Спасибо ... Я думаю, что настало время для дремоты. – Phaune

 Смежные вопросы

  • Нет связанных вопросов^_^