2013-12-14 38 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这更合理。