2013-12-14 40 views
0

我有兩個numpy數組(一個用於時間,一個用於值)從spice導出文本文件導入。該文件包含1kHz的竇。關於spice數據(時間,數值)頻率軸上的FFT不正確

當使用plotSpectrum函數(link here)繪製FFT時,輸出與1kHz不匹配,大約爲891Hz。

有什麼建議可能出了什麼問題?我計算了前4個時間樣本之間的dt,它們是等距的。香料是否不等於在出口文件中的所有樣品?或者出了什麼問題? Doe我需要限制陣列2的冪?

感謝您的幫助!

我完整的代碼看起來像

import numpy 
from pylab import plot, show, title, xlabel, ylabel, subplot 
from scipy import fft, arange 
import pylab 

data = numpy.loadtxt('sin1k.txt', delimiter='\t') 

time = data[:,0] 
value = data[:,1] 



def plotSpectrum(y,Fs): 
""" 
Plots a Single-Sided Amplitude Spectrum of y(t) 
""" 
n = len(y) # length of the signal 
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)|') 


subplot(2,1,1) 
plot(time,value) 
xlabel('Time') 
ylabel('Amplitude') 
subplot(2,1,2) 
plotSpectrum(value,(time[1]-time[0])*10e9) 
pylab.xlim([0,2000]) 
show() 

回答

0

原來,香料通過不相等間距所有2907米的樣品得到了我;一些在等距的地方,其他的不是!我的4個樣本碰巧等距。

我用Paul Wagner的圖書館(鏈接here)等分樣本,謝謝保羅!

而fft竟然是1045Hz這更合理。