1. FFT代码
import numpy as np
from scipy.fftpack import fft
def FFT(data,Fs):
n=len(data)
if n%2!=0:
n-=1
# data=data[range(0,n)] #由于要进行取半处理,所以将n与2取余
data.pop()
Y=fft(data) #快速傅里叶变换
Fre=np.linspace(0,n-1,n)*Fs/n #linspace(start,stop,number)
Fre=Fre[range(0,int(n/2))]
Amp=np.abs(Y[range(0,int(n/2))])
Amp=Amp/(n/2)
Amp[0]=Amp[0]/2
Amp[-1]=Amp[-1]/2
return Fre, Amp
说明:Fs:数据点个数。该方法定义的FFT函数直接将你选的数据看作一个周期。
例子:
for i in range(0,10):
iq_current = pd.read_excel(p+files[i])
iq = iq_current['iq(A)'].tolist()
iq_effective = iq[307:340]
fre,amp = FFT(iq_effective,33)
2. 小波包
import pywt
import numpy as np
def wpd_energy(signal,n):
#w