1

我有几个一维信号,显示两个或更多波段。一个例子如下所示。 原始数据

我需要提取属于单个波段的数据点。


我的第一个简单方法是对数据进行移动平均,并获取数据大于平均值的索引。

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,想知道是否可以使用其中一种聚类算法来实现这一点。

4

1 回答 1

3

看看时间序列相似性度量

事实上,我已经看到你在那里尝试过的这种二进制阈值,称为“阈值交叉”,还有更多。

一般来说,没有“一刀切”的时间序列相似性。不同类型的信号需要不同的措施。这可能最好从以下事实中看出:有些在 FFT 之后分析得更好,而对于另一些 FFT 则完全没有意义。

于 2013-04-10T10:59:53.240 回答