首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中一维小波的能量

Python中一维小波的能量
EN

Stack Overflow用户
提问于 2016-06-06 13:58:02
回答 1查看 2.4K关注 0票数 0

我想知道Python中的Energyfor1-D小波是否有实现,就像Matlab 'Ea,Ed = wenergy(C,L)‘一样。我试着自己写一本,但我不确定:公式是:

其中Dj是细节向量,j= 1,2,…,ld和N1是分解层的数据长度。

代码语言:javascript
复制
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

根据定义,k级的能量是:

代码语言:javascript
复制
Energy(k)=np.sqrt(sum([x**2 for x in Vecktor[len(Vektor)-N-1-k]])/len(Vektor))

实施是否正确?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-06 14:17:02

您可以稍微简化代码:

代码语言:javascript
复制
coeffs[len(coeffs) - k - 1]

可以重写为

代码语言:javascript
复制
coeffs[-k]

并且您可以将平方和求和作为一个NumPy操作(因为您已经在使用NumPy )。

代码语言:javascript
复制
def Energy(coeffs, k):
    return np.sqrt(np.sum(np.array(coeffs[-k]) ** 2)) / len(coeffs[-k])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37659422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档