2017-08-21 48 views
0

我想找到一個正弦曲線(可能從曲線上任何一點開始)到達第一個最大值,並且只有第一個最大值。爲此,我正在運行一個循環,將一個值與前一個值進行比較。如果一個點大於其先前的值,則它趨於上升,而相反則相似。查找正弦波/檢測變量變化的第一個峯值c#

在c#中,如何檢測變量何時從趨勢變爲趨勢向下?換句話說,如何檢測變量何時發生變化。在LabVIEW中,這可以使用移位寄存器來完成。什麼是在C#中的等效物?

+2

你到目前爲止提出了什麼?有很多方法可以做到這一點;瞭解我們可以基於哪些答案將是有用的。 – Fildor

+0

到目前爲止,我的結構如下:請原諒我的記法。 「 爲(I = 1; [正弦陣列的端] 如果(sinearray [I] msegctc

+0

您可以計算1.導數並尋找符號的變化,您可能無需執行即時操作通過陣列計算所有數據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

這是行不通的,因爲它沒有考慮曲線的原始趨勢。如果它開始趨勢下降,它會立即返回第一個值。我需要找到它從什麼時候開始改變,不僅僅是在它下降時返回 – msegctc

+0

@msegctc不,它不會。 「up」是錯誤的。並且'返回我;'只是***如果(up)***(意思是:如果up是真的)。 – ispiro