【问题标题】:Add harmonic to a signal为信号添加谐波
【发布时间】:2012-04-08 06:38:39
【问题描述】:

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

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

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

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

【问题讨论】:

标签: matlab signal-processing


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    • 假设您的输入是幅度数组A 间隔[0, t0] 的时域信号。然后用

      循环i

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

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

    • 如果先做傅里叶变换,只需要在频率f对应的位置加上A0,然后做傅里叶逆变换,下面链接@L7ColWinters

    【讨论】:

      【解决方案3】:

      如果你查看trig identities,你会看到

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-05-13
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        相关资源
        最近更新 更多