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並想知道是否可以使用其中一種聚類算法來實現這一點。