加权平均、EMD、小波等方法去噪效果对比

news2024/12/29 10:05:37

加权平均、EMD、小波等方法去噪效果对比

代码

整体代码如下

%%
clear all;
clc;

load('data_filter120Hz.mat'); %可自己生成随机噪声
fs=1000;%采样频率是1000Hz
%%
%生成正弦波信号
t=linspace(0, length(data)/fs-1/fs, length(data));
y1 =15*sin(2*pi* 2.8 *t);%生成频率为2.8Hz,幅值为15的正弦波
y2 =10*sin(2*pi* 10.5 *t);%生成频率为10.5Hz,幅值为10的正弦波
y3 =3*sin(2*pi* 27 *t);%生成频率为27Hz,幅值为3的正弦波
y4 =0.5*sin(2*pi* 43 *t);%生成频率为43Hz,幅值为0.5的正弦波

y_Sin =y1+y2+y3+y4;
% y_Sin =y1+y2+y3;

y = y_Sin'+data;
%%
saveTime =1;
signal = y(1:saveTime*fs);
dlmwrite('MultiSinWaveWithNoise_1s.txt',signal,'delimiter',' ');

saveTime =10;
signal = y(1:saveTime*fs);
dlmwrite('MultiSinWaveWithNoise_10s.txt',signal,'delimiter',' ');

%%
figure;
subplot(3,1,1);
plot(data);
title('noise');
subplot(3,1,2);
plot(y_Sin);
title('sin wave');
subplot(3,1,3);
plot(y);
title('sin wave + noise');


figure;
plot(y_Sin);
hold on;
plot(y);
legend({'raw','with noise'});

%%
p=0.9;
preTemp =0;
for i=1:length(y)
    y_winAve(i) = preTemp*(1-p)+ y(i)*p;
    preTemp = y_winAve(i);    
end

error_noise = sum(abs(data));
error_winave = sum(abs(y_winAve -y_Sin));

%%
figure;
plot(y_Sin);
hold on;
plot(y_winAve);
legend({'raw','win ave'});

figure;
plot(y);
hold on;
plot(y_winAve);
legend({'raw+noise','win ave'});


%% emd method
emd_num = 2;

imf = emd(y);
y_emd =sum(imf(:,emd_num:end),2);
figure;
plot(y);
hold on;
plot(y_emd);
title('emd denoise');

