2012-04-08 102 views
1

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

  • 未做频率估计(被提供频率)
  • 通过使频率估计

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

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

+0

http://www.mathworks.com/help/techdoc/ref/fft.html – L7ColWinters 2012-04-08 06:45:48

+3

这不是关于程序设计的问题。更像信号的理论。 – Vincent 2012-04-08 07:01:22

+0

候选人转向http://dsp.stackexchange.com/? – mpdonadio 2012-04-12 13:32:37

回答

1

如果频率是已知的,那么你可以想象通过将适当频率的正弦波(即已知频率的两倍)添加到信号中来添加谐波。喜欢的东西:

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

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

1
  • 假设你的输入是与振幅阵列A与间隔[0, t0]所述时域信号。然后遍历i

    A [1] = A [1] + A0 * SIN(2 PI˚FDT)

其中dt为每个阵列元件之间的时间差,即dt = N/t0

  • 如果傅立叶变换第一,你只需要在对应的频率f位置添加A0,然后执行傅立叶逆变换,继@ L7ColWinters
1

如果你看看链接通过trig identities,你会看到

COS(2×)= 2 *(COS(X))^ 2 -1

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

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