您的位置:

python小波包重构,python小波包分解

本文目录一览:

小波包分解

1.装载信号

在MATLAB命令行中输入

load noisbloc

s=noisbloc(1:1024);

ls=length(s);

plot(s);

2.完成信号的单尺度一维离散小波分解

采用db4基本小波分解信号

在命令窗口中输入

[cA1,cD1]=dwt(s,'db4');

这就产生了低频系数cA1和高频系数cD1。

可以通过whos命令查看cA1和cD1的长度:

whos

Name Size Bytes Class

cA1 1x515 4120 double array

cD1 1x515 4120 double array

ls 1x1 8 double array

noisbloc 1x1024 8192 double array

s 1x1024 8192 double array

Grand total is 3079 elements using 24632 bytes

3.从系数中重构低频部分和高频部分

从第二步产生的系数cA1和cD1构造第一层的低频和高频(A1和D1)系数;

A1=upcoef('a',cA1,'db4',1,ls);

D1=upcoef('a',cD1,'db4',1,ls);

或用下面两个函数:

A1=idwt(cA1,[],'db4',ls);

D1=idwt(cD1,[],'db4',ls);

4.显示高频和低频部分

为了显示第一层分解结果,输入

subplot(211); plot(A1); title('低频A1');

subplot(212); plot(D1); title('低频D1');

5.由小波逆变换恢复信号

使用idwt函数很容易实现,在命令窗口输入

subplot(211); plot(s); title('原始信号');

subplot(212); plot(A0); title('重构信号');

6.多层一维分解

为了完成一个5层的分解,输入:

[C,L]=wavedec(s,5,'db4');

7.提取系数的低频和高频部分

为了从上面的C中提取第3层的低频系数,输入:

cA3=appcoef(C,L,'db4',3);

8.重构第3层的低频系数

为了从上面的C中重构第3层的低频系数,输入:

A3=wrcoef('a',C,L,'db4',3);

9.重构第1、2、3、4、5层的高频信号

其方法是:

cA5=appcoef(C,L,'db4',5);

A5=wrcoef('a',C,L,'db4',5);

D1=wrcoef('d',C,L,'db4',1);

D2=wrcoef('d',C,L,'db4',2);

D3=wrcoef('d',C,L,'db4',3);

D4=wrcoef('d',C,L,'db4',4);

D5=wrcoef('d',C,L,'db4',5);

下面显示多尺度一维分解的结果:

subplot(322); plot(D1); title('低频D1');

subplot(323); plot(D2); title('低频D2');

subplot(323); plot(D3); title('低频D3');

subplot(325); plot(A5); title('低频D4');

subplot(326); plot(A5); title('低频D5');

10.重构原始信号并显示

A0=waverec(C,L,'db4');

subplot(311); plot(s); title('原始信号');

subplot(312); plot(A0); title('重构信号');

subplot(313); plot(s-A0); title('误差信号');

python如何实现类似matlab的小波滤波?

T=wpdec(y,5,'db40');

%信号y进行波包解层数5T波树plot看

a10=wprcoef(T,[1,0]);

%a10节点[1,0]进行重构信号貌似没层重构说吧能某层某节点进行重构节点编号波树

%以下为滤波程序(主要调节参数c的大小)

c=10;

wn=0.1;

fs=50000; %采样频率;

b=fir1(c,wn/(fs/2),hamming(c+1));

y1=filtfilt(b,1,y);%对y滤波。

大家好 我想请问下小波包分解后用wprcoef重构小波包系数有什么用呢?

wprcoef是某个节点的小波包系数重构,用来得到的是和原信号一样长度的信号

小波包双尺度函数的数学表达

小波包(WP)是由Coifman et al.在小波变换的基础上提出的。小波包变换不仅对低频分量进行分解,而且对高频部分提供更精细的分解,能够更为精确地确定信号所包含的频率成分,是一种更广泛的小波分解方法(孙煜等,2005;王云松等,2005)。

4.1.2.1 小波包变换的数学定义

小波包分解是建立在多分辨率分析的基础上。在多分辨率的小波分析中,平方可积空间 表明其小波分析是按照不同的尺度因子j把L2(R)分解为所有子空间Wj(j∈Z)的正交和。其中Wj为小波函数ψ(t)的闭包(小波子空间)。进一步对小波子空间Wj按照二进制进行频率细分可达到提高频率分辨率的目的。一种自然做法是将尺度空间Vj和小波子空间Wj用一个新的子空间 统一起来表征(杨超等,2004),令

