【问题标题】:calculating frequency for signal in c# .net在 c#.net 中计算信号的频率
【发布时间】:2011-01-22 06:11:21
【问题描述】:

我正在 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.......]。信号不断从机器接收。 不确定波浪是否总是在零附近振荡。 谢谢 问候 尼勒什

【问题讨论】:

    标签: c# math fft frequency wave


    【解决方案1】:

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

    或者,您可以检查零交叉(在平均值附近)。它在 0 附近振荡的速度越快,它的频率就越高。类似地,极值可以告诉你很多关于频率的信息(想想一个正弦曲线,它的极值和零点交替出现并且间隔均匀)。

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

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

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

    【讨论】:

    • '计算 FFT 并取最低频率' 没有任何意义。你如何定义最低频率?
    • 嗯?具有离散离散频谱的信号的最低频率定义明确且易于获取。
    【解决方案2】:

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

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

    对于图二,同样的原理适用,您可以计算图的每个部分的波长(以及周期)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2017-12-15
      • 2014-11-20
      相关资源
      最近更新 更多