def compute_unnormalized_crosscorrelogram(a, b, nb_bins=101, width=100e-3, f=0.0, **kwargs):
"""Compute the un-normalized cross-correlogram"""
bin_width = width / float(nb_bins)
start = - width / 2.0
stop = + width / 2.0
bins = np.linspace(start, stop, nb_bins + 1)
values = np.zeros(nb_bins, dtype=np.int)
for v in a:
d = b - v - f * bin_width
is_selected = np.abs(d) < width / 2.0
d = d[is_selected]
indices = np.digitize(d, bins) - 1
values[indices] += 1
if 't_min' in kwargs and 't_max' in kwargs:
t_min, t_max = [kwargs[key] for key in ['t_min', 't_max']]
if t_min is not None and t_max is not None:
values = values.astype(np.float) / (t_max - t_min)
bins = bins * 1e+3
values = np.append(values, [values[-1]])
return bins, values
评论列表
文章目录