拿到一组实测信号,不管是轴承振动、心电波形、风电功率还是井筒压力,做分析的第一步几乎都是同一个动作:把信号拆开。拆掉随机噪声,露出长期趋势,把周期性成分和瞬态冲击分离出来,后面再做特征提取、故障诊断或者预测建模就顺手多了。传统频谱分析(FFT)在平稳周期信号上很能打,可真碰上非线性、非平稳、含有模态混叠的实测数据,它很难给出让人满意的结构。于是就有了我们今天要盘的这一长串方法:EMD、EEMD、CEEMD、FEEMD、CEEMDAN、LMD、RLMD、EWT、VMD、MVMD、SVMD、TVF-EMD、SSD、SSA、REMD。这一堆名字看起来吓人,其实背后就五条技术路线。这篇文章我要做的不只是列菜单,而是把每条路线的原理、Matlab实现要点、参数怎么设、坑在哪里,一次性说清楚。适合做信号处理、故障诊断、生物医学数据分析和时间序列预测的同学参考,也适合刚接触信号分解、想快速上手选型的初学者。
1. 方法全景与设计思路拆解
1.1 从傅里叶到分解:为什么会有这么多“拆法”
先退一步想一个问题:为什么要发明这么多种分解方法?FFT不好用吗?
FFT的底层假设是信号由一系列平稳正弦波叠加而成。对一段电机稳态运行数据,FFT确实能给出漂亮的频谱;但如果你拿到的是启动过程采样、故障冲击、风速随机波动这类信号,它的频率成分随时间变化,甚至会出现突发的高能量脉冲,FFT全局平均下来,细节全被抹平了。短时傅里叶变换(STFT)在这个方向上前进了一步,用时间窗截断信号做局部频谱,但又引入了新矛盾:窗越短时间分辨率越高,频率分辨率越低,二者不可兼得。小波变换比STFT灵活,可以变尺度分析,可它需要预先选小波基函数,选得好是锦上添花,选得不好就跟用错滤镜一样,真实成分被扭曲掉。
于是大家开始思考另一种思路:不做固定基函数,让分解方式跟着信号本身走。这就是EMD的哲学——经验模态分解,不去假设信号是正弦波的线性组合,而是根据信号的局部极值包络,一层层把波动“筛”出来。从1998年Huang提出EMD开始,这条思路演化出了庞大的家族,随后又有人从优化、滤波、矩阵分解等角度另起炉灶,形成了LMD、EWT、VMD、SSA等不同路线的算法。今天我们面对的,正是这个百花齐放的家族谱系。
1.2 用家族视角看清单:五种技术路线
标题里列了十五种方法,市面上不少清单还会把一些同族变种算进去,凑成“十六种”“二十种”的说法。我的建议是不要一个个死记,只要你抓住五条技术路线,所有方法都能对上号。
| 技术路线 | 代表方法 | 核心思路 | 分解产物 |
|---|---|---|---|
| 经验迭代类 | EMD、EEMD、CEEMD、FEEMD、CEEMDAN、REMD | 通过包络估计和均值筛选逐层剥离波动 | 本征模态函数(IMF) |
| 局部均值类 | LMD、RLMD | 用包络信号和纯调频信号迭代解调 | 乘积函数(PF) |
| 滤波/频域分割类 | EWT、TVF-EMD | 从频谱边界或时变滤波角度构造自适应滤波器组 | AM-FM分量 |
| 变分优化类 | VMD、MVMD、SVMD | 将分解建模为带宽最优化问题迭代求解 | 有限带宽模态 |
| 矩阵分解类 | SSD、SSA | 基于时间序列轨迹矩阵的奇异值分解重构 | 趋势、周期、噪声分量 |
这个分类不是严格互斥,比如TVF-EMD用的是时变滤波器,但优化路径上又和EMD有血缘关系;SSD也可以看作是SSA的迭代化升级。但用这个框架做选型,比挨个查原论文高效得多。后面的叙述就按这个脉络展开。
2. EMD谱系:从EMD到CEEMDAN再到REMD
2.1 EMD的基本功与Matlab调用
先说EMD。它的操作步骤粗看很“傻”:找到信号所有局部极大值和极小值,用三次样条分别插值出上包络和下包络,取二者的均值,从原始信号里减掉这个均值,得到一个去掉低频背景的剩余序列;如果剩余序列满足本征模态函数(IMF)的两个条件——极值点数和过零点数相等或至多差一个、局部均值为零——就把它当作一个IMF;不满足就重复上述筛选过程,直到收敛。然后把IMF从信号中剥离,对剩余信号继续同样的筛选,循环下去,最后得到一串IMF加上一个趋势项。
Matlab从R2020b开始内置了emd函数,直接调用非常方便:
% x为待分解信号向量 [imf, residual] = emd(x, 'MaxNumIMF', 8, 'SiftMaxIterations', 200);如果用的是老版本,就只能装第三方工具箱或自己写代码。自己写EMD不算难,核心就是包络构造、均值相减、停止准则三步。但写了就会知道三次样条插值在信号端点处特别容易发散,包络末端一飞冲天,导致分解出来的IMF首尾震荡。工程上常用做法是在分解前做镜像延拓,把端点“镜面”复制一段再构造包络,能明显抑制端点效应。
EMD最大的毛病是模态混叠。一个典型例子:信号里有一个高频冲击和一个低频振荡,筛选过程中部分高频分量被“吞”进低频IMF里,导致分解结果不稳定,物理意义也不清晰。这个问题困扰了研究者很多年,也直接催生了下面几个衍生版本。
2.2 EEMD与CEEMD:以噪制噪
既然EMD在局部尺度上容易混叠,有人想到一个反直觉的办法:主动往信号里加白噪声,再分解,再平均。这就是EEMD的基本思想。
白噪声在频域上均匀分布,会把不同尺度的信号成分“垫”起来,使得每个筛选步骤都有连续尺度可循,不容易发生尺度跳变。具体操作是:每次给原始信号加一组不同幅度的白噪声,做一次EMD;重复N次;把所有结果按IMF序号求平均。由于白噪声是随机的,多次平均之后彼此抵消,真实分量保留下来。代码框架如下:
Nstd = 0.2; % 噪声幅值,常取原始信号标准差的0.1~0.4倍 NR = 200; % 集成次数,一般100~500 sumIMF = zeros(maxNumIMF, length(x)); for i = 1:NR noise = randn(1, length(x)) * (std(x) * Nstd); [imf, ~] = emd(x + noise, 'MaxNumIMF', maxNumIMF); sumIMF = sumIMF + imf; end imf_eemd = sumIMF / NR;这里两个参数很关键:Nstd太小起不到尺度填充作用,太大则会引入较大残余噪声,一般以0.2倍原始标准差起步,看分解结果再调;NR太少平均不充分,太多计算开销大。如果数据点很多,EEMD跑起来相当慢,我通常建议先把数据降采样到合适长度,或者开Matlab的并行池(parfor代替for)来加速。
CEEMD是针对EEMD残余噪声问题的改进。先说EEMD的不足:加噪分解再平均,重构信号不等于原始信号,总有一层“淡淡的噪声底”。CEEMD的做法是每次同时加入一对正负白噪声,分别做EMD,然后把正、负两次结果平均。因为正噪声和负噪声在统计上互为镜像,平均时噪声被更彻底地抵消掉,残余噪声比EEMD小很多。
2.3 FEEMD、CEEMDAN与REMD:各自在改进什么
FEEMD可以理解为EEMD的“提速版”。它的核心方向没有变,但在实现上做了优化:比如在每次加噪分解前用FFT分块加速包络计算、在集成平均时采用自适应加权策略,或者并行化噪声序列的生成与分解。实际用起来,FEEMD比EEMD省时间,但参数选择逻辑跟EEMD一致。如果项目要求大量样本批量分解,FEEMD比EEMD更合适。
CEEMDAN走的是另一条更彻底的自适应路线。它不一次性加固定噪声,而是在每一阶IMF分解完成后,根据当前残余信号的特征加入自适应白噪声。具体来说:先对原信号加噪声做一次EMD得到第一阶IMF;然后对残余信号加第二轮噪声,继续分解得到第二阶IMF;每一轮噪声的幅值都根据当前残差动态调整。这样的好处是分解过程“所见即所得”,每一阶IMF都严格相对原始信号通过差分方式提取,重构误差非常小。
REMD则是往鲁棒性方向走。常规EMD用极值点构造包络,一旦信号里出现一个异常尖峰(比如传感器受到电磁干扰产生的孤立脉冲),包络会被这个尖峰严重带偏,相邻多个IMF都会被污染。REMD针对这个痛点做了改动:在极值筛选环节采用鲁棒统计量,或者用加权方式修正包络估计,使个别异常点不会主导整个包络。所以你会发现,REMD在处理含有粗差、尖刺的实测数据时,分解结果比普通EMD稳定得多。应用上,如果数据经过质量控制,异常值很少,REMD的优势不明显;要是数据来源比较“脏”,比如现场传感器经常受干扰,REMD是值得优先考虑的。
3. LMD谱系与TVF-EMD:另一种自适应拆分逻辑
3.1 LMD:解出瞬时幅值和瞬时频率
LMD(局部均值分解)的思路和EMD不同。EMD每一轮迭代得到IMF,是一个零均值调幅调频信号;而LMD每一轮产出的是乘积函数(PF),PF本身就是包络信号和纯调频信号的乘积。这句话听起来抽象,换成大白话就是:LMD把信号拆成“瞬时幅值”和“瞬时频率”两条轨迹,而且这两个量都随时间是连续变化的。
这在机械故障诊断里特别好用。比如齿轮的点蚀故障,啮合过程中振动信号会出现周期性的幅值调制,LMD分解出的PF分量的包络直接对应调制特征,解调时不必再做Hilbert变换来求瞬时幅值,节省一步处理,也更直观。
Matlab中LMD没有官方内置函数,常用第三方工具箱实现,典型调用形式是:
% 第三方工具箱示例 PF = lmd(x, 'MaxPF', 4, 'StopCondition', 0.001);实操作业时我最在意的两个点:一是LMD同样受端点效应影响,局部均值曲线在边界处容易发散,建议提前做端点延拓;二是LMD对噪声敏感,高频噪声会让纯调频信号的迭代过程变得不稳定,通常先做带通滤波或小波阈值去噪,再进行LMD分解。对比EMD,LMD在分析调幅调频信号时物理意义更清楚,但在通用性上EMD更胜一筹。
3.2 RLMD:鲁棒化改进
RLMD可以视作LMD的加固版本。它在LMD的框架基础上,对局部均值函数和包络估计采用了鲁棒策略,主要应对两件事:第一,抑制端点处的包络摆动;第二,减小异常值对解调结果的干扰。如果你处理的是含冲击成分的非平稳信号,比如轴承早期故障振动,普通LMD的分解结果可能带一些虚假分量,RLMD会收敛得更干净。
RLMD与LMD的参数设置逻辑接近,但额外允许控制鲁棒化权重。实际项目中一个高频场景是“强脉冲+弱故障”:传感器信号里既有机体撞击产生的大幅值脉冲,也有早期故障的微小白噪声调制特征。这种混合信号用RLMD比用LMD稳得多,因为强脉冲不会把后续PF的包络带飞。
3.3 TVF-EMD:时变滤波替代包络插值
TVF-EMD的全称是时变滤波经验模态分解。它的核心改进是为EMD里的“均值筛选”换了一个实现引擎:不再依赖三次样条插值包络求平均,而是先估计信号的瞬时幅值和瞬时频率,根据这些时变特征构造出一个时变滤波器,用滤波结果替代包络均值。
这个变化带来的收益非常直接:滤波器的截止频率随时间自适应变化,对非平稳信号中频率突变的响应更灵敏,大幅缓解模态混叠;同时因为不依赖包络插值,端点效应也比传统EMD小。代价是计算量变大,参数也多了几个(比如时变滤波器的阶数、B样条相关参数)。对长序列信号,TVF-EMD的效率明显低于普通EMD。
在Matlab中TVF-EMD同样依赖第三方代码。调用形式通常类似于:
[imf, ~] = tvfemd(x, 'B-spline-order', 3, 'filter-threshold', 15);我用TVF-EMD的典型场景是脑电和心电信号:这类生物医学信号频率低、易漂移、含有强噪声,普通EMD分解出的IMF容易在相邻分量间“串味”,TVF-EMD能给出更干净的分离。
4. VMD谱系:把“拆信号”变成“解优化”
4.1 VMD的核心逻辑:频率带宽之和最小化
VMD(变分模态分解)是2014年前后兴起的方法,和EMD家族的思路完全不同:EMD是“迭代筛选”,VMD是把分解转成一个最优化问题——给定模态数K,为每个模态估计一个中心频率,规定每个模态在频域上围绕该中心频率存在一个有限带宽,然后最小化所有模态的带宽之和。求解用乘子交替方向法(ADMM)迭代完成。
这种模型化做法的优势在于,VMD不会像EMD那样出现严重的模态混叠,因为每个模态的频带是被优化过程“强制”分开的,而且边界效应也小得多。代价是你必须预先指定模态数K和惩罚参数alpha。K给少了会欠分解,几个频率分量挤在一个模态里;K给多了又会出现虚假模态,中心频率互相靠近甚至重叠。
经验上判断K的做法很直观:先对信号做FFT看频谱,数一数有几个明显的谱峰集中带,K可以从“峰数+1”起步。alpha控制带宽的宽窄:alpha越大,每个模态的带宽越窄,频率分辨率越高,但抗噪性下降;alpha越小,带宽越宽,更容易把噪声包进来。对不同信号,alpha取值从几百到几千都有人用,振动信号常用1500~3000,低频缓变信号可以更大一些。
Matlab中常用的是公开的VMD代码,调用方式很简单:
[u, u_hat, omega] = VMD(x, K, alpha, tau, DC, init, tol);其中tau是噪声容忍参数,为0时表示启用严格的保真约束,适合含噪信号;DC=1时强制第一个模态中心频率为0,适合提取趋势项;init=1表示中心频率从零开始均匀初始化;tol控制迭代收敛条件,默认1e-7左右通常够用。
调试VMD的时候我建议画一张“中心频率迭代曲线”观察omega的变化。如果某两个模态的中心频率迭代到最后越来越接近,说明K给大了;如果某个模态的中心频率在迭代过程中剧烈跳变,说明alpha太小或信号预处理不到位。这个办法比只看分解波形更可靠。
4.2 MVMD:多通道信号的联合分解
MVMD把VMD从单通道推广到多通道:多测点振动信号、多导联脑电、多通道工业过程信号,都可以一次性联合分解。它分解出来的每个模态都包含所有通道的分量,并且同一序号模态在不同通道间是频率对齐的。这比“每个通道单独做VMD”再拼在一起有一个重要好处:模态序号一致,后续特征比较和通道间相关性分析不用做麻烦的配对。
调用方式通常是:
% X为通道数×样本点数矩阵 [u, omega] = mvmd(X, K, alpha, tau, DC, init, tol);MVMD需要设定的参数和VMD基本一致,不同之处在于各模态的更新要同时处理所有通道的功率谱,计算量随通道数线性增长。如果通道数超过20个,单机跑起来会明显吃力,建议先做主成分分析(PCA)降维,或者分批次分解。
4.3 SVMD:免预设模态数的变分路线
SVMD(逐次变分模态分解)解决VMD另一个痛点——K怎么定。它的办法很聪明:不一次性分解出全部K个模态,而是逐次从信号中提取“剩余能量最大的那个模态”,每提取完一个模态就把这个模态的能量从残差中扣除,然后继续下一次提取,直到剩余信号能量低于设定阈值或者模态能量占比过小。
因为每个模态是逐次提取的,实际使用中不需要预先指定K,只需要设置停止条件,这对自动化批处理特别友好。SVMD得到的模态在频域上排列通常是有序的,第一个模态往往是能量最高的趋势或主周期成分。但它也有一个局限:逐次提取依赖每一步分解的质量,如果第一步就被噪声带偏,后面的模态都会受影响,所以对参数alpha和停止阈值要仔细调,不能照搬默认值。
5. EWT、SSD与SSA:频谱分割和矩阵分解路线
5.1 EWT:在傅里叶谱上“画边界”
经验小波变换(EWT)的思路很有画面感:把信号的傅里叶谱当成一副地形图,先找到谱峰之间的谷底,确定一组频带边界,然后在每个频带上构造一组小波滤波器组,把原始信号滤波成一系列调幅调频分量。
这种方法的优点一是分解速度快,本质上就是一次FFT加几次滤波;二是分量物理意义明确,每个分量占据一个明确的频率区间。缺点在于频谱边界的检测并不总是稳定,遇到噪声谱峰杂乱的情况,边界会剧烈变动。EWT有两个关键参数:一是频带划分方式,二是边界数量N。N可以直接指定,也可以用谱峰值自动检测确定。Matlab中第三方工具箱的常见调用是:
[mrb, mra] = ewt(x, 'N', 5);工程上,如果信号频谱有明显的分离山峰,比如转子振动信号存在稳定的1倍频、2倍频分量,EWT能把它们干净地拆开;但频谱很“糊”的信号(宽频噪声为主)不太适合用EWT。
5.2 SSD:把奇异谱做成迭代分解
SSD(奇异谱分解)脱胎于奇异谱分析(SSA),但做了两点关键升级:自适应选择嵌入维数,不再依赖人工窗口设置;同时用迭代滤波的方式逐个提取信号分量,而不是一次性把所有成分都从矩阵分解中翻出来。因此SSD既可以处理非线性趋势,也能分离调幅调频成分和噪声,适用范围比传统SSA更广。
这里我多说一句SSA的基础流程,理解了它SSD就不难懂。SSA第一步是“嵌入”:把一维时间序列按窗口长度L构造成一个轨迹矩阵,矩阵的行是滑窗截出的段落;第二步对这个轨迹矩阵做奇异值分解;第三步根据奇异值大小把矩阵分解成若干个低秩近似;第四步把每个近似矩阵“对角平均”还原成一维信号,得到对应的趋势、周期和噪声分量。整个过程相当于把时间序列“矩阵化”之后,按能量从大到小拆解。
SSD在实现上改动的是第一步和第三步:嵌入维数根据信号局部复杂度自适应确定;迭代提取主成分时,设定一个傅里叶谱峰值检测机制,让每轮的“主成分”自动对应一个瞬时主导频带。实际使用SSD时,它对强噪声和非平稳幅值的处理效果好,但算法本身迭代次数多,计算量不小。可借鉴的代码如下:
% 常用的第三方奇异谱分解实现 components = ssd(x, 'ConvergenceFactor', 1.5);5.3 SSA:稳健但需要选择窗口长度
SSA单独拿出来说,是因为它在气象、经济学、深度学习特征预处理中依然很常用。它最大的优势是稳定,不依赖极值点、不依赖包络插值,只要轨迹矩阵构造合理,对异常值不太敏感。但它分解出的分量在物理意义上不完全自动分组,需要你根据奇异值的相对大小和分量频谱来判断哪些属于趋势、哪些属于周期、哪些是噪声。
窗口长度L是SSA最重要的参数。通常L取数据长度的1/3到1/2,能较好地平衡信息保留和计算开销。L取得太小,长周期成分会被分割到多个分量里;L取得太大,奇异值数量增多,分组困难,计算也慢慢吞吞。Matlab里自己实现SSA并不难,但直接找现成工具箱更省事,核心调用通常包括嵌入维数和分组方式两个输入参数。
SSA和SSD的选择可以这样把握:想做快速预分析、看信号大体结构,选SSA;想自动化地分离出非平稳非线性分量且不想纠结窗口长度,选SSD。
6. 选型对比、Matlab实现经验与常见问题
6.1 一张表搞定方法选型
说了这么多,最后还是要落到“我到底用哪个”上。我整理了一张选型速查表,按实际项目经验给出相对评价。
| 方法 | 是否需预设模态数 | 抗噪能力 | 端点效应 | 重构完备性 | 计算负担 | 典型场景 |
|---|---|---|---|---|---|---|
| EMD | 否 | 一般 | 明显 | 好 | 低 | 快速看信号结构 |
| EEMD | 否 | 较强 | 明显 | 一般 | 高 | 有噪声但可接受耗时 |
| CEEMD | 否 | 较强 | 明显 | 较好 | 高 | 同EEMD但要更好重构 |
| FEEMD | 否 | 较强 | 明显 | 一般 | 中高 | 批量信号快速集合分解 |
| CEEMDAN | 否 | 强 | 较轻 | 好 | 高 | 追求完备重构+强噪声 |
| REMD | 否 | 较强 | 较轻 | 好 | 中 | 含粗差、尖刺的脏数据 |
| LMD | 否 | 一般 | 明显 | 好 | 中 | 调幅调频信号解调 |
| RLMD | 否 | 较强 | 较轻 | 好 | 中 | 带冲击和脉冲噪声的信号 |
| EWT | 需指定边界或边界数 | 较强 | 轻 | 好 | 低 | 频谱有明显分离峰 |
| VMD | 需指定K和alpha | 强 | 轻 | 好 | 中 | 通用性强、最常用之一 |
| MVMD | 需指定K和alpha | 强 | 轻 | 好 | 中高 | 多通道联合分解 |
| SVMD | 否 | 强 | 轻 | 好 | 中 | 不想调K的批量处理 |
| TVF-EMD | 否 | 较强 | 轻 | 好 | 中高 | 生物医学非平稳信号 |
| SSD | 否 | 强 | 轻 | 好 | 中 | 非线性趋势+瞬态成分 |
| SSA | 选窗口L | 强 | 可控 | 需分组 | 低 | 趋势+周期+噪声分离 |
我个人的选型路径大致是:如果只是快速预分析,先用SSA看趋势和周期成分,再用VMD精细分解各频带;如果信号比较干净、没有强噪声,EMD够用;如果数据带噪且要求重构误差小,优先CEEMDAN;如果信号含强脉冲或异常值,直接上REMD或RLMD;多通道数据别无脑逐通道VMD,直接MVMD。
6.2 实操经验与Matlab资源
再分享几个我反复踩过坑之后沉淀下来的实操经验。
第一,预处理比算法重要。大多数分解方法对直流分量和趋势漂移敏感。分解前先去均值、去线性漂移,必要时做带通滤波。我见过不少人直接拿原始信号喂VMD,结果第一个模态跑出来全是直流偏移,后面模态全被淹没。
第二,数据长度影响巨大。EMD族和LMD族在数据太短时无法构造可靠包络,分解结果不稳定。建议数据长度至少覆盖几十个主要周期。反过来,太长的数据又会让EEMD、CEEMDAN跑得让人崩溃。折中做法是截取代表性片段,或者降采样到研究频带之上留2到5倍余量。
第三,参数调优别靠蛮力。VMD的K和alpha可以先用谱峰数粗定K,然后用一个简单优化脚本自动搜alpha;EEMD的Nstd和NR可以做一个小网格搜索,观察分解结果高频分量的能量是否随参数突变。别花一整天在参数上纠结,先跑通流程,再逐步细化。
第四,工具箱资源。MATLAB文件交换平台上能搜到VMD、MVMD、SVMD、LMD、RLMD、SSD、SSA、EWT等多种第三方实现,关键词用“VMD toolbox”“SSD toolbox”“EWT toolbox”“LMD matlab”就能找到。使用前注意检查代码是否支持自己的Matlab版本,老工具箱容易出现与新版语法不兼容的情况。
6.3 常见问题与排查
把实际项目里经常遇到的高频问题整理成一个速查表,按我的排查习惯给出处理方向。
| 症状 | 可能原因 | 排查顺序 |
|---|---|---|
| EMD分解出的IMF数量过多,很多无物理意义 | 筛选停止准则太松,或噪声干扰 | 先检查频谱确认有效频带,再考虑用EEMD/CEEMDAN |
| VMD两个模态中心频率收敛到一起 | K设置过大 | 减小K,重新观察omega曲线 |
| VMD第一个模态全是直流/趋势 | DC参数未设置为1 | 设置DC=1,并把init设为1 |
| EEMD跑得极慢 | 集成次数NR太大或数据太长 | 降采样、降低NR,或用并行池加速 |
| 所有EMD族方法的IMF端点大幅发散 | 端点效应 | 分解前做镜像延拓,或截掉首尾污染段 |
| CEEMDAN低频模态有明显噪声残留 | 噪声幅值Nstd偏大 | 逐步降低Nstd,观察重构误差 |
| SSD迭代分解分量不稳定 | 嵌入维数或收敛因子不合适 | 缩小收敛因子,检查轨迹矩阵窗口长度 |
| 信号强噪下LMD出现虚假PF | 高频噪声干扰解调 | 先带通滤波或小波降噪,再做LMD |
最后说一个我常用的验证习惯:不管用什么方法分解,分解完毕一定做重构检查——把全部IMF或PF加回趋势项,与原始信号做差,看看重构误差的量级。重构误差太大,说明参数或预处理出了问题,分解结果不管看起来多漂亮都不可信。
各方法之间不是谁取代谁的关系。EMD适合“探索性拆解”,VMD适合“目标化分离”,SSA适合“全局结构洞察”,LMD族适合“解调分析”。一个完整项目往往要组合使用,先用粗粒度方法了解成分,再用细粒度方法做定量分析。我自己最常用的组合是“SSA探路 + VMD精分 + CEEMDAN验证”,先花五分钟看清信号有几层成分,再有目的地调参数,效率比直接从十六种方法里盲选高得多。做到这一步,这份方法清单就不再是负担,而是一套顺手好用的工具箱。