找到正弦波的第一个峰值/检测变量变化 c#

Find first peak of sine wave / detect variable change c#

我试图找到正弦曲线(可能从曲线上的任何一点开始)在哪个索引处达到其第一个最大值,并且只有第一个。为此,我是 运行 一个循环,将一个值与其前一个值进行比较。如果一个点大于它的前一个值,它是趋势向上的,反之则类似。

在 c# 中,如何检测变量何时从上升趋势变为下降趋势?换句话说,您如何检测变量何时发生变化。在 LabVIEW 中,这可以使用移位寄存器来完成。 c# 中的等价物是什么?

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;
}

我没有测试这个。这只是为了让您了解如何解决此问题。 (我写得尽可能接近你在评论中写的。)