如何从20个样本中找出正弦波的幅度和频率? [关闭]

问题描述 投票:1回答:1

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

有没有人有想法?感谢帮助!

c algorithm signals microcontroller sine
1个回答
0
投票
  1. 粗略估算 只需找到2个(时间)位置,其中y(幅度)相同,斜率也在同一方向(上升/下降)。他们的距离T是时期。 period 您可以通过将数据作为折线(线性或更高插值)处理来提高精度。 现在振幅只是A = (max(value)-min(value))/2。 您还可以估计初始阶段t0,这是x位置,其中数据交叉偏移值和偏移量y0 = 0.5*(max(value)+min(value))当心y0可能不仅仅是零... 所以你的sinwave就像: y(t) = y0 + 0.5*A*sin((t-t0)*2.0*M_PI/T)
  2. 精确 如果你需要更好的精确度,那么只需在你的点上装入一个正弦波。因为你已经得到了最初的估计,所以这并不像盲目的那样慢。这是一个例子: qazxsw poi
© www.soinside.com 2019 - 2024. All rights reserved.