【发布时间】:2016-02-11 22:32:26
【问题描述】:
我在绘制信号的 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()
【问题讨论】:
-
错误指的是哪一行?
-
文件“C:\Python27\lib\site-packages\numpy\fft\fftpack.py”,第 79 行,在 _raw_fft r = work_function(a, wsave)
-
你的代码是哪一行?
-
为什么不使用
np.genfromtxt或np.loadtxt将文本文件读入浮点数组,而不是readlines()
标签: python matplotlib plot fft ifft