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

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


SampFreq = 512; % 采样频率,每秒钟 采集 512个样本
SampPeri = 1/512; % 采样周期,采集 1个样本 需要 1/512s
t = 0:SampPeri:1; % 定义时间向量t(这个向量表示了信号的时间点),步长为 1/512 ,范围0~1
%% 输入的源信号由 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; % 设置初始值
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)') % 说明源输入信号的组成

两个软件: E M D EMD EMD 工具箱 与 时频分析工具箱
时频分析工具箱下载链接源
如下是添加 时频分析工具箱* 的步骤(注:添加最顶的文件夹tftb-0.2即可包含下面所有子文件夹)

EMD工具箱下载链接源
同上操作
检查一下工具箱是否正常添加:调用 e m d ( ) emd() emd() 函数执行 I M F IMF IMF 的计算(模态分解)
%% 仅用于调试
imf = emd(x);
emd_visu(x,t,imf);
这样就说明添加成功了

%% Get IMF
[imf,residual] = emd(x); % imf为一个矩阵,每列为一个模态函数,residual为残差向量
[M,N]=size(imf); % M:模态数,N:模态长度
参考文献:EMD算法研究及其在信号去噪中的应用_王婷.caj(第二章)
附加:emd.ppt