Matlab小波工具箱的使用2

http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html

一维离散小波分析

工具箱提供了如下函数做一维信号分析:

 
Function Name


Purpose


分解函数


dwt


一层分解


wavedec


分解


wmaxlev


最大小波分解层数


重构函数


idwt


一层重构


waverec


全重构


wrcoef


有选择性重构


upcoef


单一重构


分解结构工具


detcoef


细节系数抽取


appcoef


近似系数抽取


upwlev


分解结构重排


去噪和压缩


ddencmp


使用默认进行去噪和压缩


wbmpen


使用处罚门槛进行一维或二维去噪


wdcbm


使用处罚门槛进行一维(使用Birgé-Massart方法)


wdencmp


小波去噪和压缩


wden


自适应小波去噪


wthrmngr


门槛设置管理

在这一部分,可以学到

l 加载信号

l 执行一层小波分解

l 从系数重建近似和细节

l 显示近似和细节

l 通过逆小波变换重建信号

l 执行多层小波分解

l 抽取近似系数和细节系数

l 重构第三层近似

l 重构第1、2、3层细节

l 显示多层分解的结果

l 从第三层分解重构原始信号

l 从信号中去除噪声

l 改善分析

l 压缩信号

l 显示信号的统计信息和直方图

一维分析---使用命令行

这个例子包含一个真实世界的信号---测量3天的电功耗。这个信号很典型,因为它包含一个明显的测量噪声,而小波分析可以有效的移除噪声。

1. 加载信号

load leleccum

截取信号

s = leleccum(1:3920);

l_s = length(s);

2. 对信号执行一层小波分解

使用db1小波执行一层小波分解,执行下面的语句产生近似系数cA1、细节系数cD1

[cA1,cD1] = dwt(s,‘db1‘);

3. 从系数中构建近似和细节

从系数cA1和cD1中构建一层近似A1和细节D1,执行以下代码

A1 = upcoef(‘a‘,cA1,‘db1‘,1,l_s);

D1 = upcoef(‘d‘,cD1,‘db1‘,1,l_s);

A1 = idwt(cA1,[],‘db1‘,l_s);

D1 = idwt([],cD1,‘db1‘,l_s);

4. 显示近似和细节

subplot(1,2,1); plot(A1); title(‘Approximation A1‘)

subplot(1,2,2); plot(D1); title(‘Detail D1‘)

5. 使用逆小波变换恢复信号

A0 = idwt(cA1,cD1,‘db1‘,l_s);

err = max(abs(s-A0))

err =

2.2737e-013

6. 执行多层小波分解

执行3层信号分解

[C,L] = wavedec(s,3,‘db1‘);

函数返回3层分解的各组分系数C(连接在一个向量里),向量L里返回的是各组分的长度。分解的结构如下

7. 抽取近似系数和细节系数

从C中抽取3层近似系数

cA3 = appcoef(C,L,‘db1‘,3);

从C中抽取3、2、1层细节系数

cD3 = detcoef(C,L,3);

cD2 = detcoef(C,L,2);

cD1 = detcoef(C,L,1);

或者

[cD1,cD2,cD3] = detcoef(C,L,[1,2,3]);

结果显示如下,从上到下依次为原始信号、3层近似系数和3~1层细节系数

1. 重建3层近似和1、2、3层细节

从C中重建3层近似

A3 = wrcoef(‘a‘,C,L,‘db1‘,3);

从C中重建1、2、3层细节

D1 = wrcoef(‘d‘,C,L,‘db1‘,1);

D2 = wrcoef(‘d‘,C,L,‘db1‘,2);

D3 = wrcoef(‘d‘,C,L,‘db1‘,3);

2. 显示多层分解的结果

显示3层分解的结果

subplot(2,2,1); plot(A3);

title(‘Approximation A3‘)

subplot(2,2,2); plot(D1);

title(‘Detail D1‘)

subplot(2,2,3); plot(D2);

title(‘Detail D2‘)

subplot(2,2,4); plot(D3);

title(‘Detail D3‘)

10. 从3层分解中重建原始信号

A0 = waverec(C,L,‘db1‘);

err = max(abs(s-A0))

err =

4.5475e-013

11. 粗糙的去噪信号

使用小波从信号中移除噪声需要辨识哪个或哪些组分包含噪声,然后重建没有这些组分的信号。

在这个例子中,我们注意到连续的近似随着越来越多的高频信息从信号中滤除,噪声变得越来越少。3层近似与原始信号对比会发现变得很干净。对比近似和原始信号,如下

