私はarduinoを使用して256個の値を配列に格納するセンサーを読み取っています。私はローカルmaxを見つけることを試みているが、格納されているいくつかの値は、値が複数回印刷される原因となる値を左右に繰り返す。すべての真の値が最大値であることを意味する別の配列に格納して、繰り返し値を処理して1つの値に減らす方法はありますか?ローカル最大値を見つける方法
ORには最大値を繰り返しの値がちょうど1に減少する別の配列? OR IE:4以来
Array1[] = {1,2,3,4,4,4,3,2,7,8,9,10}
max = 4 at index 3
max = 4 at index 4
max = 4 at index 5
がピーク点であるが、専門家レベルで可能何もあれば、配列は
Array2[] = {1,2,3,4,3,2,7,8,9,10}
max = 4 at index 3
のように見える、私はそれを減らすことができますどのようにように繰り返され、私は、最も基本的な内訳を必要とします、ありがとう。アルドゥイーノから
コード:
int inp[20] = {24,100,13,155,154,157,156,140,14,175,158,102,169,160,190,100,200,164,143,20};
void setup()
{
Serial.begin(9600); // for debugging
}
void loop()
{
int i;
int count = 0;
for (i = 0; i < 20; i++)
{
Serial.println((String)inp[i]+" index at - "+i);
delay(100);
};
int N = 5; // loc max neighborhood size
for (int i = N-1; i < 19-N; i++)
{
bool loc = false;
for (int j = 1; j < N; j++) // look N-1 back and N-1 ahead
{
if (inp[i] > inp[i-j] && inp[i] > inp[i+j]) loc = true;
}
if (loc == true)
{
Serial.println((String)"max = "inp[i]+" at index "+i);
}
}
Serial.println("----------------------------------");
}
ピークは最大ではなく、 1組のデータは複数のピークを含むことができる。つまり、一連のデータから重複を取り除くだけでは意味がありません。ただし、重複する値を印刷する必要はありません。だから、あなたがピークを見つけるたびに、それを保管してください。そして、同じピークに遭遇した場合は、無視してください(印刷しないでください)。 – DimChtz
どうすれば保存できますか? – k5man001
データ範囲は[0 255](256値)です。だから、サイズ256の別の配列を作成し、すべての要素を0に初期化し、ピーク時には常に適切な位置に配列を増やします。そうすれば、ピークを得るたびに、この位置で0であれば配列をチェックするだけです。はいの場合はピークを印刷し、無視する。 – DimChtz