【问题标题】:How to find amplitude and frequency of sine wave from 20 samples? [closed]如何从 20 个样本中找到正弦波的幅度和频率? [关闭]
【发布时间】:2019-02-28 22:16:27
【问题描述】:

我有这些参数的信号:1kHz 频率,1Vpp。 我正在尝试找到从 20 个样本中计算信号幅度和频率的最佳算法。我将尝试用 C 语言(在我的微控制器上)实现这个算法。 我估计采样频率为采样正弦波的 2.5kHz Pic:

有人有想法吗? 感谢您的帮助!

【问题讨论】:

  • 您最好的选择似乎是 DCT(离散余弦变换)。由于您的样本数量很少,因此可以很好地优化它。由于样本数和采样率低,一个缺点是精度有限(对于频率)。
  • @Anty 你能详细说明一下吗?

标签: c algorithm signals microcontroller trigonometry


【解决方案1】:
  1. 粗略估计

    只需找到 2 个 x(时间)位置,其中 y(幅度)相同且斜率也在相同方向(上升/下降)。他们的距离T就是句号。

    您可以通过将数据处理为折线(线性或更高插值)来提高精度。

    现在幅度只是A = (max(value)-min(value))/2

    您还可以估计初始阶段t0,即数据与偏移值交叉的 x 位置,并且偏移量y0 = 0.5*(max(value)+min(value)) 注意y0 可能不只是零...

    所以你的正弦波是这样完成的:

    y(t) = y0 + 0.5*A*sin((t-t0)*2.0*M_PI/T)
    
  2. 精度

    如果您需要更好的精度,那么只需通过您的点拟合正弦波。由于您已经获得了初步估计,因此这并不像盲目拟合那么慢。举个例子:

【讨论】:

  • A = (max - min)/2
  • @Zaz 是的,对于无偏的正弦波,你是对的我编辑了答案......在不同的情况下,它取决于前面任务的幅度的定义/含义
猜你喜欢
  • 1970-01-01
  • 2015-12-16
  • 2015-01-11
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多