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更新我的答案,希望有帮助,我现在脱机。