对spice数据(时间,值)频率轴的FFT不正确

时间:2013-12-14 22:21:48

标签: python scipy fft

我有一个从spice导出文本文件导入的两个numpy数组(一个用于时间,一个用于值)。该文件包含1kHz的正弦波。

使用plotSpectrum函数(link here)绘制FFT时,输出与1kHz不匹配,大约为891Hz。

任何可能出错的建议?我已经计算了前4个样本之间的dt,它们的间距相等。 spice不会在导出文件中平均排列所有样本吗?或者可能出了什么问题?我需要将数组限制为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()

1 个答案:

答案 0 :(得分:0)

事实证明,香料让我得到的所有2907个样本的间距不均匀;有些间隔相等,有些则没有!我的4个样本恰好是等距的。

我和Paul Wagner的图书馆(链接here)平分了样本,谢谢Paul!

fft结果是1045Hz,这更合理。