python fft情节“类型错误”

时间:2016-02-11 14:01:11

标签: python matplotlib plot fft ifft

当我绘制信号的FFT时,我得到了跟随错误。代码从.txt文件中读取信号样本。 TypeError:根据规则'safe'

,无法将数组数据从dtype('S17')转换为dtype('complex128')
         #%% Import libraries
           import numpy as np
           from scipy import signal
           from scipy import fft,log10
           from scipy import ifft
           import matplotlib.pyplot as plt
           import scipy.fftpack

           #%%  Import signal
           text_file = open("sample.txt", "r")
           a=text_file.readlines()
           plt.figure(1)
           plt.plot(a)
           fs=1000
           t=np.arange(0,(len(a)))/float(fs)
           plt.figure(201)
           plt.plot(t,a)
           plt.title('Signal')
           plt.show()
#%% Plot FFT
n=len(a) # Number of samples
k=np.arange(n)
T=n/float(fs) # Sample spacing
frq=k/T
frq = k/T # two sides frequency range
frq = frq[range(n/2)] # one side frequency range

Y = np.fft.fft(a)/n # fft computing and normalization
Y = Y[range(n/2)]

plt.figure(203)
plt.plot(frq,np.abs(Y),'r')  # plotting the spectrum
plt.show()

1 个答案:

答案 0 :(得分:0)

a=text_file.readlines()会为您提供字符串列表。您需要先将字符串转换为数字(可能是浮点数),然后才能执行plot(a)fft(a)

a=text_file.readlines()
a = [float(x) for x in a]
plt.figure(1)
plt.plot(a)
Y = np.fft.fft(a)