1

如何添加输入信号的谐波?

  • 不进行频率估计(提供频率)
  • 通过进行频率估计

输入:信号的矢量化形式输出:与输入相同的格式

注意:如果你知道答案,你能给我算法或链接,这将帮助我解决这个问题。

4

3 回答 3

1
  • A假设您的输入是具有间隔为 的幅度数组的时域信号[0, t0]。然后循环i使用

    A[i] = A[i] + A0 * sin (2 pi f dt)

其中 dt 是每个数组元素之间的时间差,即dt = N/t0

  • 如果先进行傅里叶变换,只需A0在频率对应的位置添加f,然后进行傅里叶逆变换,以下链接@L7ColWinters
于 2012-04-08T07:03:09.610 回答
1

如果您查看三角恒等式,您会看到

cos(2x) = 2 * (cos(x))^2 -1

由于一次谐波是基频的两倍,您可以简单地对输入进行平方,根据需要进行缩放并消除直流偏移。频率不需要知道或估计。

请记住,奈奎斯特仍然适用,因此您可能必须低通输入以防止混叠。

于 2012-04-11T13:47:56.980 回答
1

如果频率已知,那么您大概可以通过将适当频率的正弦波(即已知频率的两倍)添加到信号中来添加谐波。就像是:

result = signal .* sin((0:(1/sample_rate):length_of_signal) * freq));

当频率未知时,您可以使用 FFT(链接到文档的@L7ColWinters)来查找频率。由于您可以将信号从频域转换回时域(ifft为逆),因此执行 FFT、添加谐波然后执行逆 FFT 可能更容易,或者一旦您知道 FFT 的频率您可以像第一种情况一样将正弦波添加到原始输入中。

于 2012-04-08T06:59:36.150 回答