离散平稳小波分析所用到的函数有swt小波分解和iswt小波重构。在这一部分可以学到如下内容:

l 加载信号

l 执行平稳小波分解

l 从小波系数中构造近似和细节

l 显示第一层的近似和细节

l 平稳小波逆变换恢复原始信号

l 执行多层平稳小波分解

l 重构第3层近似

l 重构1、2、3层细节

l 重构1、2层近似

l 显示分解的结果

l 从3层分解中重构原始信号

l 除噪

使用命令行实现一维分析

1. 加载信号(一个噪声污染的多普勒效应信号)

load noisdopp

2. 设置变量

s = noisdopp;

对于SWT变换,如果需要在第k层分解信号,那么原始信号需要能够平分成2^k份。所以如果原始信号的长度不满足要求,需要使用Signal Extension GUI工具或使用wextend函数来扩展它。

3. 执行一层平稳小波分解

[swa,swd] = swt(s,1,'db1');

函数执行将产生1层近似和细节的系数,两者和信号的长度是相等的,这也是平稳小波和普通小波不同的地方,从而使它在某些领域有好的效果。

4. 显示近似、细节小波系数

显示一层近似和细节的系数

subplot(1,2,1), plot(swa); title('Approximation cfs')

subplot(1,2,2), plot(swd); title('Detail cfs')

5. 使用平稳小波逆变换恢复原始信号

A0 = iswt(swa,swd,'db1');

重构的误差为

err = norm(s-A0)

err =

2.1450e-014

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

构建一层近似和细节,输入如下代码

nulcfs = zeros(size(swa));

A1 = iswt(swa,nulcfs,'db1');

D1 = iswt(nulcfs,swd,'db1');

显示结果如下

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

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

7. 执行多层平稳小波分解

使用db1小波做3层小波分解

[swa,swd] = swt(s,3,'db1');

产生的近似系数在swa中,细节系数在swd中,而且它们有相同的长度。

8. 显示近似和细节的系数

kp = 0;

for i = 1:3

subplot(3,2,kp+1), plot(swa(i,:));

title(['Approx. cfs level ',num2str(i)])

subplot(3,2,kp+2), plot(swd(i,:));

title(['Detail cfs level ',num2str(i)])

kp = kp + 2;

end

9. 从系数中重建第3层的近似

mzero = zeros(size(swd));

A = mzero;

A(3,:) = iswt(swa,mzero,'db1');

10. 从系数中重建细节

D = mzero;

for i = 1:3

swcfs = mzero;

swcfs(i,:) = swd(i,:);

D(i,:) = iswt(mzero,swcfs,'db1');

End

11. 从第3层近似和第2、3层细节中重建第1、2层近似

重建2、3层的近似

A(2,:) = A(3,:) + D(3,:);

A(1,:) = A(2,:) + D(2,:);

显示第1、2、3层的近似和细节

kp = 0;

for i = 1:3

subplot(3,2,kp+1), plot(A(i,:));

title(['Approx. level ',num2str(i)])

subplot(3,2,kp+2), plot(D(i,:));

title(['Detail level ',num2str(i)])

kp = kp + 2;

end

12. 阈值除噪

要去除噪声,先使用ddencmp函数计算一个默认的全局阈值,再使用wthresh函数执行细节系数的实际阈值,然后使用iswt得到除噪信号。

所有在一维离散小波变换中选择阈值的方法在一维平稳小波变换中都是有效的,GUI中两者的使用方法也一样。

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

dswd = wthresh(swd,sorh,thr);

clean = iswt(swa,dswd,'db1');

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

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

title('Original signal')

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

title('denoised signal')

得到的信号仍然有一些噪声,结果可以通过考虑对信号进行5层分解,然后再除噪来改善,如下

[swa,swd] = swt(s,5,'db1');

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

dswd = wthresh(swd,sorh,thr);

clean = iswt(swa,dswd,'db1');

subplot(2,1,1), plot(s); title('Original signal')

subplot(2,1,2), plot(clean); title('denoised signal')

第二种实现相同效果的语法如下

lev = 5; swc = swt(s,lev,'db1');

swcden = swc;

swcden(1:end-1,:) = wthresh(swcden(1:end-1,:),sorh,thr);

clean = iswt(swcden,'db1');

使用图形接口做一维除噪分析

1. 开启一维平稳小波除噪工具

输入wavemenu,选择SWT Denoising 1-D,出现如下GUI

2. 加载信号

Load Signal

3. 执行平稳小波分解

使用db1小波执行5层小波分解,得到的是非抽取系数(nondecimated coefficients),它们是使用相同的离散小波变换来得到的,只是省略了抽取的步骤。得到的结果如下

4. 使用平稳小波变换除噪

可以使用GUI默认的参数做除噪处理。右边的滑动条可以控制各级系数的阈值大小,也可以直接在系数图中直接拖动来调整阈值的大小,注意近似系数中没有阈值。点击denoise进行除噪处理

得到的效果是非常好的,但似乎在信号不连续的地方出现了过平滑,这个可以从残差图中看出来,在800的位置出现了突降点。

