代码:小波包分解与重构、小波包能量特征提取
来源:互联网 发布:指甲刀品牌排行榜知乎 编辑:程序博客网 时间:2024/05/16 11:17
1、小波变换的理解
傅里叶变换——短时傅里叶变换——小波变换。
参考文献:以下两篇参考资料讲述得十分清楚,有助于理解小波变换。
但具体的数学角度阐述,请参考其他资料。
(1)知乎专栏:形象易懂讲解算法I——小波变换
https://zhuanlan.zhihu.com/p/22450818
(2)知乎专栏:傅里叶分析之掐死教程。
https://zhuanlan.zhihu.com/p/19763358
2、小波包分解
小波包是为了克服小波分解在高频段的频率分辨率较差,而在低频段的时间分辨率较差的问题的基础上而提出的。
它是一种更精细的信号分析的方法,提高了信号的时域分辨率。
下面是两者的对比图:
3、能量谱
基于小波包分解提取多尺度空间能量特征的原理是把不同分解尺度上的信号能量求解出来,将这些能量值按尺度顺序排列成特征向量供识别使用。
4、Matlab代码
给出两部分代码,写成两个函数。一个是小波包分解与重构,另一个是能量谱函数。
代码名称: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); %求第i个节点的范数平方,其实也就是平方和end%求每个节点的概率E_total=sum(E); for i=1:2^np_node(i)= 100*E(i)/E_total;end% E = wenergy(wpt); only get the last layerfigure;x=1:2^n;bar(x,p_node);title(['第',num2str(n),'层']);axis([0 2^n 0 100]);xlabel('结点');ylabel('能量百分比/%');for j=1:2^ntext(x(j),p_node(i),num2str(p_node(j),'%0.2f'),... 'HorizontalAlignment','center',... 'VerticalAlignment','bottom')endend
阅读全文
1 0
- 代码:小波包分解与重构、小波包能量特征提取
- 代码:小波包分解与重构、小波包能量特征提取
- 小波包分解提取特征--生理信号
- 小波包分解
- 小波包分解树
- 小波包分解一例
- 图像小波包分解后如何改变分解系数再重构呢?
- 一种小波包的实例
- 小波包变换(函数应用介绍)
- 另一个思路,用的是小波包
- 小波包变换的入门 - - -MATLAB
- matlab——小波包变换
- 小波包变换入门——MATLAB
- Matlab小波包分解后如何求各频带信号的能量值?
- Matlab小波包分解后如何求各频带信号的能量值?
- Matlab小波包分解后如何求各频带信号的能量值?
- 小波的秘密6_小波包的理解
- 小波的秘密6_小波包的理解
- socket中的read返回0
- 纪念一次搭建git服务器所踩的坑,最详细全部过程 | ssh | git | centos
- 《Machine Learning》第三讲 逻辑回归(LR)
- maven版本对应jdk版本要求
- Android 之路1---安装配置环境Mac版
- 代码:小波包分解与重构、小波包能量特征提取
- 凸包 hdu 1348
- 求最大子列和问题(浙江大学数据结构)
- 这里有一款超强工具:`团队编程`,`结对编程`,`远程协助`,用什么工具好?
- day6day7作业
- 图解归并排序
- 获取两个list的交集和两个list中双方分别不包含的集合
- 腾讯实习小结
- Linux基础——Vim编辑器的使用