我正在为 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.......]。信号不断从机器接收。不确定波浪是否总是在零附近振荡。谢谢问候尼莱什
问问题
2695 次
2 回答
2
您可以通过多种方式估计频率。如果您有数学库,可能最简单的方法是计算 FFT 并采用最低频率。
或者,您可以检查过零(在平均值附近)。它在 0 附近振荡的速度越快,它的频率就越高。类似地,极值告诉你很多关于频率的信息(想想一个正弦曲线,它的极值和零点交替并且间隔均匀)。
还有一种叫做周期变换的变换,但我记不太清了。我在一本关于寻找歌曲节奏的音乐书籍中看到了它。
http://www.cs.berkeley.edu/~vazirani/s09quantum/notes/lecture4.pdf
另一种方法可能是使用自相关,当它很大时,这意味着函数与自身“同步”(假设它不会快速改变形状)。并且应该很容易计算这些最大值之间的距离。
于 2011-01-22T06:37:25.383 回答
0
您可以找出波峰和波谷之间的时间段,这将为您提供该特定波的一半波长。
对于图 1,第一个波谷是 2,第一个波峰是 12。找出这些点之间的时间,你就有一半的波长。
对于图二,同样的原理适用,您可以计算图的每个部分的波长(以及周期)
于 2011-01-22T06:55:21.270 回答