I am learning numpy/scipy, coming from a MATLAB background. The xcorr function 
in Matlab has an optional argument "maxlag" that limits the lag range from 
–maxlag to maxlag. This is very useful if you are looking at the 
cross-correlation between two very long time series but are only interested in 
the correlation within a certain time range. The performance increases are 
enormous considering that cross-correlation is incredibly expensive to compute.

What is troubling me is that numpy.correlate does not have a maxlag feature. 
This means that even if I only want to see correlations between two time series 
with lags between -100 and +100 ms, for example, it will still calculate the 
correlation for every lag between -20000 and +20000 ms (which is the length of 
the time series). This (theoretically) gives a 200x performance hit! Is it 
possible that I could contribute this feature?

I have introduced this question as a scipy issue 
https://github.com/scipy/scipy/issues/4940 and on the spicy-dev list 
(http://mail.scipy.org/pipermail/scipy-dev/2015-June/020757.html).  It seems 
the best place to start is with numpy.correlate, so that is what I am 
requesting.  I have done a simple implementation 
(https://gist.github.com/bringingheavendown/b4ce18aa007118e4e084) which gives 
50x speedup under my conditions 
(https://github.com/scipy/scipy/issues/4940#issuecomment-110187847). 

This is my first experience with contributing to open-source software, so any 
pointers are appreciated.  

_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to