• 【经验模态分解】3.EMD模态分解算法设计与准备工作


    /**
     * @poject          经验模态分解及其衍生算法的研究及其在语音信号处理中的应用
     * @file            EMD模态分解算法设计与准备工作
     * @author			jUicE_g2R(qq:3406291309)
     * 
     * @language        MATLAB
     * @EDA				Base on matlabR2022b
     * @editor			Obsidian(黑曜石笔记软件)
     * 
     * @copyright		2023
     * @COPYRIGHT	    原创学习笔记:转载需获得博主本人同意,且需标明转载源
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    设计原理遵循上一节的3个基本概念


    1 处理极限

    • 首先,需要对实际处理过程中 上下包络均值无法为0(无法达到极限) 的问题进行 逼近(取一个阈值作为条件)

    一个 逼近值 a n 逼近值a_n 逼近值an 越接近 极限(理论)值 a ∞ 极限(理论)值a_∞ 极限(理论)值a,它与 上一个逼近值 a n − 1 a_{n-1} an1 的差值越小

    2 E M D EMD EMD 分解算法 流程

    2-1 步骤

    2-2 流程图

    3 MATLAB代码实现

    3-1 定义采样周期与采样频率

    • f = 1 T f=\frac{1}{T} f=T1
    SampFreq = 512;			% 采样频率,每秒钟 采集 512个样本
    SampPeri = 1/512;		% 采样周期,采集 1个样本 需要 1/512s
    t = 0:SampPeri:1;		% 定义时间向量t(这个向量表示了信号的时间点),步长为 1/512 ,范围0~1
    
    • 1
    • 2
    • 3

    3-2 生成源信号

    • 1. x ( t ) = c o s ( w t ) x(t)=cos(wt) x(t)=cos(wt)
    • 2. w = 2 π f w=2\pi f w=2πf
    • 得出: x ( t ) = c o s ( 2 π f t ) x(t)=cos(2\pi ft) x(t)=cos(2πft)
    %% 输入的源信号由 wave1与wave2 叠加
    AWave1 = 0.5;			% 定义 wave1 的 幅值
    AWave2 = 1;				% 定义 wave2 的 幅值
    fWave1 = 20;			% 定义 wave1 的 频率
    fWave2 = 30;			% 定义 wave2 的 频率
    wave1 = AWave1*cos(2*pi*fWave1*t);			% 定义 第一个余弦波分量
    wave2 = AWave2*cos(2*pi*fWave2*t);			% 定义 第二个余弦波分量
    input = wave1 + wave2;						% 分量合并
    x = input;									% 设置初始值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3-3 绘制源信号

    figure					% 调出 figure 绘图 图形化窗口
    plot(t,x);				% 绘制坐标图:横坐标为 t,纵坐标为 x=x(t)
    grid on					% 添加网格线,使得绘图更加方便和准确
    xlabel('t');			% 标记 横坐标为 t
    ylabel('x');			% 标记 纵坐标为 x=x(t)
    title('源输入信号');		% 说明坐标图的含义
    legend('x(t)=0.5cos(40πt)+cos(60πt)')		% 说明源输入信号的组成
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 运行后 f i g u r e figure figure 窗口弹出,编号为1
      在这里插入图片描述

    3-4 模态分解

    3-4-1 下载相关工具箱

    两个软件: E M D EMD EMD 工具箱时频分析工具箱

    %% 仅用于调试
    imf = emd(x);
    emd_visu(x,t,imf);
    
    • 1
    • 2
    • 3

    这样就说明添加成功了
    在这里插入图片描述

    3-4-2 调用函数

    %% Get IMF
    [imf,residual] = emd(x);	% imf为一个矩阵,每列为一个模态函数,residual为残差向量
    [M,N]=size(imf);			% M:模态数,N:模态长度
    
    • 1
    • 2
    • 3

    参考文献:EMD算法研究及其在信号去噪中的应用_王婷.caj(第二章)
    附加emd.ppt

  • 相关阅读:
    course-nlp——2-svd-nmf-topic-modeling
    C/CPP基础练习题多维数组,矩阵转置,杨辉三角详解
    资本-劳动力错配指数计算、金融错配指标两大维度指标(内附代码)
    安装国产系统Kylin-Desktop实战
    已解决Python向数据库插入数据的字符串中含有单引号或双引号报错
    xxl-job的使用
    Nginx 学习
    自动排版与语种转换工具
    CppCheck
    前端研习录(11)——CSS3新特性——圆角及阴影讲解及示例说明
  • 原文地址:https://blog.csdn.net/qq_73928885/article/details/134323516