信号分解和小波阈值联合降噪 | NRBO-FMD基于牛顿拉夫逊算法优化特征模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码



一、研究背景

在机械故障诊断、生物医学信号处理、振动分析等领域,采集到的信号往往包含强噪声和非平稳特征。有效的信号分解降噪是提取故障特征的关键。

  • FMD(Filtered Mode Decomposition) 是一种结合频带分割与迭代滤波的信号分解方法,能够自适应地将复杂信号分解为若干本征模态分量(IMF)。
  • 然而,FMD 的性能高度依赖滤波器大小模态个数两个参数,传统人工调参效率低、难以获得全局最优。
  • 因此,引入NRBO(Newton-Raphson-based Optimizer,牛顿-拉夫逊优化算法) 自动寻优这两个关键参数,并以多种熵(包络熵、信息熵等)或峭度因子作为适应度函数,实现自适应最优分解。
  • 分解后进一步利用小波阈值降噪对低相关分量进行处理,提升重构信号质量。

二、主要功能

  1. 自适应FMD分解:通过NRBO优化滤波器大小和模态个数,对输入信号进行最优分解,得到多个IMF分量。
  2. 多目标适应度选择:支持6种目标函数(包络熵最小、信息熵最小、排列熵最小、样本熵最小、能量熵最小、包络峭度因子最小),用户可根据信号特性选择。
  3. IMF质量评估与筛选:计算每个IMF与原始信号的皮尔逊相关系数,自动区分"保留分量"与"需降噪分量"。
  4. 小波阈值降噪:对低相关系数分量分别进行软阈值和硬阈值降噪,并重构信号。
  5. 可视化与结果导出:绘制原始信号、迭代曲线、参数变化、分解图、幅值谱、功率谱、希尔伯特谱、降噪前后对比图,并输出Excel文件。

三、算法步骤

步骤 描述
1 读取信号数据(data.xlsx),绘制原始信号。
2 设置全局参数:cutnum(频带切割数)、maxiternum(迭代次数)、fs(采样频率)。
3 定义优化变量:滤波器大小 [10,50],模态个数 [5, cutnum]。设置NRBO种群规模(10)、最大迭代次数(20)。
4 选择目标函数类型(value=1~6),调用 getObjValue 计算适应度。
5 运行NRBO优化算法,得到最优参数 Best_pos 和最优适应度 Best_score
6 用最优参数调用 FMD 函数进行信号分解,获得IMF矩阵。
7 计算各IMF与原始信号的皮尔逊相关系数,依据阈值 TH1 区分保留分量(K2)与需降噪分量(K1)。
8 对需降噪分量进行小波阈值降噪(db1小波,2层分解,全局软/硬阈值),绘制降噪前后对比。
9 重构信号:保留分量 + 降噪后分量,分别生成软阈值和硬阈值降噪结果,并保存为Excel文件。

四、技术路线

复制代码
原始信号 → NRBO优化(寻优滤波器大小、模态个数)→ FMD分解 → 计算相关系数
         ↓
    ┌────┴────┐
    ↓         ↓
保留分量   需降噪分量 → 小波阈值降噪(软/硬阈值)
    └────┬────┘
         ↓
    信号重构 → 输出降噪后信号与评估图表

五、公式与原理

1. 适应度函数(以包络熵为例)

对于每个IMF分量 (c_i(t)),先求希尔伯特包络:

ai(t)=∣Hilbert(ci(t))∣ a_i(t) = |\text{Hilbert}(c_i(t))| ai(t)=∣Hilbert(ci(t))∣

归一化:

pi(t)=ai(t)∑tai(t) p_i(t) = \frac{a_i(t)}{\sum_t a_i(t)} pi(t)=∑tai(t)ai(t)

包络熵:

Eenv=−∑tpi(t)log⁡pi(t) E_{\text{env}} = -\sum_t p_i(t) \log p_i(t) Eenv=−t∑pi(t)logpi(t)

适应度取所有IMF中包络熵的最小值(熵越小,信号越规律,冲击特征越明显)。

2. FMD核心 ------ 最大相关峭度解卷积(MCKD)

