小波包分解python代码(小波包分解算法)

  • 1、python如何实现类似matlab的小波滤波?
  • 2、急求用matlab编小波包3级分解及输出其系数的程序,那位高手帮助我一下,将不胜感激,先谢谢啦!
  • 3、最佳小波包分解层数的获取
  • 4、怎么用matlab小波包分解
  • 5、小波包分解
  • 6、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滤波。

load ir; %将信号装入MATLAB工作环境

s=X106_BA_time(1:1000); %取采样信号的前1~1000个采样点

is=length(s); %计算采样序列长度

subplot(321);plot(s);title(‘原始信号’);%画出原始信号波形

xlabel(‘样本序列号’);

ylabel(‘幅值A’);

wpt=wpdec(s,3,’db1′,’shannon’);% 用db1小波包对信号x3层分解,用shannon熵作为熵标准

plot(wpt);%绘制小波包树

N=allnodes(wpt);% 计算小波包分解树的结点

%提取各节点的小波包系数

for i=1:length(N)

X=wpcoef(wpt,i-1);

subplot(floor((length(N)+1)/2),2,i);plot(X);

title([‘节点’,num2str(i) ‘的小波包系数’]);

end

figure;

%各节点小波包重构系数

for i=1:length(N)

rcfs=wprcoef(wpt,i-1);

subplot(floor((length(N)+1)/2),2,i);plot(rcfs);

title([‘重构节点’,num2str(i) ‘小波包系数’]);

end

因为小波包分解高频系数的奇异值在每一分解层都不同,即分解层数的变化会引起奇异值的变化,因此,可以通过分析奇异值变化规律来确定分解层数。定义一个判定函数C(r,k),用其函数值的变化来表征小波包分解每层信息的变化,设C(r,k)函数为

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

式中:r为特征矩阵维数;k为正整数。

通过大量的实验分析,表明小波包的分解层数与各层数对应C(r,k)函数值的变化存在一定的内在联系。随着各层C(r,k)函数值的变化,有用信号和噪声的比值也发生着显著的变化。当在某分解层处C(r,k)的函数值到达某一程度时,这就使目标地物更好地分离出来,而使噪声减弱,这样就可以确定最佳分解层数。

在AVIRIS实验数据1~9层的小波包分解中,根据高频系数矩阵分别计算出各层处C(r,k)函数值。随着分解层数的增加,其C(r,k)函数值在不断减小,其变化率也发生着显著变化。图4.6显示了各分解层数下的C(r,k)函数值的实际变化趋势和这种趋势变化所反演的回归函数曲线,其回归曲线方程采用接近C(r,k)函数值变化趋势的最低次多项式函数来表示。从图4.6上可以看出,两条曲线非常接近地重合在一起,说明了回归函数曲线能很好地表征C(r,k)的变化特征。

根据各分解层下离散的C(r,k)函数值,找出最接近其变化趋势的最低次多项式回归函数方程y(x):

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

然后求解方程y(x)的二阶导数y″(x),即找出曲线拐点的位置,此点位置就代表着小波包分解的最佳分解层数。在表4.1中,可以看到在分解层数达到5层时,y″(x)的值开始从负值变为正值,说明y″(x)在第4层和第5层之间有拐点,从而确认第四层为最佳分解层数。

图4.6 基于影像AVIRIS的判定函数C(r,k)值变化曲线和回归函数曲线

表4.1 高光谱影像AVIRIS不同小波包分解层的SVD特征值分析

小波图像去噪的方法大概分为3类

1:基于小波变换摸极大值原理

2:基于小波变换系数的相关性

3:基于小波阈值的去噪。

基于小波阈值的去噪方法3个步骤:

1:

计算含噪声图像的小波变换。选择合适的小波基和小波分解层数j,运用matlab

分解算法将含有噪声图像进行j层小波分解,得到相应的小波分解系数。

2:对分解后的高频系数进行阈值量化,对于从1

