2014-03-30 52 views
0

我不知道這是一個編程或數學問題,但我彙總了一些FFT的簡短示例。我加載440hz波並在頂部添加一些正弦波,但由於某種原因,頻譜有一個我不明白的「波」。根據我的理解,頻譜應該有相同的| Y(頻率)|所有頻率的值。FFT在頻譜中顯示(奇怪的)正弦波

from pylab import plot, show, xlabel, ylabel, subplot 
from scipy import fft, arange 
from numpy import linspace, array 
# from scipy.io.wavfile import read,write 
import scikits.audiolab as audio 
import math 

def plotSpectru(y,Fs): 
    n = len(y) # lungime semnal 
    k = arange(n) 
    T = n/Fs 
    frq = k/T # two sides frequency range 
    frq = frq[range(n/2)] # one side frequency range 

    Y = fft(y)/n # fft computing and normalization 
    Y = Y[range(n/2)] 

    plot(frq,abs(Y),'r') # plotting the spectrum 
    xlabel('Freq (Hz)') 
    ylabel('|Y(freq)|') 

Fs = 44100; # sampling rate 

# (data, rate, bits) = audio.wavread('440Hz_44100Hz_16bit_05sec.wav') 
(data, rate, bits) = audio.wavread('250Hz_44100Hz_16bit_05sec.wav') 

for n in xrange(0,4*120, 4): 
    n=n/40. 
    data = array([x+math.sin(n*idx) for idx,x in enumerate(data)]) 

y=data[:] 
lungime=len(y) 
timp=len(y)/44100. 
t=linspace(0,timp,len(y)) 

subplot(2,1,1) 
plot(t,y, color="green") 
xlabel('Time') 
ylabel('Amplitude') 
subplot(2,1,2) 
plotSpectru(y,Fs) 
show() 

Wired sine wave through spectrum

回答

0

我不完全瞭解要如何計算您的正弦波?這裏是一個小例子,如何用numpy添加正弦波。

duration = len(data)/float(rate) 
t = np.linspace(0, len(data), rate*duration) 
sinewave = np.sin(2*np.pi*440*t) 

data += sinewave 

編輯

對不起,我rered你的問題,並承認我的答案我以前不匹配你的問題。 即使你真的添加了所有的正頻率(通過fft分析),你沒有統一的| Y(頻率)|。

duration = len(data)/float(rate) 
t = np.linspace(0, len(data), rate*duration) 
allfreqs = np.fft.fftfreq(len(data), 1.0/rate) 

for f in allfreqs[:len(allfreqs)/2]: 
    data += np.sin(2*np.pi*f*t) 

enter image description here

據我知道這是因爲干擾。如果增加許多正弦波,可能有些變得更弱,有些變得更強。

如果您分配一個隨機相位,以每波,事情看起來不同:

duration = len(data)/float(rate) 
t = np.linspace(0, len(data), rate*duration) 
allfreqs = np.fft.fftfreq(len(data), 1.0/rate) 

for f in allfreqs[:len(allfreqs)/2]: 
    data += np.sin(2*np.pi*f*t + np.random.rand()*np.pi) 

enter image description here

+0

是啊,我的想法也是一些關於破壞性干擾。雖然,那可以。干擾只有在頻率相同時纔有可能(對吧?)。 你的第一個例子,是不是顯示了一個非一致的圖,因爲你輸入的是方波而不是正弦波? –

+0

我沒有明確給出方波。我總結了所有相同相位的正弦波,所以他們總結爲準方波。不同頻率的正弦波之間也存在干擾,如[跳動](https://en.wikipedia.org/wiki/Beat_(聲學))。 –