高光谱遥感影像信息提取技术

,j∈Z,则正交分解Vj+1=Vj⊕Wj,即 得统一分解为

高光谱遥感影像信息提取技术

定义子空间 是函数μn(t)的闭包子空间,而 是函数μ2n(t)的闭包子空间,定义下面的递推子关系,并令μn(t)满足递推子关系的双尺度方程(Coifman et al.,1992;孙煜等,2005;王云松等,2005):

高光谱遥感影像信息提取技术

式中:递归定义的函数μn(n=1,2,…)称为由正交尺度函数μ0(t)=ψ(t)确定的小波包。其中,hk、gk、(k∈Z)分别称为低通滤波系数和高通滤波系数。gk=(-1)kh1-k,即两系数也具有正交关系。而当n=0时,μ0(t)=ψ(t),μ1(t)=ψ(t),由上式得到:

高光谱遥感影像信息提取技术

式中:μ0(t)和μ1(t)分别为尺度函数和小波函数的双尺度方程。显然μ0(t)和μ1(t)分别退化为尺度函数ψ(t)和小波基函数ψ(t)。序列 {μn(t)}(n∈Z+)称为由正交尺度函数μ0(t)=ψ(t)确定的小波包,或称序列 {μn(t)}为关于序列{hk}的正交小波包。

对任意非负整数n∈Z+和任一整数j∈Z,令 表示由小波包μn的二进伸缩和平移的线性组合合成的L2(R)的闭子空间,则:

高光谱遥感影像信息提取技术

式中:{Vj}是由尺度函数U0=ψ生成的L2(R)的多分辨分析;{Wj}是由小波U1=ψ生成的正交小波子空间序列。

4.1.2.2 小波包的空间分解与重构算法

根据尺度函数μ0(t)=ψ(t)和小波函数μ1(t)=ψ(t),利用式(4.2)、式(4.3)可得到如下空间分解:

高光谱遥感影像信息提取技术

令 {μn(t)}n∈z是关于低通滤波系数hk的小波包族,用下式生成子空间族。令n=1,2,…;j=1,2,…,并对上式作迭代分解,得Wj的分解(图4.2),有:

图4.2 小波空间的小波包子空间完全分解示意图

高光谱遥感影像信息提取技术

在实际应用中,通常关心的是L2(R)的某个子空间 的小波分解和小波包分解(Wu Yet al.,1996)。小波包分解有如图4.2的分解关系。 可以有不同的分解,对应的VL中的信号f(t)∈VL可以用不同的基的组合来表示,通常以信息代价函数为标准,选取该信号的最优表示。信息代价函数有不同的定义,但它必须能反映出将信号(或函数)在这组基下展开时所需要的计算量和存储量等花费。

记信号f(t)在子空间 上的小波包系数分别为 且l2为L2(R)的平方可积离散序列空间,则由小波包的定义及式(4.6)可得如下的小波包快速分解与重构算法。小波包分解算法:

高光谱遥感影像信息提取技术

在对高光谱影像进行小波包分解以及对影像分解系数进行处理之后,就要恢复成处理结果的图像。小波包变换的重构运算就是小波包分解的逆运算,是将处理后频率域内的系数重新合成时域图像。小波包重构算法:

高光谱遥感影像信息提取技术

式中:hk-2l,gk-2l分别称为低通滤波系数和高通滤波系数。

Python的pywavelet如何实现 matlab的小波算法系数重构的信号,matlab算法如下

T=wpdec(y,5,'db40');

%信号y进行波包解层数5T波树plot看

a10=wprcoef(T,[1,0]);

%a10节点[1,0]进行重构信号貌似没层重构说吧能某层某节点进行重构节点编号波树看

小波包分解,重构的波形与实际波形相差太大是什么问题。

瞅你这图,分解时貌似用滴是db1(即haar)小波吧,用滴是wprcoef函数的那个格式,即6阶逼近的单支重构,其意义是除掉原信号中其它63个相对高频频段的信息所剩下的单支重构逼近信息,你都除掉了那么多信息了为啥还会与原信号相差不大?还有像正余弦这样规律和平滑的函数为啥用最不光滑的db1处理?