C# 查找周期开始和结束,并从阵列计算频率

C# 查找周期开始和结束,并从阵列计算频率,c#,frequency,C#,Frequency,这是我的第一篇帖子,请原谅我的错误 现在我要做的是从给定的双数组读数计算频率。此数组具有每次读取的相应时间 例如,读数如0.01,0.11,0.21,0.18,0.1,-0.03,-0.2,-0.12,0,等等,每次读数都有以秒为单位的相应时间 我用来开始并找到周期的方法是: double start = read[0]; bool trough = false; double cycle = 0; // Time for one cycle for (int j = 1; j < re

这是我的第一篇帖子,请原谅我的错误

现在我要做的是从给定的双数组读数计算频率。此数组具有每次读取的相应时间

例如,读数如
0.01
0.11
0.21
0.18
0.1
-0.03
-0.2
-0.12
0
,等等,每次读数都有以秒为单位的相应时间

我用来开始并找到周期的方法是:

double start = read[0];
bool trough = false;
double cycle = 0; // Time for one cycle

for (int j = 1; j < read.Count; j++)
{
    if (read[j] < start)
    {
        trough = true;
    }
    else if (trough)
    {
        cycle = seconds[j];
        break;
    }
}
double start=read[0];
布尔谷=假;
双循环=0;//一个周期的时间
对于(int j=1;j
到目前为止,当周期从正读数开始时,这种方法仍然有效,但当周期从负读数开始时,这种方法就失败了。
我所说的周期是指完整的正弦曲线。。因此,如果在excel中用许多正弦曲线绘制,这个双精度阵列将形成一个波形,就像示波器上的u所示。。我想找到的是如何有效地得到一个正弦波的开始和结束。事实上,start是数组中的第一个值,但是如何得到第一个正弦波的结尾是我迷路的地方。 请帮忙,因为我的大脑完全忽略了明显的错误/解决方案?
欢呼所有人

在您的示例中,您的正弦波大约从
0开始
,并增加到
0.21
。然后下降到
-0.2
,然后再次上升到
0

所以你首先需要找到它降到零以下的点,然后检测它再次达到零的时刻

您可以这样尝试:

int index = 0;
while (read[index] >= 0) index++; // skip first half sine wave
while (read[index] <= 0) index++; // skip second half
double cycle = seconds[index-1]; // take seconds of the last reading of the wave
int索引=0;
而(读取[index]>=0)index++;//跳过前半正弦波

而(读取[index]您的正弦波从大约
0
开始,在您的示例中增加到
0.21
。然后下降到
-0.2
,然后再次上升到
0

所以你首先需要找到它降到零以下的点,然后检测它再次达到零的时刻

您可以这样尝试:

int index = 0;
while (read[index] >= 0) index++; // skip first half sine wave
while (read[index] <= 0) index++; // skip second half
double cycle = seconds[index-1]; // take seconds of the last reading of the wave
int索引=0;
while(read[index]>=0)index++;//跳过前半个正弦波

欢迎来到StackOverflow!你能再解释一下“循环”的定义吗给你,再举一些例子,你想从给定的数组中找到哪些值?是的,当然,如果我不善于解释的话,很抱歉。我所说的循环是指一条完整的正弦曲线。所以这个双精度数组如果在excel中用许多正弦曲线绘制,就会形成一个波形,就像你在示波器上看到的那样。我试图找到的是如何提高效率y获取一个正弦波的开始和结束实际上开始是数组中的第一个值,但是如何获取第一个正弦波的结束是我得到的lost@shadow2kn请编辑您的问题以纳入您的comments@auburg完成,更改欢迎来到StackOverflow!您能再解释一下“循环”的定义吗给你,再举一些例子,你想从给定的数组中找到哪些值?是的,当然,如果我不善于解释的话,很抱歉。我所说的循环是指一条完整的正弦曲线。所以这个双精度数组如果在excel中用许多正弦曲线绘制,就会形成一个波形,就像你在示波器上看到的那样。我试图找到的是如何提高效率y获取一个正弦波的开始和结束实际上开始是数组中的第一个值,但是如何获取第一个正弦波的结束是我得到的lost@shadow2kn请编辑您的问题以纳入您的comments@auburg完成后,更改了很多感谢,但是这不适合所有在正范围内的读数。或者如果所有都在负范围内ive范围。@shadow2kn更新我的答案,希望有帮助,我现在脱机。非常感谢,但是这不适合所有在正范围内的读数。。或者如果所有在负范围内。@shadow2kn更新我的答案,希望有帮助,我现在脱机。