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