噪声熵和损失熵的定义_归一化信噪比

噪声熵和损失熵的定义_归一化信噪比利用K-L散度(相对熵)确定VMD分解信号的K值和惩罚因子alpha,得到一组信号分量;计算各个分量的样本熵,根据样本熵的值,选取出噪声主导分量和有效分量;对噪声主导信号进行非局部均值(NLM)去噪;将去噪后的信号分量与剩余的有效信号分量进行重构得到去噪信号。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

前言

本博客对论文 “优化VMD与NLM结合的信号去噪”中的算法进行介绍与仿真。该论文为解决人体心电信号易出现噪声干扰的情况,提出一种自选取参数的变分模态分解(VMD)与非局部均值(NLM) ECG信号去噪方法。针对人为选取变分模态分解参数不准确的问题,运用一种自适应的参数确定方法,根据不同的原始信号,确定不同的参数并对信号进行分解,得到一组信号分量,计算各个分量的样本熵,根据样本熵的值,选取出噪声主导分量和有效分量,对噪声主导信号进行NLM去噪,将去噪后的信号分量与剩余的有效信号分量进行重构得到去噪信号。

论文中所用算法及其MATLAB代码见以下链接:

VMD算法

相对熵优化变分模态分解(KL-VMD)

排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵

一、非局部均值(NLM)算法

1 算法背景

非局部均值算法是近年来图像处理领域的新兴算法之一,是 Buades 等为了解决传统消噪方法在图像信号处理出现的无法很好的保留图像细节及边缘的问题而提出的一种新的消噪方法。NLM 算法的原理是利用图像中存在的众多相似结构的特性,以像素点所在领域为单元,在图像中搜索与该单元相似的成分,并对这些相似成分加权平均操作,以此消除图像中的异常噪声。Buades 等提出NLM 算法的同时证明了其一致性,即NLM 算法并非只对特定的像素点有效,而是适用于图像中的任一像素点,即在自然图像中,任一结构均存在与之类似的结构样本。这些相似特性不仅表现在二维图像中,在一维信号中也具有广泛体现。TRACEY 等和胡新海等应用 NLM 算法分别处理ECG信号和地震信号,去噪后的信号均具有较大的信噪比。

2 在一维信号中的应用步骤

(1)假设1个一维信号x(t)被1个高斯白噪声信号n(t)污染,则含噪声信号为:

噪声熵和损失熵的定义_归一化信噪比

(2)NLM算法是通过计算y(t)中全部相似块的加权平均 X(t) 对原始信号 x(t) 进行估计进而实现去噪,计算过程如下:

噪声熵和损失熵的定义_归一化信噪比

式中:w(t,s) 为以 t 和 s 为中心的2个搜索块之间的相似度;t 为以点 t 为中心的搜索块;M(t)为搜索域中全部点的集合;Z(t)为归一化常数,表示全部搜索块相似度之和 。

(3)Z(t) 为归一化因子,其计算公式为:

噪声熵和损失熵的定义_归一化信噪比

(4)w(t,s) 需要满足如下2个条件:

噪声熵和损失熵的定义_归一化信噪比

(5)w(t,s)的计算过程如下:

噪声熵和损失熵的定义_归一化信噪比

式中:λ为滤波器带宽参数;Δ为以 t 为中心的搜索块;LΔ为以 s 为中心的搜索块;d^{2}(t,s)为以 t 和 s 为中心的2个搜索块之间欧氏距离的平方和,其数值越小,表示相似度越大;参数 h控制权重 w(t,s) 的衰减速度,即直接决定信号的最终滤波程度。

二、非局部均值算法对一维信号去噪

1 MATLAB程序

% 论文复现:优化VMD和NLM结合的信号去噪
% 利用K-L散度(相对熵)确定VMD分解信号的K值和惩罚因子alpha,得到一组信号分量;
% 计算各个分量的样本熵,根据样本熵的值,选取出噪声主导分量和有效分量;
% 对噪声主导信号进行非局部均值(NLM)去噪;
% 将去噪后的信号分量与剩余的有效信号分量进行重构得到去噪信号.
clc;
clear;
close all;
tic;

%% 仿真信号
load data;
x=data(1,1:2000)';
N=length(x);
y=awgn(x,20,'measured');  % 添加信噪比为20dB的高斯白噪声
%% 利用K-L散度(相对熵)确定VMD分解信号的最优K值和最优惩罚因子alpha
alpha = 1000;  % 惩罚因子固定
[Best_K,Best_alpha] = KL_VMD(y,alpha);

%% VMD分解
% y:为待分解的时域信号
% u:分解模式的集合
% omega:估计模式中心频率
% Best_K:最优模态数
% Best_alpha:最优惩罚因子

% VMD分解的输入参数
tau = 0;            % 噪声容忍度
DC = 0;             % 无直流分量
init = 1;           % 初始化中心频率为均匀分布
tol = 1e-7;         % 收敛准则容忍度

[u, ~, omega] = VMD(y, Best_alpha, tau, Best_K, DC, init, tol);

[~, sortIndex] = sort(omega(end,:));
u=u(sortIndex,:);
X=u';
%% 样本熵
r0=0.2;   % r为相似容限
dim=2;    % dim为嵌入维数
sampEn=zeros(1,Best_K);
CC=zeros(1,Best_K);
figure;
for i=1:Best_K
    r=r0*std(u(i,:));
    % 计算样本熵值
    sampEn(i) = SampleEntropy( dim, r, u(i,:));
    % 计算相关系数
    CC(i)=corr(X(:,i),y,'type','Pearson');   % 相关系数
    % 各个IMF分量图
    subplot(Best_K,1,i);plot(X(:,i));
    xlabel('t/s');ylabel(['IMF',num2str(i)]);
