如何添加输入信号的谐波?
输入:信号的矢量化形式 输出:与输入格式相同
注意:如果您知道答案,可以给我算法或链接,这将有助于我解决这个问题。
答案 0 :(得分:1)
如果频率已知,则可以通过向信号添加适当频率的正弦波(即,已知频率的两倍)来增加谐波。类似的东西:
result = signal .* sin((0:(1/sample_rate):length_of_signal) * freq));
当频率未知时,您可以使用FFT(链接到文档的@ L7ColWinters)来查找频率。由于您可以将信号从频域转换回时域(ifft用于反向),因此可能更容易进行FFT,添加谐波然后执行逆FFT,或者一旦您知道从第一种情况来看,您可以将正弦波添加到原始输入中。
答案 1 :(得分:1)
假设您的输入是幅度为A
且间隔为[0, t0]
的时域信号。然后使用
i
A [i] = A [i] + A0 * sin(2 pi f dt)
其中dt是每个数组元素之间的时差,即dt = N/t0
。
A0
对应的位置添加f
,然后按@ L7ColWinters链接进行逆傅立叶变换答案 2 :(得分:1)
如果查看trig identities,您会看到
cos(2x)= 2 *(cos(x))^ 2 -1
由于一次谐波是基频的两倍,因此您可以简单地对输入求平方,根据需要进行缩放并消除DC偏移。频率不需要知道或估计。
请记住,奈奎斯特仍然适用,因此您可能需要低通输入以防止混叠。