subplot(2,1,1);plot(s);title(‘Original‘); axis off

subplot(2,1,2);plot(A3);title(‘Level 3 Approximation‘);

axis off

当然,摒弃所有高频信息,我们会失去原始信号中的很多最尖锐的特征。最佳的去噪需要通过一种更精细的叫阈值方法,它只丢弃部分超过一定范围的细节。

12. 通过阈值去除噪声

先来看3层分析的细节

subplot(3,1,1); plot(D1); title(‘Detail Level 1‘); axis off

subplot(3,1,2); plot(D2); title(‘Detail Level 2‘); axis off

subplot(3,1,3); plot(D3); title(‘Detail Level 3‘); axis off

从图中可以看到,大多数噪声发生在信号的后面部分,表现在细节上就是出现大波动的地方。如果我们通过设定最大值来限定细节强度,会怎么样呢?这会有降低噪声效果,同时保留不影响的必要细节。这是一种很好的方法。

注意到cD1,cD2,cD3是向量,那么我们就可以通过直接操纵这些向量来达到目的,即设置这些向量小于其峰值或平均值的一部分,然后就可以由这些设定了阈值的系数重建新的细节信号D1、D2、D3。

实际去噪过程中,可以使用ddencmp函数来计算默认的阈值参数,然后用wdencmp函数来执行实际的去噪过程,代码如下

[thr,sorh,keepapp] = ddencmp(‘den‘,‘wv‘,s);

clean = wdencmp(‘gbl‘,C,L,‘db1‘,3,thr,sorh,keepapp);

注意wdencmp使用了第6步中小波分解的结果C、L,另外指定了db1小波来做分析,指定全局阈值选项gb1.详细参见ddencmp函数和wdencmp函数。

显示原始信号和去噪信号如下

subplot(2,1,1); plot(s(2000:3920)); title(‘Original‘)

subplot(2,1,2); plot(clean(2000:3920)); title(‘denoised‘)

这里我们只绘制了原始信号中包含噪声的部分,特别注意我们是如何在移除了噪声的情况下仍保持原有的尖锐细节的,这也是小波分析强大的地方。

使用命令行函数去除噪声是很笨拙的,而图形工具提供了一种更方便使用的自动化阈值去噪方式。

关于去噪过程的更多信息可以在下面的部分找到:

* Remove noise from a signal 从一个信号中去除噪声

*De-Noising in the Wavelet Toolbox User‘s Guide 小波工具箱中的除噪

*One-Dimensional Variance Adaptive Thresholding of Wavelet Coefficients 一维小波系数自适应阈值

*One-Dimensional Variance Adaptive Thresholding of Wavelet Coeffiients in the Wavelet Toolbox User‘s Guide

使用图形接口做一维分析

1. 开启一维小波分析工具

Wavemenu->Wavelet 1-D

2. 加载信号

3. 执行一层小波分解

使用db1小波执行一层分解

4. 放大有关细节

5. 执行多层小波分解

使用db1小波执行3层分解。

选择不同的显示方式:在Display mode下拉菜单下可以选择不同的显示方式,默认的显示方式为Full Decomposition Mode,其他的显示方式及其意义如下

Separate Mode:在不同的列中显示细节和近似;

Superimpose Mode:在一张图上以不同的颜色显示细节、近似;

Tree Mode:显示分解树、原始信号和选择的成分,在分解树上选择你想显示的成分;

Show and Scroll Mode:显示3个窗口,第一个显示原始信号和选择的近似信号,第二个显示选择的细节,第三个显示小波系数;

Show and Scroll Mode(Stem Cfs):和Show and Scroll Mode很接近,除了第三个窗口中以杆状图替代颜色条显示小波系数。

对于每个分析任务,可以改变默认的显示方式,只要在View->Default Display Mode子菜单下选择理想的方式即可;不同的显示方式会有额外的显示选项,在More Display Options中做选择,这些选项可以控制不同成分的显示、选择是否显示原始信号与细节、近似对比。

6. 从信号中移除噪声

图形接口提供了以预定义的阈值策略除噪的选项,这使得从信号中除噪非常容易,只需点击De-noise按钮就可以弹出除噪工具。

点击Close可以关闭除噪窗口,由于不能同时打开除噪和压缩窗口,所以需要关闭除噪窗口再进行信号压缩。关闭时会提示Update Synthesized Signal提示对话框,点击No,如果点击Yes,合成的信号会加载到主窗口。

7. 改善分析

