2017-04-23 7 views
2

基本的に私は100〜130の範囲で浮動する500以上の値を持つ1次元配列を持っています。そして私は、このデータの山と谷を見つけることができる方法を知りたいです。ピーク検出の感度を変更する方法はありますか?これの包括的なアルゴリズムとは何ですか?それのためのJSライブラリがあれば、それは素晴らしいだろう。1D配列の時系列データのピークとトラフを見つける - JavaScript

+0

私たちはa)は、あなたのデータを見ると、b)あなたはこのように試したものを見ることができればそれが役立つだろう遠い – gyre

+0

500の値についてのVaR thisthing = [102.54,112.23などのようなので、その文字通りつのアレイ...。私は何かを試していない私は進行する方法を知っていない。 – Lifeislifebutwhatiswhat

答えて

0

山と谷を見つけるためのアルゴリズムは、基本的にグラフを見るとき、あなたの指で行うだろうと同じことになります。あなたは最初から行くとラインに従ってください、あなたは山と谷を見たときに注意してください。

Programmically我々は、このようにそれを定義することができる:

n一部の配列について(n-1が最後の要素のインデックスと0の指標である)、n-21から徹底反復。 i-1 > ii+1 > i場合、要素iについて

  • :次いで、山と谷と定義されるであろう。その後iは谷です。要素iについては
  • i-1 < ii+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));

関連する問題