【问题标题】:FFT on spice data (time, value) frequency axis not correct香料数据(时间、值)频率轴上的 FFT 不正确
【发布时间】:2014-01-02 13:05:25
【问题描述】:

我有两个从 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()

【问题讨论】:

    标签: python scipy fft


    【解决方案1】:

    表示Spice通过所有2907个样本相等地间隔地让我感到难受;有些在平等间隔的地方,其他人不是!我的4个样本恰好相同间隔。

    我已经与Paul Wagner的图书馆相同地将样本间隔开(Link here),谢谢保罗!

    和fft原来是1045Hz,这更合理。

    【讨论】:

    • ,使用linearize命令。不需要额外的工具。 span>
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    相关资源
    最近更新 更多