end
%% 非局部均值(NLM)去噪
PatchHW=10;  % patch half-width:size of smallest feature, in samples
P = 1000;    % neighborhood search width:wider=more computation but more channces to find a similar patch
lambda = 0.6*.02; % set bandwidth for NLM - here set by an "eyeball estimate"
denoise_data=zeros(4,N);
for i=6:7
    [denoise_data(i-5,:),debugEcg]= NLM( u(i,:),lambda,P,PatchHW );
end
%% 信号重构
Y=sum(u(1:5,:))+sum(denoise_data);

%% 画图
% 时域波形对比图
figure;
subplot(3,1,1);plot(x);xlabel('t/s');ylabel('幅值');title('原始信号x(t)');
subplot(3,1,2);plot(y);xlabel('t/s');ylabel('幅值');title('含噪信号y(t)');
subplot(3,1,3);plot(Y);xlabel('t/s');ylabel('幅值');title('去噪后信号Y(t)');

toc;

Jetbrains全家桶1年46,售后保障稳定

非局部均值算法的MATLAB代码链接:非局部均值(NLM)信号去噪方法

2 去噪效果

 图1所示是利用NLM算法对原始心电信号进行去噪。

噪声熵和损失熵的定义_归一化信噪比
图1 NLM算法对原始心电信号进行去噪

对原始心电信号添加20dB高斯白噪声,再利用相对熵优化VMD的非局部均值去噪方法对含噪声心电信号进行去噪,去噪效果如图2所示。

噪声熵和损失熵的定义_归一化信噪比
图2 去噪效果对比图

结束语

大家的点赞和关注是博主最大的动力,博主所有博文中的代码文件都可分享给您(除了少量付费资源),如果您想要获取博文中的完整代码文件,可通过C币或积分下载,没有C币或积分的朋友可在关注、点赞和评论博文后,私信发送您的邮箱,我会在第一时间发送给您。博主后面会有更多的分享,敬请关注哦!

参考文献

[1] 尹佳璠, 陈小奇, 李世林. 优化VMD与NLM结合的信号去噪[J]. 计算机工程与设计, 2021, 42(4):1135-1142.

[2] Tracey Brian H, Miller Eric L. Nonlocal means denoising of ECG signals[J]. IEEE Transactions on Biomedical Engineering, 2012,59(9):2383-2386.

[3] 唐晓红, 胡俊锋, 熊国良, 等. 自适应非局部均值及在轴承故障检测中的应用[J]. 振动、测试与诊断, 2019, 39(1):61-67.

[4] 万书亭, 彭勃. 基于非局部均值去噪和快速谱相关的滚动轴承早期故障诊断方法[J]. 中南大学学报(自然科学版), 2020, 51(1):76-85.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234243.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • [Python3]pandas.merge用法详解

    [Python3]pandas.merge用法详解摘要数据分析与建模的时候大部分时间在数据准备上,包括对数据的加载、清理、转换以及重塑。pandas提供了一组高级的、灵活的、高效的核心函数,能够轻松的将数据规整化。这节主要对pandas合并数据集的merge函数进行详解。(用过SQL或其他关系型数据库的可能会对这个方法比较熟悉。)1.merge函数的参数一览表2.创建两个DataFrame3.pd.merge()方法设置连接字段。…

  • 线程 ManualResetEvent 类「建议收藏」

    线程 ManualResetEvent 类「建议收藏」Reset():当一个线程开始一个活动(此活动必须完成后,其他线程才能开始)时, 它调用Reset以将ManualResetEvent置于非终止状态。此线程可被视为控制ManualResetEvent。为了把状态修改为无信号的,必须调用ReSet()方法。WaitOne():调用ManualResetEvent上的WaitOne的线程将阻止,并等待信号。  Se

  • 单应性矩阵的理解及求解3「建议收藏」

    http://www.sohu.com/a/223594989_100007727前面文章《从零开始学习「张氏相机标定法」(一)成像几何模型》中我们已经得到了像素坐标系和世界坐标系下的坐标映射关系:其中,u、v表示像素坐标系中的坐标,s表示尺度因子,fx、fy、u0、v0、γ(由于制造误差产生的两个坐标轴偏斜参数,通常很小)表示5个相机内参,R,t表示相机外参,Xw、Yw、Zw(假设标…

  • C语言之malloc函数「建议收藏」

    C语言之malloc函数「建议收藏」【FROMMSDN&&百科】原型:  void*malloc(unsignedintsize);#include或#includemalloc的全称是memoryallocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。malloc向系统申请分配指定size个字节的内存空间(连

  • JS中动态删除对象中的某个属性[通俗易懂]

    letdog={name:”,age:""};console.log(dog);//{name:"",age:""}//删除当前dog对象中的age属性deletedog.age;console.log(do…

  • JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结)JAVA算法:回文字符串相关问题详解(回文字符串总结)Q1.编写一个工具方法判断给定的字符串是否为回文字符串例如:给定一个字符串“aabbaa”,判断该字符串是否为回文字符串。算法设计如下: /* *给定一个字符串,判断该字符串是否为一个回文字符串 *start表示需要判断的起始位置 *end表示需要判断的结束位置 */ publicstatic…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号