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

噪声熵和损失熵的定义_归一化信噪比利用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)
blank

相关推荐

  • pycharm 激活码2021年【在线破解激活】

    pycharm 激活码2021年【在线破解激活】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • c语言解析json字符串(json对象转化为字符串)

    如题,根据json字符串的难易程度

  • rabbitmq使用mqtt协议[通俗易懂]

    rabbitmq使用mqtt协议[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、rabbitmq是什么?二、mqtt协议是什么?三、使用步骤1.引入库2.读入数据总结前言在网上学习物联网,发现有人可以用springboot+rabbitmq可以搭建物联网(IOT)平台,rabbitmq不是消息队列吗,原来rabbitmq有两种协议,消息队列是用的AMQP协议,而用在智能硬件中的是MQTT协议。一、rabbitmq是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解

  • get请求的长度限制是多少_url长度限制为多少

    get请求的长度限制是多少_url长度限制为多少Httpget方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。目前说的get长度有限制,是特定的浏览器及服务器对它的限制。各种浏览器和服务器的最大处理能力如下:IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。Firefox:对Firefox浏览器URL的长度限制为:65536个字符。Safari:URL最大长度限制为80000个字符。Opera:URL最大长度限制为190000个字符。Goog

  • day04 JavaScript高级程序设计 阅读总结

    day04 JavaScript高级程序设计 阅读总结《JavaScript高级程序设计》(第四版)阅读总结额,据说这本是前端er必看书籍,花了20个小时简单把这本书过了一下,目前暂时很少用到的东西我这一遍就没有过了,等以后要用的时候再回来继续学了。先来谈谈这本书的缺点,书籍前面章节用到了一些后面才讲到的东西,比如第三章讲symbol对象时,就用到了后面才讲的iterator和generator。然后就是感觉讲的有点太广了,而且基本没有课后习题,看过就是看过了,顶多自己花时间把书里面的例子都敲一遍。所以我建议应该和现代JavaScript教程一起食用。反

  • 8种HOOK技术[通俗易懂]

    8种HOOK技术[通俗易懂]1.IAT_HOOKIAT是程序中存储导入函数地址的数据结构,如果HOOK了导入函数地址。就可以在函数调用的时候,将函数流程HOOK到我们指定的流程。但是我个人觉得这种方式最好要结合DLL注入的方式,如果单纯的使用HOOK,那么就需要将需要执行的操作的shellcode写入目标进程,如果操作复杂,可能需要的shellcode量特别大,所以我们需要借助DLL注入,这样就将我们需要执行的代码写入…

发表回复

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

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