繁体   English   中英

在C#.net中计算信号的频率

[英]calculating frequency for signal in c# .net

我正在用c#.NET开发示波器的应用程序,我借助zedgraph控件绘制了各种波形(正弦波,方波等)。 我从示波器获取值并将其存储在大小为1024(字节数组)的缓冲区中,并且必须在运行时计算诸如时间段,频率,上升时间,下降时间等参数。 为此,我只需要提取整个信号的单个周期。另一个问题是值并不总是连续地上升或下降,平均值存储在缓冲区中是这样的[0,0,0,1,1,2,3 ,4,5,5,6,6,6,5,5,4,3,2,1,1,0,0,0 ..........]。 信号不断从机器接收。 不确定波是否总是在零附近振荡。 谢谢问候尼罗什

您可以通过多种方式估算频率。 如果您有数学能力,最简单的方法可能是计算FFT并采用最低频率。

或者,您可以检查零交叉点(均值附近)。 它大约在0左右振荡,频率越高。 类似地,极值会告诉您很多有关频率的信息(想想一个正弦曲线,其极值和零点交替并均匀分布)。

还有一个称为周期转换的转换,但我不太记得。 我在一本关于音乐的书中看到了它,以寻找歌曲的节奏。

http://www.cs.berkeley.edu/~vazirani/s09quantum/notes/lecture4.pdf

另一种方法可能是使用自相关,当自相关较大时,表示该函数与自身处于“同步”状态(假设它不会快速改变形状)。 并且应该容易计算出这些最大值之间的距离。

您可以找出波峰与波谷之间的时间段,这将为您提供该特定波的一半波长。

替代文字

对于图1,第一个波谷为2,第一个波峰为12。找出这些点之间的时间,则波长为一半。

对于图二,应用相同的原理,您可以计算图的每个部分的波长(从而计算周期)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM