2012-04-08 107 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

由於第一諧波是雙基頻,您可以簡單地對輸入進行平方,根據需要進行縮放並消除直流偏移。頻率不需要被知道或估計。

請記住,奈奎斯特仍然適用,因此您可能必須低通輸入以防止混疊。