选择hard阈值模式代替soft模式,再进行除噪,结果如下

可以看到这次效果非常好,而且残差图也看起来像白噪声序列。为了验证这一点,可以点击Residuals按钮查看残差图及相关统计数据来详细说明。

swt matlab 中 swa,Matlab小波工具箱的使用3相关推荐

  1. Matlab小波工具箱常用函数

    1.Cwt :一维连续小波变换 格式:coefs=cwt(s,scales,'wavename') coefs=cwt(s,scales,'wavename','plot') scales:尺度向量, ...

  2. matlab 小波变换_matlab小波工具箱实例(二):时频分析和连续小波变换

    本文讲解matlab小波工具箱实例(二):时频分析和连续小波变换.目录如下: 链接:https://www.mathworks.com/help/wavelet/ug/time-frequency-a ...

  3. Matlab小波工具箱的使用2

    Matlab小波工具箱的使用2 (2011-11-11 09:32:57) 转载▼ http://blog.sina.com.cn/s/blog_6163bdeb0102dw7a.html#cmt_5 ...

  4. 正交db小波 图像处理 matlab,基于matlab小波工具箱的数字图像处理及小波分析

    基于matlab小波工具箱的数字图像处理及小波分析 基于 Matlab 小波工具箱的数字图像处理摘要:小波分析在图像处理中有非常重要的应用,包括图像压缩.去噪.分解和增强等.运用多分辨率分析可以将信号 ...

  5. 【图像去噪】基于matlab GUI butterworth+中值+维纳+小波图像去噪【含Matlab源码 520期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像去噪]基于matlab GUI butterworth+中值+维纳+小波图像去噪[含Matlab源码 520期] 获取代码方式2: ...

  6. matlab upcoef,Matlab小波工具箱的使用2

    工具箱提供了如下函数做一维信号分析: Function Name Purpose 分解函数 dwt 一层分解 wavedec 分解 wmaxlev 最大小波分解层数 重构函数 idwt 一层重构 wa ...

  7. MATLAB中的一些小技巧 - [MATLAB]

    http://liuxqsmile.blogbus.com/logs/17451138.html MATLAB中的一些小技巧 1. Ctrl+C 中断正在执行的操作 如果程序不小心进入死循环,或者计算 ...

  8. 【Matlab脑电信号】小波睡眠监测【含源码 595期】

    一.代码运行视频(哔哩哔哩) [Matlab脑电信号]小波睡眠监测[含源码 595期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 沈再阳.精通MATLAB ...

  9. matlab傅里叶变换去噪代码,小波的分析在心电信号去噪中应用(内附Matlab去噪源代码).ppt...

    求职应注意的礼仪 求职时最礼貌的修饰是淡妆 面试时最关键的神情是郑重 无论站还是坐,不能摇动和抖动 对话时目光不能游弋不定 要控制小动作 不要为掩饰紧张情绪而散淡 最优雅的礼仪修养是体现自然 以一种修 ...

最新文章

  1. Python 基础教程(第2版) 中文版+英文原版下载
  2. 数据导出到Excel
  3. OpenCASCADE:Modeling Data之3D几何
  4. P4549-[模板]裴蜀定理
  5. github上java项目_GitHub上10,000个最受欢迎的Java项目-以下是他们使用的顶级库
  6. 密码学专题 证书和CA指令 证书和CA功能概述
  7. 试用VisualStudio2005Beta2出现的小BUG
  8. 模拟linux终端测试java,介绍一个在线的Linux,没有安装Linux或者虚拟机不喜欢用的童鞋可以简单的用这个jslinux测试各种命令...
  9. Java基础笔记(一)
  10. [Sciter] 资源引用
  11. 光纤通信(邱昆、王晟版)课后答案
  12. 小觅深度相机标准版 ROS使用
  13. php如何识别flac文件,flac是什么格式
  14. 记阿里巴巴的一次面试
  15. 黄道、黄道平面、黄赤交角、正午太阳高度
  16. html中页面整体居中,css实现网页内容整体居中的三种方法总结
  17. html图片平铺div,前端小知识——图片平铺问题
  18. 学jQuery ,认识jQuery
  19. 807-C++多继承下,派生类对象有几张虚函数表?
  20. 浙大PTA-Python题库 编程题第一章(1-1~1-3)题解

热门文章

  1. Linux内核:网络过滤器简介与示例代码
  2. (2)Linux进程调度器-CPU负载
  3. AIO,BIO,NIO:同步阻塞式IO,同步非阻塞IO,异步非阻塞IO
  4. freemarker中运算符_freemarker常见语法大全
  5. win10 中午未使用 内存占用增高_清理磁盘空间【win10篇】
  6. (三)微调VGG16以对服装进行分类
  7. SQL 2017——新功能
  8. 正式发布! .NET开发控件集ComponentOne 新版本加入Blazor UI
  9. Microsoft 宣布 Visual Studio 2019 发布日期
  10. php 动态图表,excel实现动态图表的3种方法是什么