2017-08-21 11 views
0

私は、曲線上のどの点でも始まるサインカーブが最初の最大値に達し、最初の値に達したインデックスを見つけることを試みています。これを行うには、前の値と1つの値を比較するループを実行しています。 1つのポイントが以前の値よりも大きい場合、それは上昇傾向にあり、反対の場合も同様です。正弦波の最初のピークの検出/変数の変化の検出C#

C#では、変数がトレンドアップからトレンドダウンに変化したときをどのように検出しますか?つまり、変数が変更されたときをどのように検出しますか? LabVIEWでは、これはシフトレジスタを使用して行うことができます。同等のC#は何ですか?

+2

あなたはこれまでに何を思い付いていますか?これを行うには多くの方法があります。私たちが何を答えられるかを知ることは有益でしょう。 – Fildor

+0

これまでの私の構造は次の通りです:私の表記を赦してください。 "(I = 1 ; [正弦配列の終わり] sinearray [i]が msegctc

+0

あなたは1導関数を計算し、符号の変化を探すことができます。配列を通してすべてを計算する。Ju st> 0〜<= 0のループを最初に変更します。 – Fildor

答えて

0
public static int FirstMaxIndex(int[] values) 
{ 
    bool up = false; 
    for (int i = 1; i < values.Length; i++) 
     if (values[i] < values[i - 1]) 
     { 
      if (up) return i; 
      else up = false; 
     } 
     else if (values[i] > values[i - 1]) 
     { 
      up = true; 
     } 
    return -1; 
} 

私はこれをテストしませんでした。これはあなたにこれを解決する方法のアイデアを与えることだけです。 (私はあなたがコメントに書いたものにできるだけ近づけて書きました)

+1

Downvoter:これに間違っていることを説明するケア?それは絶対に意味をなさない... – Fildor

+0

これは、曲線の元の傾向が何であるかを考慮に入れないので、うまくいかない。トレンドダウンを開始すると、すぐに最初の値が返されます。私はそれがダウンしているときだけ戻ってくるのではなく、FROMを上から下に変えるときに見つける必要があります。 – msegctc

+0

@msegctcいいえ、それはできません。 'up'は最初はfalseです。そして 'return i;'は***(if up)が***の場合のみです。 – ispiro

関連する問題