FMD内部调用 xxc_mckd,其目标最大化相关峭度(Correlated Kurtosis, CK)

CKM(T)=∑n=1N(∏m=0Myn−mT)2(∑n=1Nyn2)M+1 \text{CK}M(T) = \frac{\sum{n=1}^{N} \left( \prod_{m=0}^{M} y_{n-mT} \right)^2}{\left( \sum_{n=1}^{N} y_n^2 \right)^{M+1}} CKM(T)=(∑n=1Nyn2)M+1∑n=1N(∏m=0Myn−mT)2

其中 (y) 为滤波输出,(T) 为故障周期,(M) 为移位阶数。

通过迭代求解最优滤波器 (f),使CK最大,从而增强周期性冲击成分。

3. 小波阈值降噪
  • 对需降噪分量进行 db1 小波2层分解。
  • 估计噪声标准差 σ=wnoiset(c,l,1)\sigma = \text{wnoiset}(c,l,1)σ=wnoiset(c,l,1)。
  • 全局阈值 λ=σ2ln⁡N\lambda = \sigma \sqrt{2\ln N}λ=σ2lnN (NNN为信号长度)。
  • 软阈值函数:
    w^=sgn(w)⋅max⁡(∣w∣−λ,0) \hat{w} = \text{sgn}(w) \cdot \max(|w|-\lambda, 0) w^=sgn(w)⋅max(∣w∣−λ,0)
  • 硬阈值函数:
    w^=w⋅1∣w∣≥λ \hat{w} = w \cdot \mathbf{1}_{|w| \ge \lambda} w^=w⋅1∣w∣≥λ

六、参数设定(来自 main.m 及全局变量)

参数 含义
cutnum 5 频带切割数(决定初始滤波器组数量)
maxiternum 20 FMD内部迭代次数
fs 20000 Hz 采样频率
lb [10, 5] 滤波器大小下限,模态个数下限
ub [50, cutnum] 滤波器大小上限,模态个数上限
dim 2 优化变量维数
SearchAgents_no 10 NRBO种群规模
Max_iter 20 NRBO最大迭代次数
value 1~6 目标函数选择开关

七、运行环境

  • 软件:MATLAB(推荐 R2020b 及以上版本)
  • 输入文件data.xlsx(单列信号数据)
  • 输出文件NRBO-FMD分解结果.xlsxNRBO-FMD降噪后信号_软/硬阈值.xlsx

八、应用场景

  1. 旋转机械故障诊断:轴承、齿轮箱等振动信号中的周期性冲击提取。
  2. 生物医学信号处理:心电图(ECG)、脑电图(EEG)的噪声抑制与特征分离。
  3. 结构健康监测:桥梁、管道等结构的振动响应分解与损伤识别。
  4. 地球物理勘探:地震信号中反射波与噪声的分离。

完整源码私信回复信号分解和小波阈值联合降噪 | NRBO-FMD基于牛顿拉夫逊算法优化特征模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码

相关推荐
Lauren_Blueblue2 小时前
第十六届蓝桥杯省赛Python研究生组-F串
python·算法·蓝桥杯·算法基础
鲸渔2 小时前
【C++ 入门】第一个程序:Hello World 与基本语法规则
开发语言·c++·算法
‎ദ്ദിᵔ.˛.ᵔ₎2 小时前
滑动窗口算法
算法·哈希算法
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章46-矩形卡尺
图像处理·人工智能·opencv·算法·计算机视觉
仟濹2 小时前
【算法打卡day39(2026-04-06~08 周一~周三)】(10道蓝桥杯真题)今日练习:蓝桥杯第13届省赛B组Cpp组
算法·职场和发展·蓝桥杯
美式请加冰2 小时前
最短路径问题
java·数据结构·算法
会编程的土豆2 小时前
【数据结构与算法】 时间复杂度计算
数据结构·c++·算法
小年糕是糕手2 小时前
【35天从0开始备战蓝桥杯 -- Day9】
数据结构·数据库·c++·算法·蓝桥杯
知星小度S2 小时前
算法训练之递归(二)
算法