0
我有几个1D信号,显示两个或多个频段。一个例子如下所示。 1D信号的聚类
我需要提取属于一个乐队的数据点。
我的第一个简单的方法是获取数据的移动平均值,并获得数据大于平均值的指数。
def seperate(x):
average = scipy.ndimage.gaussian_filter(x, 10)
# this gives me a boolean array with the indices of the upper band.
idx = x > average
# return the indices of the upper and lower band
return idx, ~idx
绘制这些和平均曲线看起来像这样,其中红色表示上部和蓝色的低频带。
这个例子很好地工作,但当两个以上的频带出现和/或频带没有很好地分开时失败。
我正在寻找更强大和通用的解决方案。我正在研究scikit-learn并想知道是否可以使用其中一种聚类算法来实现这一点。