代码:小波包分解与重构、小波包能量特征提取
1、小波变换的理解
傅里叶变换——短时傅里叶变换——小波变换。
参考文献:以下两篇参考资料讲述得十分清楚,有助于理解小波变换。
但具体的数学角度阐述,请参考其他资料。
(1)知乎专栏:形象易懂讲解算法I——小波变换
https://zhuanlan.zhihu.com/p/22450818
(2)知乎专栏:傅里叶分析之掐死教程。
https://zhuanlan.zhihu.com/p/19763358
2、小波包分解
小波包是为了克服小波分解在高频段的频率分辨率较差,而在低频段的时间分辨率较差的问题的基础上而提出的。
它是一种更精细的信号分析的方法,提高了信号的时域分辨率。
下面是两者的对比图:
3、能量谱
基于小波包分解提取多尺度空间能量特征的原理是把不同分解尺度上的信号能量求解出来,将这些能量值按尺度顺序排列成特征向量供识别使用。
20180510补充更新:具体计算公式如下所示,本文中未使用重构后的系数进行能量值计算,直接使用小波包分解后的系数,参考文献《基于小波包能量特征的滚动轴承故障监测方法 》。
4、Matlab代码
给出两部分代码,写成两个函数。一个是小波包分解与重构,另一个是能量谱函数。
下载地址:https://download.csdn.net/download/ckzhb/10030651
代码名称:wavelet_packetdecomposition_reconstruct
function wpt= wavelet_packetdecomposition_reconstruct( x,n,wpname )
%% 对信号进行小波包分解,得到节点的小波包系数。然后对每个节点系数进行重构。
% Decompose x at depth n with wpname wavelet packets.using Shannon entropy.
%
% x-input signal,列向量。
% n-the number of decomposition layers
% wpname-a particular wavelet.type:string.
%
%Author hubery_zhang
%Date 20170714%%
wpt=wpdec(x,n,wpname);
% Plot wavelet packet tree (binary tree)
plot(wpt)
%% wavelet packet coefficients.default:use the front 4.
cfs0=wpcoef(wpt,[n 0]);
cfs1=wpcoef(wpt,[n 1]);
cfs2=wpcoef(wpt,[n 2]);
cfs3=wpcoef(wpt,[n 3]);
figure;
subplot(5,1,1);
plot(x);
title('原始信号');
subplot(5,1,2);
plot(cfs0);
title(['结点 ',num2str(n) ' 1',' 系数'])
subplot(5,1,3);
plot(cfs1);
title(['结点 ',num2str(n) ' 2',' 系数'])
subplot(5,1,4);
plot(cfs2);
title(['结点 ',num2str(n) ' 3',' 系数'])
subplot(5,1,5);
plot(cfs3);
title(['结点 ',num2str(n) ' 4',' 系数'])
%% reconstruct wavelet packet coefficients.
rex0=wprcoef(wpt,[n 0]);
rex1=wprcoef(wpt,[n 1]);
rex2=wprcoef(wpt,[n 2]);
rex3=wprcoef(wpt,[n 3]);
figure;
subplot(5,1,1);
plot(x);
title('原始信号');
subplot(5,1,2);
plot(rex0);
title(['重构结点 ',num2str(n) ' 1',' 系数'])
subplot(5,1,3);
plot(rex1);
title(['重构结点 ',num2str(n) ' 2',' 系数'])
subplot(5,1,4);
plot(rex2);
title(['重构结点 ',num2str(n) ' 3',' 系数'])
subplot(5,1,5);
plot(rex3);
title(['重构结点 ',num2str(n) ' 4',' 系数'])
end
代码名称:wavelet_energy_spectrum
function E = wavelet_energy_spectrum( wpt,n )
%% 计算每一层每一个节点的能量
% wpt-wavelet packet tree
% n-第n层能量
%
% Author hubery_zhang
% Date 20170714%%
% 求第n层第i个节点的系数
E(1:2^n )=0;
for i=1:2^n
E(i) = norm(wpcoef(wpt,[n,i-1]),2)^2; %20180604更新 原代码:E(i) = norm(wpcoef(wpt,[n,i-1]),2)
end
%求每个节点的概率
E_total=sum(E);
for i=1:2^n
p_node(i)= 100*E(i)/E_total;
end
% E = wenergy(wpt); only get the last layer
figure;
x=1:2^n;
bar(x,p_node);
title(['第',num2str(n),'层']);
axis([0 2^n 0 100]);
xlabel('结点');
ylabel('能量百分比/%');
for j=1:2^n
text(x(j),p_node(i),num2str(p_node(j),'%0.2f'),...'HorizontalAlignment','center',...'VerticalAlignment','bottom')
endend
代码:小波包分解与重构、小波包能量特征提取相关推荐
- python小波分解与重构_小波分解和重构
小波变换能够很好地表征一大类以低频信息为主要成分的信号, 小波包变换可以对高频部分提供更精细的分解 详见(http://www.cnblogs.com/welen/articles/5667217.h ...
- 哈儿小波分解和重构(降维和升维)实现算法
[0]README 0.1)本文旨在讲解 哈儿小波变换(分解和重构)进行数据的降维和升维: [timestamp: 1703281610]时隔几个月再来review 哈儿小波变换算法的具体思路: 1) ...
- db9小波包分解matlab,小波包分解、重构 matlab代码
clear all close all clc % 加载信号 load leleccum; % 采样点 x = leleccum(300:2348); % x = importdata('V1.txt ...
- python小波分解与重构_python - 使用pyWavelets进行多级局部小波重构 - 堆栈内存溢出...
我设法编写了自己的wrcoef函数版本,该版本似乎可以正常工作: import pywt import numpy as np def wrcoef(X, coef_type, coeffs, wav ...
- 【小波变换基础知识+实战应用】Matlab中小波、小波包函数的分解,重构及区别等(持续更新)
1.首先,小波变换的时候要注意一个问题,就是最高频率fmax为采样频率fs的1/2,即小波变换的初始频率.fmax=1/2fs=小波变换的初始频率 下面来举一个例子. 一个原始信号,经历的时间长度为2 ...
- 小波包分解matlab程序
小波包分解(Wavelet Packet Decomposition)是小波变换的一种变形方法,在信号处理和数据分析中被广泛应用.Matlab是常用的数学软件之一,也提供了方便的小波分析工具箱,可以帮 ...
- 小波图像分解与重构程序存在的问题与解决办法
(思远老师的好文章留着) 转载自http://blog.csdn.net/chenyusiyuan/article/details/2513126 去年11月发布了一系列有关小波变换和图像处理的文章, ...
- (转)小波的分解和重构
转:天津大学 小波分析 宗婧 1015202078 原理可参考:https://wenku.baidu.com/view/73439a6d5901020207409cd5.html 1.单层小波分解 ...
- 【转】小波图像分解与重构
原文地址:[转]小波图像分解与重构 作者:freedesert 小波图像融合综述(1) 分类: 小波变换 2007-11-14 11:15 4728人阅读 评论(6) 收藏 举报 图像融合是将 ...
- 多元经验模态分解_交通运输|基于小波分解和长短时记忆网络的地铁进站量短时预测...
山东科学 ›› 2019, Vol. 32 ›› Issue (4): 56-63.doi: 10.3976/j.issn.1002-4026.2019.04.008 摘要: 针对城市地铁车站进站客流 ...
最新文章
- TypeScript学习笔记之 接口(Interface)
- 智能驾驶L2的黄金时代,打磨地图是关键
- VIM打开shell脚本中文乱码解决
- recyclerview 滚动冲突_如何处理手势冲突 | 手势导航连载 (三)
- python不想学了-不要再被Python洗脑了!!
- 网络安全系列之五十四 为GRUB引导菜单设置密码
- linux 日文 字体,安装Fedora 11的程序用的竟然是日文字体?!
- vue中下载图片跨域
- jadx学习记录01
- Linux下查找结构体定义的位置
- 镜头的焦距与视场角简介!
- 支付项目:9、购物车模块
- [第六章 CTF之PWN章]n1ker
- 生命是一种长期而持续的累积 - 台湾清华彭明辉老师 [转]
- c语言设计程序计算器,C语言程序设计,做一个简单计算器
- 字节跳动暑期实习生一面面经 大三
- 人脉是设计出来的,进入高端人脉圈的方法
- 安卓模拟器排行_小鸡模拟器安卓版使用教程
- U++ Slate基础小记
- unity实现吃鸡摄像头,自动拉近拉远视距,不被遮挡物遮盖人物效果