当我绘制信号的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()
答案 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)