2
基本的に私は100〜130の範囲で浮動する500以上の値を持つ1次元配列を持っています。そして私は、このデータの山と谷を見つけることができる方法を知りたいです。ピーク検出の感度を変更する方法はありますか?これの包括的なアルゴリズムとは何ですか?それのためのJSライブラリがあれば、それは素晴らしいだろう。1D配列の時系列データのピークとトラフを見つける - JavaScript
基本的に私は100〜130の範囲で浮動する500以上の値を持つ1次元配列を持っています。そして私は、このデータの山と谷を見つけることができる方法を知りたいです。ピーク検出の感度を変更する方法はありますか?これの包括的なアルゴリズムとは何ですか?それのためのJSライブラリがあれば、それは素晴らしいだろう。1D配列の時系列データのピークとトラフを見つける - JavaScript
山と谷を見つけるためのアルゴリズムは、基本的にグラフを見るとき、あなたの指で行うだろうと同じことになります。あなたは最初から行くとラインに従ってください、あなたは山と谷を見たときに注意してください。
Programmically我々は、このようにそれを定義することができる:
長n
一部の配列について(n-1
とが最後の要素のインデックスと0
第の指標である)、n-2
に1
から徹底反復。 i-1 > i
とi+1 > i
場合、要素i
について
i
は谷です。要素i
についてはi-1 < i
とi+1 < i
場合。次に、i
がピークです。これはO(n)
アルゴリズムであり、プログラムするには十分な情報である必要があります。以下は
上記algothimを実装するプログラム例です:
var array = [102,112,115,120,119,102,101,100,103,105,110,109,105,100];
function findPeaksAndTroughs(array) {
var start = 1; // Starting index to search
var end = array.length - 2; // Last index to search
var obj = { peaks: [], troughs: [] };// Object to store the indexs of peaks/thoughs
for(var i = start; i<=end; i++)
{
var current = array[i];
var last = array[i-1];
var next = array[i+1];
if(current > next && current > last)
\t obj.peaks.push(i);
else if(current < next && current < last)
\t obj.troughs.push(i);
}
return obj;
}
console.log(findPeaksAndTroughs(array));
私たちはa)は、あなたのデータを見ると、b)あなたはこのように試したものを見ることができればそれが役立つだろう遠い – gyre
500の値についてのVaR thisthing = [102.54,112.23などのようなので、その文字通りつのアレイ...。私は何かを試していない私は進行する方法を知っていない。 – Lifeislifebutwhatiswhat