小波變換02(小波能量特征提?。?

摘要:本文用一個實例演示小波能量特征提取。本文素材來自網絡,筆者作了稍微修改。

01小波包變換

       小波包變換是比小波變換更加精細的變換。小波變換只對信號的低頻部分進行了分解,為高頻部分并未分解,忽略了信號的高頻部分(細節部分)。小波包變換彌補了這個不足之處。

02能量特征提取實例

構造信號如下:

import numpy as np
import matplotlib.pyplot as plt
import pywt
t=np.arange(300)
x=0.1*np.sin(0.03*t)
for i in range(90,100):
    x[i]=(i-89)*0.2
for i in range(100,110):
    x[i]=abs(i-110)*0.2
plt.plot(t,x)
plt.show()

小波變換02(小波能量特征提?。┑膱D1

小波包變換:

wp = pywt.WaveletPacket(x,'db1',mode='symmetric',maxlevel=3)

顯示原信號,各層各節點系數:

plt.figure(figsize=(15, 10))
plt.subplot(4,1,1)
plt.plot(x)
#第一層
plt.subplot(4,2,3)
plt.plot(a)
plt.subplot(4,2,4)
plt.plot(d)
#第二層
plt.subplot(4,4,9)
plt.plot(aa)
plt.subplot(4,4,10)
plt.plot(ad)
plt.subplot(4,4,11)
plt.plot(dd)
plt.subplot(4,4,12)
plt.plot(da)
#第三層
plt.subplot(4,8,25)
plt.plot(aaa)
plt.subplot(4,8,26)
plt.plot(aad)
plt.subplot(4,8,27)
plt.plot(add)
plt.subplot(4,8,28)
plt.plot(ada)
plt.subplot(4,8,29)
plt.plot(dda)
plt.subplot(4,8,30)
plt.plot(ddd)
plt.subplot(4,8,31)
plt.plot(dad)
plt.subplot(4,8,32)
plt.plot(daa)
plt.show()

小波變換02(小波能量特征提取)的圖2

提取第三層的八個節點的能量特征:

n = 3
re = []
for i in [node.path for node in wp.get_level(n, 'freq')]:
    re.append(wp[i].data)
energy = []
for i in re:
    energy.append(pow(np.linalg.norm(i,ord=None),2))

柱狀圖顯示能量特征:

plt.figure(figsize=(10, 7), dpi=80)
N = 8
values = energy
index = range(1,N+1)
width = 0.45
p2 = plt.bar(index, values,width,label="num",color="g")
plt.legend(loc="upper right")
plt.show()

小波變換02(小波能量特征提?。┑膱D3

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

15
5