1

2 つ以上のバンドを示す 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

これらと平均曲線をプロットすると、次のようになります。ここで、赤は上部バンド、青は下部バンドを示します。選ばれたバンド

これはこの例では非常にうまく機能しますが、2 つ以上のバンドが存在する場合やバンドが十分に分離されていない場合は失敗します。

より堅牢で一般的なソリューションを探しています。私は scikit-learn を調べていて、これを実現するためにクラスタリング アルゴリズムの 1 つを使用できるかどうか疑問に思っていました。

4

1 に答える 1

3

時系列の類似性測定を見てください。

確かに、あなたがそこで試した「閾値交差」と呼ばれるこのバイナリ閾値化などを見てきました。

一般に、「万能」な時系列の類似性はありません。信号のタイプが異なれば、必要な対策も異なります。これはおそらく、FFT の後でよりよく分析されるものもあれば、FFT がまったく意味をなさないものもあるという事実によって最もよくわかるでしょう。

于 2013-04-10T10:59:53.240 に答える