信号分解和小波阈值联合降噪 | 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代码

相关推荐
智者知已应修善业14 分钟前
【51单片机按键调节占空比3位数码管显示】2023-8-24
c++·经验分享·笔记·算法·51单片机
.5481 小时前
## Sorting(排序算法)
python·算法·排序算法
wuweijianlove1 小时前
算法的平均复杂度建模与性能回归分析的技术7
算法·数据挖掘·回归
子琦啊1 小时前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
code_pgf3 小时前
Octo 算法详解-开源通用机器人策略模型技术报告
算法·机器人·开源
嘻嘻哈哈樱桃3 小时前
牛客经典101题题解集--动态规划
java·数据结构·python·算法·职场和发展·动态规划
脱氧核糖核酸__3 小时前
LeetCode热题100——234.回文链表(两种解法)
c++·算法·leetcode·链表
IronMurphy3 小时前
【算法四十二】118. 杨辉三角 198. 打家劫舍
算法
电科一班林耿超3 小时前
第 16 课:动态规划专题(二)—— 子序列与子数组问题:面试最高频的 DP 题型
数据结构·算法·动态规划
生信研究猿4 小时前
leetcode 416. 分割等和子集
算法·leetcode·职场和发展