было интересно, если есть реализация для энергии для 1-D сейсмического импульса в Python, так же, как Matlab «[Ea, Ed] = Wenergy (C, L) '. Я попытался написать один на моем собственном, но я не уверен в этом: Формулы:энергия для 1-D сейсмического импульса в Python
Где Dj предполагается вектор детализации, и J = 1,2, ... , ld и N1 - длина данных на уровне разложения.
import json
import pywt
f=open('DataFile.txt','r')
D=json.load(f)
f.close()
#create the wavelet function
db1 = pywt.Wavelet('db13')
#calculate the number of necessary decompositions
NbrDecomp= pywt.dwt_max_level(len(D), db1)+1
#Initialize an empty list to receive the Detail and Approximation
Vector = [None] * NbrDecomp
#we use the Wavelet decomposition in the pywt module
Vector = pywt.wavedec(D, db1)
#Now Vector = [Approxiamtion N, Details N, Details N-1,.....]
#Where N would be the number of decompositions
Согласно определению энергии на уровне к является:
Energy(k)=np.sqrt(sum([x**2 for x in Vecktor[len(Vektor)-N-1-k]])/len(Vektor))
ли реализация правильно?
Есть ли причина, по которой вы используете квадратный корень NumPy, когда функция 'sqrt' из' math' pac kage в Python будет делать? Ни один из ваших типов данных не был первоначально «numpy'-массивами, поэтому я не вижу смысла в вычислении массива вывода« numpy »(по крайней мере, не в этой текущей версии кода), когда вы, вероятно, не будете использовать« numpy » s представление данных. – rayryeng
Ваше двойное определение «Вектор» излишнее, вы не можете предварительно распределить список и полностью переписать его. –
Удалить квадратный корень – ejectamenta