到j的每一层,选择一个适当的阈值和合适的阈值函数,将分解得到的高频系数进行阈值量化,得到估计小波系数。

3:进行小波逆变化,根据图像小波分解后的第j层,低频

系数(尺度系数)和经过阈值量化处理的各层高频系数(小波系数),运用matlab重构算法进行小波重构,得到去噪后的图像。

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 1×515 4120 double array

cD1 1×515 4120 double array

ls 1×1 8 double array

noisbloc 1×1024 8192 double array

s 1×1024 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(‘误差信号’);

第一行:将wave 用 meyr小波进行3层小波包分解,获得一个小波包树 t

第二行:将小波包树的第二行的四个节点收起来,也就是让第二行的节点变为树的最底层节点。因为第一行中小 波包树的节点个数是 第一层2个,第二层4个,第三层8个。现在将t2就是将第三层的节点再聚合回第二 层。

第三行:读取第二层四个节点系数的size

第四~七行:将所有四个节点的小波包系数变为0

第八行:将四个节点的系数重组到t3小波树中。

第九行:对t3小波树进行重构,获得信号wave2

原创文章,作者:M25A1,如若转载,请注明出处:https://www.506064.com/n/126994.html

(0)
M25A1M25A1
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • python学习心得第5天(学完python的心得体会)

    本文目录一览: 1、Python精选5篇教学心得 2、Python该怎么入门? 3、python语言主要是做什么的 4、请问怎么学习Python? 5、自学python推荐书籍 P…

    编程 2024-10-03
  • Shiro配置不拦截请求

    Shiro是一个用于身份验证、授权、加密、会话管理等的Java的安全框架,为Java应用程序提供安全认证和授权支持。在实际开发过程中,除了需要进行身份验证和授权认证外,还需要对一些…

    编程 2024-10-04
  • PVE升级全攻略

    一、PVE升级7.2 PVE(Proxmox Virtual Environment)是一款开源、基于Debian的企业级虚拟化平台,在其不断更新的版本中7.2号版本依旧是众多企业…

    编程 2024-10-10
  • Bootstrap确认提示框

    一、Bootstrap框架 Bootstrap是一个开源平台,通过HTML、CSS和JavaScript构建Web应用程序。它是在Twitter开发过程中出现的,目的是提高开发人员…

    编程 2024-10-12
  • makefile.am详解

    一、makefile.am怎么写 makefile.am是GNU自动化工具中的一个文件,用于定义用户的构建规则。它是自动生成Makefile文件的脚本文件,其格式与GNU auto…

    编程 2024-10-03
  • windows找不到文件regsvr32jscript.dl的简单介绍

    本文目录一览: 1、windows找不到文件regsvr32.exe 该怎么办啊? 2、我的电脑运行显示找不到regsvr32 jscript.dll 3、WINDOWS找不到re…

    编程 2024-10-03
  • java传递方法,java传递方式

    本文目录一览: 1、JAVA中传递实参的方法,求举例解释? 2、java方法参数怎么引用传递boolean 3、java类方法如何实现引用传递和值传递 4、Java的参数传递是值传…

    编程 2024-10-11
  • jquerybase64简介

    jquerybase64是jQuery框架中的一种插件,它可以将字符串编码为base64格式,也可以将base64格式的字符串解码成普通字符串。它是由yckart开发的,是一个轻量…

    编程 2024-10-04
  • 以StackBuilder为中心的Python工程师

    引言 Python语言因其简单易学、易读易写、支持多范式(面向对象、函数式、命令式等)等特点,越来越受到企业的青睐。Python不仅适用于Web开发、数据科学、机器学习等领域,也广…

    编程 2024-10-04
  • 介绍一个学习php经典的网站,php教程网站

    本文目录一览: 1、php 好的学习网站有哪些? 2、请程序员大神推荐几个学习PHP的好网站 3、请介绍一些比较深入高级的PHP技术网站或论坛 4、求几个关于学习php的网站,有视…

    编程 2024-10-03

发表回复

登录后才能评论