基本的に、タイムスタンプをミリ秒単位で float 値にマップするデータ オブジェクトが多数あります。基本的に、特定の範囲内のデータのピーク/最大を見つけようとしています。私は基本的に次のようなものを使用しています:
float previousValue = 0;
for (int i = 0; i < data.size(); i++) {
MyData value = data.get(i);
if (value.getData() < previousValue) {
// found the peak!
break;
} else {
previousValue = value.getData();
}
}
このアルゴリズムの唯一の問題は、ノイズを考慮していないことです。基本的に、次のような値を持つことができます。
[0.1025, 0.3000, 0.3025, 0.3500, 0.3475, 0.3525, 0.1025]
実際のピークは 0.3525 ですが、上記の私のアルゴリズムでは最初に来るため 0.3500 と見なされます。私の計算の性質max()
上、配列で実行して最大値を見つけることはできません。落ちる前に最初に来る最大値を見つける必要があります。
ノイズの分散を考慮しながら、ピークの頂点を見つけるにはどうすればよいですか?