使用小波变换重构某个节点的信号

来源:http://blog.163.com/lxfan_0406@126/blog/static/6096992620125713240582/


1. 使用小波分解、重构

1)wrcoef 由多层小波分解重构某一层的分解信号;

2)waverec 直接重构原始信号

注意:如果原始信号的长度为N,则使用wrcoef得到的信号,不论是近似信号信息还是细节信息,其长度都为N。

主要代码如下:

fg2=figure('numbertitle','on','name','使用wavedec信号分解');

[d,a]=wavedec(y,3,'db5');

subplot(211);plot(d);ylabel('信号分解');

subplot(212);plot(a);ylabel('各段信号长度');

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客

 

fg3=figure('numbertitle','on','name','使用wrcoef获取每层信号');

a3=wrcoef('a',d,a,'db5',3);

d3=wrcoef('d',d,a,'db5',3);

d2=wrcoef('d',d,a,'db5',2);

d1=wrcoef('d',d,a,'db5',1);

subplot(411);plot(a3);ylabel('a1');

subplot(412);plot(d3);ylabel('d3');

subplot(413);plot(d2);ylabel('d2');

subplot(414);plot(d1);ylabel('d1');

fg4=figure('numbertitle','on','name','使用waverec的效果图');

subplot(211);

plot(y);ylabel('原始信号');

subplot(212);

sx=waverec(d,a,'db5');

plot(sx);ylabel('恢复的信号');

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客

 

fg5=figure('numbertitle','on','name','使用Hilbert的效果图');

ys=hilbert(d3);

ydata=abs(ys);

Fs=1000;

NFFT=1024;

p=abs(fft(ydata,NFFT));

plot((0:NFFT/2-1)/NFFT*Fs,p(1:NFFT/2));

xlabel('频率 f/Hz');

ylabel('功率谱 P/W');

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客
  

2. 使用小波包分解、重构

参见另外我的一篇博客《使用小波包获得某个节点信号的几个细节问题》。

3. 几种重构获取节点处信号的不同之外

3.1 关于小波分解时,层数、近似信号、细节信号的对应关系

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客
 

wrcoef

Reconstruct single branch from 1-D wavelet coefficients

Syntax

X = wrcoef('type',C,L,'wname',N)

Description

wrcoef reconstructs the coefficients of a one-dimensional signal, given a wavelet decomposition structure (C and L) and either a specified wavelet ('wname', see wfilters for more information) or specified reconstruction filters (Lo_R and Hi_R).

Argument 'type' determines whether approximation ('type' = 'a') or detail ('type' = 'd') coefficients are reconstructed. When 'type' = 'a', N is allowed to be 0; otherwise, a strictly positive number N is required. Level N must be an integer such that N ≤length(L)-2.

解释:

如果分解三层,则

信号:C=CA3+CD3+CD2+CD1,

长度标示:L=[size(CA3),size(CD3),size(CD2),size(CD1),size(C)]

如果要求解节点CA3,则使用a3=wrcoef('a',d,a,'db5',3);

如果要求解节点CD3,则使用d3=wrcoef('d',d,a,'db5',3);

如果要求解节点CD2,则使用d2=wrcoef('d',d,a,'db5',2);

如果要求解节点CD1,则使用d1=wrcoef('d',d,a,'db5',1);

最后一个参数是根据在L中的索引顺序决定的,且最大值为length(L)-2,在此应用中最大值是3。

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客
  

%-------------------------------------------------

a3=wrcoef('a',d,a,'db5',3);     % 得到CA3,等同于a3=wrcoef('a',d,a,'db5');

d1=wrcoef('d',d,a,'db5',1);    % 得到CD1

d2=wrcoef('d',d,a,'db5',2);    % 得到CD2

d3=wrcoef('d',d,a,'db5',3);     % 得到CD3,等同于d3=wrcoef('d',d,a,'db5');

%-------------------------------------------------

wpt = wpdec(y,3,'db5');   

cfs_a3= wprcoef(wpt,[3 0]);     % 得到CA3

cfs_d1= wprcoef(wpt,[1 1]);     % 得到CD1

cfs_d2= wprcoef(wpt,[2 1]);     % 得到CD2

cfs_d3= wprcoef(wpt,[3 1]);     % 得到CD3 由此可知,小波分解与小波包分解,其分解思路是一致的。只是小波分解只用了左半部分,小波包分解用了整个二叉树。

3.2 关于小波包分解时,层数、近似信号、细节信号的对应关系

参见另外一篇博文:《使用小波包获得某个节点信号的几个细节问题》。

3.3 信号长度

以原始信号的长度是1024,分解层数是3作为例子。

1)使用wrcoef,其格式为:X = wrcoef('type',C,L,'wname',N) ,使用此函数可得到任意节点处的信号,即除了节点CA3,CD3,CD2,CD1之外,还可以获取节点CA1,CA2处的信号。小波分解后使用的wrcoef函数,其特殊之处在于从每个节点处得到的信号长度均与原始信号长度一致,如3.1节的图所示。

2)使用wpcoef,其格式为:X = wpcoef(T,N),例如:

wpt = wpdec(x,3,'db1');         % Plot wavelet packet tree wpt. 
plot(wpt);
cfs = wpcoef(wpt,[3 0]);

 
使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客
原始信号长度为1024,经过3层分解后,原始信号的近似信号长度为128。
使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客

3)使用wprcoef,其格式为:X=wprcoef(T,N),例如:

t = wpdec(x,3,'db1','shannon');             % Plot wavelet packet tree. 
plot(t);
rcfs = wprcoef(t,[3 0]);
figure(2); 
subplot(211); 
plot(x); title('Original signal');
subplot(212); 
plot(rcfs); title('Reconstructed packet 3,0)');

使用小波变换重构某个节点的信号 - 小雨点 - lxfan_0406的博客
原始信号长度为1024,使用该函数得到某个节点处的信号,其长度与原始信号长度一致。如果对该信号采取降采样,降采样系数为8,则可得到的信号的长度与wpcoef函数得到的信号的长度一致。

 


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值