Я изучаю numpy/scipy, исходя из фона MATLAB. xcorr function in Matlab имеет необязательный аргумент «maxlag», который ограничивает диапазон от -maxlag до maxlag. Это очень полезно, если вы смотрите на кросс-корреляцию между двумя очень длинными временными рядами, но интересуетесь только корреляцией в течение определенного временного интервала. Производительность огромна, учитывая, что кросс-корреляция невероятно дорога для вычисления.Как ограничить ширину окна корреляции в Numpy?
В numpy/scipy кажется, что существует несколько вариантов вычисления взаимной корреляции. numpy.correlate, numpy.convolve, scipy.signal.fftconvolve. Если кто-то хочет объяснить разницу между ними, я буду рад услышать, но в основном меня беспокоит то, что ни у кого из них нет функции maxlag. Это означает, что даже если я только хочу видеть корреляции между двумя временными рядами с задержками между -100 и +100 мс, например, он все равно вычислит корреляцию для каждого лага между -20000 и +20000 мс (это длина временные ряды). Это дает 200-кратное повышение производительности! Нужно ли вручную перекодировать функцию взаимной корреляции, чтобы включить эту функцию?
Эта функция является просто оберткой для numpy.correlate. К сожалению, хотя он возвращает соответствующий вектор длины, он не имеет никакой экономии производительности, поскольку он фактически вычисляет полную кросс-корреляцию и затем выдает дополнительные записи. – honi