图像工具可以在任何时候轻易的改善分析,只需要改变分析的方法就可以了,如使用db3做5层小波分析。

8. 压缩信号

图形接口提供了自动化或人工阈值的做压缩的功能。

默认使用的是全阈值方法,当然也可以使用人工阈值的方法,选择By Level thresholding选项即可,下面的滑动条提供了各级阈值独立调整的功能,相应的调整可以在左边的窗口中看到,在图形窗口中也可以直接拖动来改变阈值。

完成选择后,点击压缩按钮可以完成压缩。从压缩的结果可以看到,压缩过程去除了大多数噪声,但保存了信号99.74%的能量。自动化阈值是非常有效的,它使除3.2%的小波系数都归零化了。

9. 显示残差

点击Residuals按钮可以查看压缩的残差。显示的统计数据包括测量的趋势(平均值、众数、中值)和散布情况(极差、标准差)。另外,工具还提供了概率分布直方图和累计直方图以及时间序列图,如自相关函数、频谱。这些都是和去噪工具是一样的。

10. 显示统计分布

可以显示一系列有关信号及其组分的统计数据。

点击Statistics按钮可以查看统计数据信息,点击Histograms可以查看直方图。

从图形接口中导入导出信息

保存信息

l 保存合成的信号

如加载如下信号File > Example Analysis > Basic Signals > with db3 at level 5 → Sum of sines,做除噪或压缩处理后,保存合成信号File > Save > Synthesized Signal,保存后加载文件,会得到如下变量:

如果使用除全阈值外的方法时,得到的变量结构如下

Synthsig是合成的信号,除噪或压缩的小波方法保存在wname中,相互依赖的各级阈值保存在thrParams中,小波分解的等级数和cell的长度相等,thrParams{i},i从1到5分别保存了阈值间距上下限的值和阈值(间距阈值是允许的,在自适应阈值方法中会用到,参见One-Dimensional Variance Adaptive Thresholding of Wavelet Coefficients)

如果使用的全阈值方法,保存的数据结构如下

alTHR保存的是全阈值的值。

l 保存离散小波变换的系数

一个例子的文件内容如下

Coefs包含了离散小波变换的系数,longs包含了各组分的长度,thrParams为空,因为合成信号不存在,wname是小波的名字。

l 保存分解结果(即保存小波分析的全体数据)

小波工具将保存为.wal文件,加载方式为

load wdecex1d.wa1 –mat

文件内容为

加载信息

加载的文件只要和保存的相应文件中的变量一样即可。

最终代码(有bug)

你好,我把你上面的程序写成如下的。m文件
load leleccum
s=leleccum(1:3920);
ls=length(s);
[C,L]=wavedec(s,3,‘db1‘);
[thr,sorh,keepapp]=ddencmp(‘den‘,‘wv‘,s);
clean=wdencmp(‘gb1‘,C,L,‘db1‘,3,thr,sorh,keepapp);

程序报错,错误信息为:
??? Error using ==> wdencmp at 62
Invalid argument v

时间: 2024-11-11 11:04:49

Matlab小波工具箱的使用2的相关文章

信号处理——MATLAB小波工具箱使用简介

作者:桂. 时间:2017-02-19  21:47:27 链接:http://www.cnblogs.com/xingshansi/articles/6417638.html 声明:转载请注明出处,谢谢. 前言 本文主要介绍MATLAB小波工具箱的使用.并以一维离散信号为例,简要分析. 一.小波分解 不同于傅里叶变换,小波分解采用小波基的方式对信号进行分解,即通过基信号的平移.伸缩等变换,将信号进行分解.下图给出小波分解的一般特性: 图中可以观察到,a8对应的小波基较大,d8~d1对应的小波基

【转】小波与小波包、小波包分解与信号重构、小波包能量特征提取 暨 小波包分解后实现按频率大小分布重新排列(Matlab 程序详解)

转:https://blog.csdn.net/cqfdcw/article/details/84995904 小波与小波包.小波包分解与信号重构.小波包能量特征提取   (Matlab 程序详解) -----暨 小波包分解后解决频率大小分布重新排列问题 本人当前对小波理解不是很深入,通过翻阅网络他人博客,进行汇总总结,重新调试Matlab代码,实现对小波与小波包.小波包分解与信号重构.小波包能量特征提取,供大家参考,后续将继续更新! 本人在分析信号的过程中发现,按照网上所述的小波包分解方法理解

小波去噪的基本知识

