2011-01-22 426 views
0

我正在为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 ..........]。信号不断从机器接收。不确定波浪总是在零附近摆动。 谢谢 Registers Nileshc#中的信号计算频率.net

回答

2

你可以估计频率的一个方法。如果你有一个数学库,可能最简单的方法是计算FFT并采用最低频率。

或者,您可以检查过零点(在平均值附近)。其振荡频率越快,频率越高。同样,极值告诉你很多关于频率的信息(想想一个正弦曲线的极值和零点是否交替并且间隔均匀)。

还有一种叫做周期变换的变换,但我不记得它太多。我在一本关于寻找歌曲节奏的音乐书中看到了它。

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

另一种方法可能是使用自相关,当它是大表示该功能是“同步”与自己(假设它不会改变形状以快)。并且应该很容易计算这些最大值之间的距离。

+0

“计算FFT,并采取最低频率”的每个部件中的波长(以及因此期间)并不意味着什么。你如何定义最低频率? – 2011-01-22 15:44:14

0

你可以找出波峰和波谷之间的时间间隔,这会给你一半的特定波长的波长。

alt text

对于图1中,第一槽是2,所述第一峰值是12找出时间这些点之间服用,你有一半波长。

对于图2中,相同的原理适用,可以计算出用于将图表