Source code for neurokit2.signal.signal_autocor

import numpy as np


[docs]def signal_autocor(signal, lag=None, normalize=True): """Auto-correlation of a 1-dimensional sequences. Parameters ----------- signal : Union[list, np.array, pd.Series] Vector of values. normalize : bool Normalize the autocorrelation output. lag : int Time lag. If specified, one value of autocorrelation between signal with its lag self will be returned. Returns ------- r The cross-correlation of the signal with itself at different time lags. Minimum time lag is 0, maximum time lag is the length of the signal. Or a correlation value at a specific lag if lag is not None. Examples -------- >>> import neurokit2 as nk >>> >>> x = [1, 2, 3, 4, 5] >>> autocor = nk.signal_autocor(x) >>> autocor #doctest: +SKIP """ r = np.correlate(signal, signal, mode="full") r = r[r.size // 2 :] # min time lag is 0 if normalize is True: r = r / r[0] if lag is not None: if lag > len(signal): raise ValueError("NeuroKit error: signal_autocor(): The time lag exceeds the duration of the signal. ") else: r = r[lag] return r