本篇是这段时间学习小波变换的一个收尾,了解一下常见的小波函数,混个脸熟,知道一下常见的几个术语,有个印象即可,这里就当是先作一个备忘录,以后若有需要再深入研究. 一.小波基选择标准 小波变换不同于傅里叶变换,根据小波母函数的不同,小波变换的结果也不尽相同.现实中到底选择使用哪一种小波的标准一般有以下几点: 1.支撑长度 小波函数Ψ(t).Ψ(ω).尺度函数φ(t)和φ(ω)的支撑区间,是当时间或频率趋向于无穷大时,Ψ(t).Ψ(ω).φ(t)和φ(ω)从一个有限值收敛到0的长度.支撑长度越长,一

ECG信号读取,检测QRS,P,T 波(基于小波去噪与检测),基于BP神经网络的身份识别

这学期选了神经网络的课程,最后作业是处理ECG信号,并利用神经网络进行识别. 1  ECG介绍与读取ECG信号 1)ECG介绍  具体ECG背景应用就不介绍了,大家可以参考百度 谷歌.只是简单说下ECG的结构: 一个完整周期的ECG信号有 QRS P T 波组成,不同的人对应不用的波形,同一个人在不同的阶段波形也不同.我们需要根据各个波形的特点,提取出相应的特征,对不同的人进行身份识别. 2)ECG信号读取 首先需要到MIT-BIH数据库中下载ECG信号,具体的下载地址与程序读取内容介绍可以参考

相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标系和像平面坐标系都不重合.同时考虑两个因素 : (1)摄像机镜头的畸变误差,像平面上的成像位置与线性变换公式计算的透视变换投影结果有偏差: (2)计算机中图像坐标单位是存储器中离散像素的个数,所以像平面上的连续坐标还需取整转换. 摄像机参数 l  摄像机内部参数 (Intrinsic Paramet

小波系数

1. 求小波变化系数时a b怎么取? 小波变换的概念是由法国从事石油信号处理的工程师J.Morlet在1974年首先提出的,通过物理的直观和信号处理的实际需要经验的建立了反演公式,当时未能得到数学家的认可.正如1807年法国的热学工程师J.B.J.Fourier提出任一函数都能展开成三角函数的无穷级数的创新概念未能得到数学家J.L.Lagrange,P.S.Laplace以及A.M.Legendre的认可一样.幸运的是,早在七十年代,A.Calderon表示定理的发现.Hardy空间的原子分解和

ECG信号读出,检测QRS,P,T 波(小波去噪,并根据检测),基于BP辨识的神经网络

这学期的课程选择神经网络.最后的作业处理ECG信号,并利用神经网络识别. 1  ECG引进和阅读ECG信号 1)ECG介绍  详细ECG背景应用就不介绍了,大家能够參考百度 谷歌.仅仅是简单说下ECG的结构: 一个完整周期的ECG信号有 QRS P T 波组成,不同的人相应不用的波形,同一个人在不同的阶段波形也不同.我们须要依据各个波形的特点,提取出相应的特征,对不同的人进行身份识别. 2)ECG信号读取 首先须要到MIT-BIH数据库中下载ECG信号,具体的下载地址与程序读取内容介绍能够參考一

第一代程序猿王小波

Managershare:据我所知,最文艺的群体并不是文科生,而是理科生. 多数人知道王小波是小说家,部分人分不清财经作家吴晓波和小说家王小波是不是一回事儿.却很少有人知道王小波可以算的上中国早期的程序员,在 90 年代初的时候因为国内应用软件缺乏,爱捣鼓东西的王小波利用闲暇时间学习了汇编和C语言,编了中文编辑器和输入法.中文编辑器和输入法任何一个都是大牛级的 GEEK 才会去尝试的东西,比如求伯君.王小波通过卖软件还挣了些钱,当时很多中观村的老板要拉他入伙,当然写代码这种来钱快的活对屌丝王小波

小波去噪

在实际的工程应用中,所分析的信号可能包含许多尖峰或突变部分,并且噪声也不是平稳的白噪声. 对这种信号的降噪处理,用传统的傅立叶变换分析,显得无能为力,因为它不能给出信号在某个时间点上的变化情况. 通常情况下有用信号表现为低频部分或是一些比较平稳的信号,而噪声信号则表现为高频的信号. 处理 小波系数! 三个基本的步骤: (1)对含噪声信号进行小波变换: (2)对变换得到的小波系数进行某种处理,以去除其中包含的噪声: (3)对处理后的小波系数进行小波逆变换,得到去噪后的信号. 小波去噪方法的不同之处