error_emd = sum(abs(y_emd' -y_Sin));

%% wpdencmp
wpden_num =3;

[thr,sorh,deepapp,crit]=ddencmp('den','wp',y);
[y_wpden,~,~,~]=wpdencmp(y,sorh,wpden_num,'sym6',crit,thr,deepapp);
figure;
plot(y);
hold on;
plot(y_wpden);
title('wpdencmp');

error_wpden = sum(abs(y_wpden' -y_Sin));


%% winave 2nd method
p2 =0.85;
winLen =10;
preTemp =0;
for i=1:length(y)
    if(i<length(y)-winLen)
        if(winLen>=i)
            preTemp =mean(y(1:i+winLen));
        else
            preTemp =mean(y(i-winLen:i+winLen));
        end
    else
        preTemp =mean(y(i-winLen:length(y)));
    end
    
    y_winAve02(i) = preTemp*(1-p2)+ y(i)*p2;
    preTemp = y_winAve02(i); 
end

error_winave02 = sum(abs(y_winAve02 -y_Sin));

figure;
plot(y);
hold on;
plot(y_winAve02);
legend({'raw+noise','win ave 02'});

%%
close all;


效果

在这里插入图片描述
从结果上去看,上述参数中,去噪效果:
小波 >EMD >加权平均 >移动平均(具体设置看上方代码)

Matlab转c++

emd和小波去噪的C++代码效果和matlab自带的效果不太一致(可能是我设置的问题),但都能达到去噪的效果,此时emd效果最好,小波的效果需要调整软阈值的值来优化(0.5->1);

EMD代码
小波代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098472.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何选择一款适合的工单管理系统?“的修”工单系统有什么优势?

在如今快节奏的单位环境中&#xff0c;一个高效、便捷的工单管理系统对于单位的重要性不言而喻。面对琳琅满目的工单管理系统&#xff0c;单位该如何选择最合适的一款呢&#xff1f;本文将详细评测“的修”工单管理系统&#xff0c;带您了解它的强大功能和优势&#xff0c;帮您…

游戏缺少dll文件用什么修复?dll多种修复方法指南

在玩游戏时&#xff0c;有时候可能会遇到游戏缺少dll文件的问题。dll文件是动态链接库的缩写&#xff0c;它包含了一些函数和资源&#xff0c;游戏运行需要依赖这些文件。如果缺少了某个dll文件&#xff0c;游戏就可能无法正常运行。那么游戏缺少dll文件用什么修复&#xff1f;…

C语言---预处理详解

1.预定义符号 在C语言中有一些内置的预定义符号 __FILE__ __LINE__ __DATE__ __TIME__ __STDC__//进行编译的源文件 //文件当前的行号 //文件被编译的日期 //文件被编译的时间 //如果编译器遵循ANSI C&#xff0c;其值为1&#xff0c;否则未定义 编译器在__STDC__报错,说明,v…

基于IPSec VPN隧道技术的国密加密网关保障电力工控数据安全

IPSec VPN&#xff08;Internet Protocol Security Virtual Private Network&#xff09;隧道技术为电力工控系统提供了重要的数据安全传输手段。该技术能实现身份鉴别和数据加密传输&#xff0c;为系统的防护工作增添了有力的支持。 电力工控系统对数据传输的可靠性要求较高。…

String的intern()方法详解

文章目录 前言一、new String&#xff08;&#xff09;创建了几个对象&#xff1f;二、Stting anew String("ab")new String("c")创建了几个对象三、String的intern()方法四&#xff1a;面试题五&#xff1a;总结 前言 在开发过程中很多朋友&#xff0c;由…

vue.config.js配置proxy代理产生404错误的原因

在使用vue做开发时&#xff0c;请求api接口时为了解决跨域问题&#xff0c;一般会设置proxy代理&#xff0c; 但有时候会莫名其妙的出现404错误&#xff0c;这里总结一下vue设置proxy代理产生404错误的几种原因&#xff1a; 原因1&#xff1a;没有注意vue proxy代理优先级的规…

SQL Server向表中插入数据

SQL Server向表中插入数据 切换到对应的数据库 use DBTEST插入数据 方式1 insert into 表名&#xff08;列名1,列名2) values&#xff08;数据1&#xff0c;数据2&#xff09;注意&#xff1a; 列名就算是字符类型也不用加引号&#xff0c;数据如果对应的字段是字符串类型&…

48.排列问题求解

思路分析&#xff1a;通过为每一队分配一个id&#xff0c;join条件要求t1.num < t2.num实现相同两队只比一次 代码实现&#xff1a; with t as (SELECT team_name,caseteam_nameWHEN 勇士 then 1WHEN 湖人 then 2WHEN 灰熊 then 3else 4end numFROM team )SELECT t1.team_…

零经验想跳槽转行网络安全,需要准备什么?

最近在后台看到很多私信都是有关转行网络安全的问题&#xff0c;目前咨询最多的都是&#xff1a;觉得现在的工作没有发展空间&#xff0c;替代性强&#xff0c;工资低&#xff0c;想跳槽转行网络安全。其中&#xff0c;他们主要关心的是&#xff1a;没有经验怎么学习&#xff1…

模糊测试面面观 | 电动汽车充电桩安全漏洞案例分享

在上一期我们讲了针对车载以太网DOIP协议详细阐释在实际过程的漏洞发掘过程&#xff0c;本期我们将继续延展&#xff0c;探讨电动车充电系统的安全漏洞。开源网安在基于 GB/T 27930-2015通信标准的电动汽车充电桩中&#xff0c;采用渗透测试、模糊测试和数据流分析等多种安全漏…

易天光通信推出100G BIDI ER光模块最新解决方案

随着数字信息时代的快速发展&#xff0c;网络通信技术的迅猛进步成为推动科技创新和产业升级的重要引擎之一。作为光通信行业的新秀&#xff0c;近期易天光通信推出了全新的100G BIDI ER1 Lite光模块和100G BIDI LR1 Lite光模块&#xff0c;助力崭新的未来网络建设。 易天光通…

45.复购率问题求解

思路分析&#xff1a; &#xff08;1&#xff09;近xx天&#xff0c;最大日期肯定就是最新的一天&#xff0c;故先用max(order_date) over() today计算当天日期 &#xff08;2&#xff09;过滤出最近90天的订单并且按照user_id,product_id分组求购买次数&#xff1b; &#xff…

逐字稿 | 视频理解论文串讲(上)【论文精读】

大家好&#xff0c;前两期我们讲了视频理解领域里的两篇经典的论文&#xff0c;一个是双流网络&#xff0c;第一个是 I3D 网络&#xff0c;所以说对视频理解这个问题有了个基本的了解。 那今天我们就从 2014 年开始&#xff0c;一直到最近 2021 年的工作&#xff0c;我们一起来…

攻防世界题目练习——Web引导模式(三)(持续更新)

题目目录 1. mfw2.3.4.5. 1. mfw 进去看到网页和页面内容如下&#xff1a; 看到url的参数 ?pageabout &#xff0c;我以为是文件包含什么的&#xff0c;反复试了几次&#xff0c;想用 …/…/…/…/etc/passwd &#xff0c;但是发现.似乎被过滤了&#xff0c;实在不知道怎么做…

转行学网络安全,月薪6k到30k,给兄弟们一些个人建议

前言&#xff1a; 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护&#xff0c;不因偶然或恶意原因而遭受破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;网络服务不中断。 截至2018年8月&#xff0c;我国网民规模达8.02亿人&#xff0c;互联网高…

PHP 生成微信小程序码,并存储图片

背景 当前鄙人接手的项目&#xff0c;需要在设备机器上展示 小程序二维码 为了记录扫码用户从哪台机器注册的 那么&#xff0c;实现方案就是&#xff1a;在小程序码中&#xff0c;绑定设备编号参数 在此&#xff0c;记录一番实现步骤 … 小程序开发文档 - 【 获取不限制的小程…

数据结构-----红黑树简介

目录 前言 1.什么是红黑树&#xff1f; 2.为什么需要红黑树&#xff1f;&#xff08;与AVL树对比&#xff09; 3.红黑树的特性 前言 在此之前我们学习过了二叉排序树和平衡二叉树&#xff08;AVL树&#xff09;&#xff0c;这两种树都是属于搜索树的一种&#xff0c;那么今天…

计算机毕业设计 无人智慧超市管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

FSM人物动画状态机

人物动画状态机 介绍FSM角色模型的设置角色动作的设置角色动画控制器的设置书写角色动画的具体状态&#xff0c;实现缓动起步的FSM总结 介绍 摇杆我就不介绍了&#xff0c;之前我在这里面讲过怎么用摇杆&#xff0c;摇杆连接。 这里我先说下什么是FSM人物动画状态机&#xff0…

文心一言 VS 讯飞星火 VS chatgpt (114)-- 算法导论10.2 7题

七、用go语言&#xff0c;给出一个 O(n)时间的非递归过程&#xff0c;实现对一个含 n个元素的单链表的逆转。要求除存储链表本身所需的空间外&#xff0c;该过程只能使用固定大小的存储空间。 文心一言&#xff1a; 在Go语言中&#xff0c;你可以使用迭代方法来反转一个单链表…