2016-02-11 36 views
0

我收到以下错误,当我绘制信号的FFT。该代码从.txt文件中读取信号样本。 类型错误:无法从D(“S17”)投阵列数据,根据规则“安全”蟒蛇FFT图“式的错误”

  #%% 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() 
+0

没有错误是指什么前行? –

+0

文件 “C:\ Python27 \ LIB \站点包\ numpy的\ FFT \ fftpack.py”,行79,在_raw_fft R = work_function(一,wsave) –

+1

哪*您*代码行? –

回答

0

a=text_file.readlines()会给你一个字符串列表,D型(“complex128”)。您需要将字符串转换为数字(可能是浮动),你可以做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)