当前位置:文档之家› Matlab小波工具箱的使用

Matlab小波工具箱的使用

(2011-11-10 20:12:39)转载▼分类:学科知识标签:小波分析连续小波变换尺度系数信号最近想尝试一下小波的用法,就这matlab的帮助尝试了一下它的例子,顺便翻译了一下帮助的内容,发现matlab帮助做的确实不错,浅显易懂!现把翻译的文档写出来吧,想学习的共同学习吧!小波工具箱简介小波工具箱包含了图像化的工具和命令行函数,它可以实现如下功能:l 测试、探索小波和小波包的特性l 测试信号的统计特性和信号的组分l 对一维信号执行连续小波变换l 对一维、二维信号执行离散小波分析和综合l 对一维、二维信号执行小波包分解(参见帮助Using Wavelet Packets)l 对信号或图像进行压缩、去噪另外,工具箱使用户更方便的展示数据。

用户可以做如下选择:l 显示哪个信号l 放大感兴趣的区域l 配色设计来显示小波系数细节工具箱可以方便的导入、导出信息到磁盘或matlab工作空间。

具体详见File Menu Options一维连续小波分析这一部分来测试连续小波分析的特性。

连续小波分析只需要一个小波函数cwt。

在这一部分将学到如下内容:l 加载信号l 对信号执行连续小波变换l 绘制小波系数l 绘制指定尺度的小波系数l 绘制整个尺度小波系数中的最大值l 选择显示方式l 在尺度和伪频率之间切换l 细节放大l 在普通或绝对模式下显示系数l 选择执行小波分析的尺度使用命令行执行连续小波分析这个例子是一个包含噪声的正弦波1. 加载信号load noissin可以使用whos显示信号信息2. 执行连续小波变换c = cwt(noissin,1:48,'db4');函数cwt的参数分别为分析的信号、分析的尺度和使用的小波。

返回值c包含了在各尺度下的小波系数。

对于这里,c是一个48x1000的矩阵,每一行与一个尺度相关。

3. 绘制小波系数cwt函数可以接受第四个参数,来指定函数在执行结束后是否绘制连续小波变换系数的绝对值。

另外还可以接受更多的参数来定义显示的不同特性,详见cwt函数。

如下面的语句绘制系数结果c = cwt(noissin,1:48,'db4','plot');4. 选择分析的尺度cwt函数的第二个参数可以设定任意小波分析的尺度,只要这些尺度满足如下要求l 所有尺幅必须为正实数l 尺度的增量必须为正l 最高的尺度不能超过由信号决定的一个最大值如下面的代码可以执行从2开始的偶数尺度计算c = cwt(noissin,2:2:128,'db4','plot');显示结果如下这幅图像很明确的表示出了信号的周期性。

使用图形接口做连续小波分析1. 开启一维连续小波工具,只需输入如下命令wavemenu出现如下小波工具箱主菜单选择Continuous Wavelet 1-D菜单项,出现如下一维信号分析连续小波分析工具2. 加载信号选择菜单File->Load Signal,在Load Signal对话框里选择文件,它在matlab安装目录的toolbox/wavelet/wavedemo文件夹下,点击OK加载信号。

一维连续小波工具开始加载信号,加载后默认采样频率为1s。

3. 执行连续小波变换下面来测试使用db4小波对尺度1到48做小波分析,设置如下4. 点击Analyze按钮在短暂的计算后,工具将绘制小波系数,并在Coefficients line坐标系中绘制尺度为24的小波系数,在local maxima坐标系中绘制各尺度的小波系数最大值。

5. 查看小波Coefficients Line在小波系数图中右键点击可以选择展示其他尺度的小波系数,选择后点击New Coefficients Line按钮,Coefficients Line会相应更新。

6. 查看Maxima Line点击Refresh Maxima Line按钮,可以显示从尺度1到所选尺度的小波系数的最大值。

注意当在系数图中按下鼠标右键并移动时,会在最下面的Info框中显示当前鼠标位于的X 位置和尺度。

7. 在尺度和伪频率之间切换在右边选择Frequencies,当再在系数图中选择时,在Info中显示的将是Hz。

而关于尺度和频率的转换关系,可以看How to Connect Scale to Frequency?8. 选择要显示的坐标系9. 放大细节在系数框中按鼠标左键可以选择放大的范围。

10. 选择好放大范围后点击最下面的按钮可以实现指定的放大11. 显示普通系数或系数绝对值两种显示方式的区别在于,普通模式下,颜色映射是在系数的最大最小之间;而绝对模式,颜色映射是在0和最大的系数绝对值之间。

图形接口的导入导出信息导入信号到一维连续小波工具首先将要处理的信号保存到mat文件中,要求信号是一维的向量。

然后使用工具的File ->Load Signal菜单功能,选择此信号文件即可导入信号。

文件中第一个一维变量被认为是信号,变量在文件中顺序是按字母排序的。

保存小波系数小波分析完成后,点击File->Save->Coefficients,可以将分析结果保存到mat文件。

保存后,可以使用load函数加载数据,会看到保存的变量有小波系数coeff、尺度scales、小波的名字wname。

一维复信号连续小波分析对于复信号连续小波分析,小波工具箱中对应的函数是cwt。

使用命令行分析复信号这个例子是一个带尖头的信号,如下1. 加载信号load cuspamax文件中包含两个变量,caption和cuspamax,前者是此信号的定义,如下caption =x = linspace(0,1,1024); y = exp(-128*(.^2))-3*(abs.^;2. 执行连续小波变换c = cwt(cuspamax,1:2:64,'cgau4');3. 绘制结果c = cwt(cuspamax,1:2:64,'cgau4','plot');结果显示了四副图形,分别为系数的实部、虚部、模、相角。

使用图形接口分析复信号与实信号不同的是,选择Complex Continuous Wavelet 1-D,得到的结果如下具体操作过程与实信号的相似,如下Matlab小波工具箱的使用2 (2011-11-11 09:32:57)转载▼标签:分类:学科知识信号阈值分解系数小波分析一维离散小波分析在这一部分,可以学到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 =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 =11. 粗糙的去噪信号使用小波从信号中移除噪声需要辨识哪个或哪些组分包含噪声,然后重建没有这些组分的信号。

在这个例子中,我们注意到连续的近似随着越来越多的高频信息从信号中滤除,噪声变得越来越少。

相关主题