基于小波变换多尺度空间能量分布特征提取方法
转载自:https://write-bug.com/article/1940.html
小波分析技术可以把信号在各频率波段中的特征提取出来,基于小波变化的多尺度空间能量分布特征提取方法是对信号进行频带分析,再分别以计算所得的各个频带的能量作为特征向量。
信号f(t)的二进小波分解可表示为:
f
(
t
)
=
A
j
+
Σ
D
j
f(t) = Aj + ΣDj
f(t)=Aj+ΣDj
其中A是近似信号,为低频部分;D是细节信号,为高频部分,此时信号的频带分布如图:
信号的总能量为:
E
=
E
A
j
+
∑
E
D
j
E = EAj + ∑EDj
E=EAj+∑EDj
选择第j层的近似信号和各层的细节信号的能量作为特征,构造特征向量
F
=
[
E
A
j
,
E
D
1
,
E
D
2
,
…
…
.
E
D
j
]
F = [EAj, ED1 , ED2 , …….EDj]
F=[EAj,ED1,ED2,…….EDj]
利用小波变换提取出可以代表声波信号的向量数据,即完成从声波信号的特征向量数据的变换。本例利用小波函数对声波信号数据进行分解,得到5个层次的小波系数。
利用这些小波系数求得各个能量值,这些能量值即可作为声波信号的特征数据。
在python中,Scipy本身提供一些信号处理函数,但不够全面,更好的信号处理库是PyWaves(pywt)。
#-*- coding: utf-8 -*-
#利用小波分析进行特征分析
#参数初始化
inputfile= 'leleccum.mat'
#提取自Matlab的信号文件
from scipy.io import loadmat
#mat是MATLAB专用格式,需要用loadmat读取它
mat = loadmat(inputfile)signal = mat['leleccum'][0]
#导入PyWavelets
import pywt
coeffs = pywt.wavedec(signal, 'bior3.7', level = 5)
#返回结果为level+1个数字,第一个数组为逼近系数数组,后面的依次是细节系数数组
print(coeffs)