互补集合模态分解

互补集合模态分解(complementary ensemble empirical mode decomposition)

参考文献:
Yeh, Jia-Rong, Jiann-Shing Shieh, and Norden E. Huang. “Complementary ensemble empirical mode decomposition: A novel noise enhanced data analysis method.” Advances in Adaptive Data Analysis 2.02 (2010): 135-156.
下载链接:https://pdfs.semanticscholar.org/0eba/2c94147ea971be5cfbeaf13278ef0d61248a.pdf

CEEMD的提出

EMD分解常常因为混叠模态问题使这个分解出现问题,后来提出了EEMD,通过引入噪声来协助分析方法,平均值的思想很好地解决了混叠模态的问题(mode mixing)。然而,没有缺陷的东西是不存在的。由于引入噪声协助分析,集合求均值的处理过程复杂,便带来了计算复杂和耗时的问题;同时,噪声的引入对原始信号存在一定程度的破坏,而且引入的噪声会有残余。
互补集合模态分解(complementary ensemble empirical mode decomposition)时引入的是互补的噪声。这些噪声是独立同分布的,完美地负相关。由于引入的是互补噪声,所以在重构信号的时候冗余噪声很大程度上被消除。

噪声的产生和添加

使用下面的矩阵产生两个信号,其中S表示原始信号,N表示白噪声。M1表示添加了“正噪声”的混合信号,M2表示添加了“负噪声”的混合信号。

[M1M2]=[1111][SN] [ M 1 M 2 ] = [ 1 1 1 − 1 ] [ S N ]

分解过程

CEEMD的分解过程与EEMD分解过程是相同的。区别在CEEMD要处理的信号有两个,添加了“正噪声”的混合信号M1,添加了“负噪声”的混合信号M2。 按照EMD分解的步骤分别将两个混合信号分解成两组本征模态函数(IMFs),然后让对应的每一阶本征模态函数(IMF)求集合平均值。该平均值就是最终所求的分解结果。

CEEMD的优点

(1)节省处理时间
(2)随着添加的噪声的数量增加,最终重构的数据中噪声的残余量减小,最终残余量几乎可以忽略。
(3)使用均方根误差(RMS error)比较EEMD和CEEMD时发现两者差别不大。

原始信号固有噪声的影响

由于CEEMD是一个噪声协助分析方法,需要添加噪声到信号中。如果信号本身的噪声已经足够大,那么再添加噪声对该方法会有什么影响就是现在要探究的问题。

决定信号的主要成分

蒙特卡罗(Monte Carlo)验证法可以根据本征模态函数的能量密度分布和平均周期确定其特性。
Wu 和 Huang提出了一种测试未知噪声等级的信号中真实信号含量的方法。通过这个测试,我们可以得到一个判断本征模态函数是有效信号主导的还是噪声主导的。

En=1N×j=0n|Cn(j)|2 E n = 1 N × ∑ j = 0 n | C n ( j ) | 2

T¯n=SlnT,ndlnT(SlnT,ndlnTT)1 T ¯ n = ∫ S l n T , n d l n T ( ∫ S l n T , n d l n T T ) − 1

En E n 第n阶本征模态函数的能量密度;
SlnT,n S l n T , n 是第n阶本征模态函数的傅里叶频谱。
T是周期, Tn T n 是是第n阶本征模态函数的平均周期。
这里写图片描述
图8 是从原文截取的。在直线上的点被认为是噪声为主导的本征模态函数。 在重构信号时,丢弃这些函数使用剩余的函数进行重构。在重构的时候,为了进一步分开信号和噪声,先使用中值滤波消除起伏。

使用非稳态正弦信号作为仿真信号

未完

### CEEMD 实现与应用 #### 定义与原理 互补集合经验模态分解Complementary Ensemble Empirical Mode Decomposition, CEEMD)是一种改进的经验模态分解方法,旨在解决原始 EMD 方法中存在的模式混合问题。通过引入白噪声并重复多次实验来获得稳定的本征模函数(IMF),从而提高信号处理的效果[^1]。 #### Python 实现示例 下面是一个简单的 Python 实现例子: ```python import numpy as np from PyEMD import CEEMDAN def ceemd_decomposition(signal, num_ensembles=100, noise_width=0.05): """ 使用 CEEMD 对输入信号进行分解 参数: signal (array-like): 输入时间序列数据 num_ensembles (int): 白噪声样本数量 noise_width (float): 添加到信号中的白噪声标准差 返回: imfs (ndarray): IMF 组件矩阵 """ ceemdan = CEEMDAN(trials=num_ensembles, noise_seed=True) # 执行CEEMD分析 imfs = ceemdan.ceemdan(signal, max_imf=-1) return imfs ``` 此代码片段展示了如何利用 `PyEMD` 库执行 CEEMD 分解操作。需要注意的是,在实际应用场景中可能还需要考虑更多参数调整以及预处理步骤以适应特定需求。 #### 应用场景 CEEMD 已被广泛应用于多个领域内的信号处理任务当中,特别是在电力系统监测、机械故障诊断等方面表现出色。例如,在风力发电机组振动数据分析过程中,可以先采用 CEEMD 将复杂非平稳信号分离成若干个相对简单且具有物理意义的 IMFs;之后再结合其他机器学习算法如 Transformer-BiLSTM 和 ARIMA 构建组合预测模型来进行更精准的趋势预报和异常检测工作[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值