• matlab小波变换、离散小波变换函数使用


    matlab中,连续小波变换、离散小波变换函数使用比较复杂,最近做了个总结。

    参考连接

    参考1:https://www.jianshu.com/p/56733f6c0a10

    参考2:小波变换工具箱(7页)-原创力文档

    参考3:《Matlab信号处理》 沈再阳,清华大学出版社,第8章

    注意:以下所有函数均为matlab 2020a环境中测试,更早的版本未做测试。

    一、连续小波变换

    1.1 正变换cwt

    1.1.1 语法

    语法如下,详细用法可通过命令【doc cwt】详细了解,一般使用时只需用其中两个参数即可:

    ①wname:小波基的名称:分别对应为:

    wname的值小波基
    morseMorse
    amorMorlet(Gabor)
    bumpBump

    ②fs:x的抽样频率。当给定fs时,画出的时频图的XY轴分别为实际的时间和频率;不指定时,画出的时归一化频率和采样点。

    1.1.2 示例

    cwt函数 用法比较简单,可以举个简单例子如下:其中锥形虚线为影响锥,影响锥范围内的值可信度较高:

    1. clc; clear; close all;
    2. load sumsin;
    3. x = sumsin(1:500);
    4. x = x + randn(1, length(x));
    5. Fs = 10;
    6. figure; cwt(x, 'amor'); % 不指定Fs
    7. figure; cwt(x, 'amor', Fs); % 指定Fs

    1.2 反变换icwt

    1.2 .1 语法

    用法基本同正变换,其中参数说明如下:

    wt:正变换得到的矩阵;

    xrec:反变换重构的信号。注意重构的信号和原信号还是有区别的。

     1.2.2 示例

    1. clc; clear; close all;
    2. load sumsin;
    3. x = sumsin(1:500);
    4. x = x + randn(1, length(x));
    5. Fs = 10;
    6. [wt, f] = cwt(x, 'amor', Fs); % 指定Fs
    7. xrec1 = icwt(wt, 'amor'); % 反变换,指定小波基
    8. xrec2 = icwt(wt, f, [0.06, 0.31]); % 反变换,指定频率范围可实现滤波效果。
    9. subplot(311); plot(x); title('x');
    10. subplot(312); plot(xrec1); title('全频率小波逆变换')
    11. subplot(313); plot(xrec2); title('针对部分频率范围进行小波逆变换')

    二、离散小波变换 

    2.1 函数总结

    2.1.1 函数列表

     

     2.1.2 小波分解图

    2.1.2.1 小波分解的算法步骤

    2.1.2.2  小波重构的算法步骤

    其实就是上采样后分别通过低通、高通滤波器。

     2.2 小波基总结

    使用离散小波变换时,经常会设置错小波基函数。因为离散小波变换的小波基参数wname的格式应给为【wavelet_name】+[number]。具体总结如下:

    wname的值小波基名称N取值
    morlMorlet小波-
    mexh墨西哥草帽小波-
    meyrMeyer小波-
    haarHaar小波-
    dbN紧支集正交小波1,2,3,...
    symN近似对称的紧支集正交小波通常取2~8
    coifNCoiflet小波1~5
    biorNr,Nd双正交样条小波。r-重构;d-分解1~6

    2.3 示例

    2.3.1 dwt、idwt

    1. clear all;
    2. load sumsin;
    3. x = sumsin(1:500);
    4. [cA, cD] = dwt(x, 'db2');
    5. x_idwt = idwt(cA, cD, 'db2');
    6. subplot(411); plot(x); title('x');
    7. subplot(412); plot(cA); title('cA of dwt'); xlim([1, length(x)]);
    8. subplot(413); plot(cD); title('cD of dwt'); xlim([1, length(x)]);
    9. subplot(414); plot(x_idwt); title('idwt'); xlim([1, length(x)]);

     2.3.2 wavedec、waverec、wrcoef

    1. clear;
    2. load sumsin;
    3. x = sumsin(1:500);
    4. [c, l] = wavedec(x, 3, 'db3');
    5. subplot(521); plot(x); title('x'); xlim([1, length(x)]);
    6. xx = waverec(c,l,'db3');
    7. subplot(522); plot(x); title('waverec重构信号'); xlim([1, length(x)]);
    8. subplot(523); plot(c); title('wavedec-3个尺度分解结果'); xlim([1, length(x)]);
    9. for i=1:3
    10. a1 = wrcoef('a', c, l, 'db3', i); % a-低频重构,d-高频重构
    11. subplot(5,2, 2*i + 3); plot(a1);
    12. title(['wrcoef-从第', num2str(i),'个尺度的低频分量重构到0级']); xlim([1, length(x)]);
    13. end
    14. for i=1:3
    15. a1 = wrcoef('d', c, l, 'db3', i); % a-低频重构,d-高频重构
    16. subplot(5,2, 2*i + 4); plot(a1);
    17. title(['wrcoef-从第', num2str(i),'个尺度的高频分量重构到0级']); xlim([1, length(x)]);
    18. end

     2.2.3 upwlev、upcoef

  • 相关阅读:
    刚参加工作的表弟问我如何设计一个表
    基于javaweb的公园景区导游网站系统jsp版本-计算机毕业设计
    不要再说你不会了——网络性能问题排查思路
    三大浏览器兼容性问题总结
    【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(9 月 13 日论文合集)
    【c++百日刷题计划】 ———— DAY16,刷题百天,养成刷题好习惯
    京东数据报告:2023年8月京东手机行业品牌销售排行榜
    竞赛 机器视觉目标检测 - opencv 深度学习
    M-LVDS收发器MS2111,可替代SN65MLVD206
    【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务
  • 原文地址:https://blog.csdn.net/wxyczhyza/article/details/126909866