【小波去噪】【matlab】基于小波分析的一维信号滤波(对照组:中值滤波、均值滤波、高斯滤波)

链接1-傅里叶变换
链接2-傅立叶分析和小波分析间的关系
链接3-小波变换(wavelet transform)的通俗解释
链接4-小波基的选择

1.示例代码

function main_wavelet
clc
clear
close all
warning off
%% 1.信号生成
time_length = 10;%总时长,秒
sample_rate = 100;% 采样率,Hz
freq = 10; % 生成的信号的频率,Hz
t = linspace(0, time_length, time_length * sample_rate);  % 生成时间轴
signal = 2*sin(2 * pi * freq * t);% 生成正弦信号
noise = 0.5 * randn(size(signal));% 生成白噪声,高斯过程
noisy_signal = signal + noise;% 将正弦信号和噪声信号相加生成含噪采集数据figure(1)
plot(t,signal,'b-')
hold on
plot(t, noisy_signal,'r-');
hold on
plot(t, noise,'k-');
xlabel('Time (s)');
ylabel('Amplitude');
legend('原信号','含噪信号','噪声')% save('noise.mat','noisy_signal')
%% 2.小波变换
% 设置小波函数和变换阶数
wname = 'db4';  % 选用 Daubechies 4 小波
level = 2;      % 小波变换的阶数
% 进行小波变换
[C, L] = wavedec(noisy_signal, level, wname);
% 提取细节系数
D = detcoef(C, L, level); 
% 对细节系数进行阈值处理
sigma = median(abs(D)) / 0.6745;  % 计算阈值,robust estimator估计方法
D = wthresh(D, 'h', sigma);       % 硬阈值处理
% 重构信号
data_denoised = wrcoef('a', C, L, wname, level);%% 3.绘制结果
figure(3)
subplot(3,1,1); plot(t, noisy_signal,'b-'); title('原始信号(含噪声)');
subplot(3,1,2); plot(t,signal,'b-'); title('原始信号(无噪声)');
subplot(3,1,3); plot(t,data_denoised,'b-'); title('降噪后的信号');figure(4)
plot(t,signal,'b-')
hold on
plot(t,data_denoised,'r-')
legend('原始信号(无噪声)','降噪后的信号')

2.对比滤波器

作为对比,以下代码直接在第1节的main_wavelet.m之后运行即可
中值滤波、均值滤波、高斯滤波

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 一维中值滤波
n=21;                % n为模板长度,值可以改变
y=medfilt1(noisy_signal,n);
figure(101)
plot(t,noisy_signal,'b-')
hold on
plot(t,y,'r-')
legend('中值滤波前的序列','中值滤波后的序列')
%% 一维均值滤波
n=5;                 % n为模板长度,值可以改变
mean=ones(1,n)./n;   % mean为1×n的模板,各数组元素的值均为1/n
y = conv(noisy_signal,mean);
y=y(1:length(y)-length(mean)+1);
figure(102);
plot(t,noisy_signal,'b-')
hold on
plot(t,y,'r-')
legend('均值滤波前的序列','均值滤波后的序列')
%% 一维高斯滤波
gau=[0.0009 0.0175 0.1295 0.3521 0.3521 0.1295 0.0175 0.0009];   % 标准差为1时的高斯函数一维模板,如果标准差不为1,则要修改模板
% gau=[0.0090,0.4910,0.4910,0.0090];                               % 标准差为0.5时的高斯函数一维模板,如果标准差不为0.5,则要修改模板
y=conv(noisy_signal,gau);
y=y(1:length(y)-length(gau)+1);
figure(103);
plot(t,noisy_signal,'b-')
hold on
plot(t,y,'r-')
legend('高斯滤波前的序列','高斯滤波后的序列')

3.封装代码

主代码

function wavelet_fun_main240919
clc
clear
close all
warning off
%% 1.信号生成
time_length = 10;%总时长,秒
sample_rate = 100;% 采样率,Hz
freq = 10; % 生成的信号的频率,Hz
t = linspace(0, time_length, time_length * sample_rate);  % 生成时间轴
noise = 0.5 * randn(size(t));% 生成白噪声,高斯过程
Results_JGLD_ideal = 2*sin(2 * pi * freq * t);% 生成正弦信号
Results_JGLD_error = Results_JGLD_ideal + noise;% 将正弦信号和噪声信号相加生成含噪采集数据%% 小波降噪处理
dt=1/sample_rate;%采样时间间隔
data_denoised=WaveletGenerate(Results_JGLD_ideal,Results_JGLD_error,dt);%% 画图
figure(1)
plot(t,Results_JGLD_ideal,'b-')
hold on
plot(t,data_denoised,'r-')
legend('原始信号(无噪声)','降噪后的信号')

WaveletGenerate.m

function data_denoised=WaveletGenerate(Results_JGLD_ideal,Results_JGLD_error,dt)
%% 1.信号生成
signal = Results_JGLD_ideal;% 原始信号
noisy_signal = Results_JGLD_error;%含噪采集数据
% dt=0.01;%时间间隔
t=dt:dt:(length(signal))*dt;
%% 2.小波变换
% 设置小波函数和变换阶数
wname = 'db4';  % 选用 Daubechies 4 小波
level = 1;      % 小波变换的阶数
% 进行小波变换
[C, L] = wavedec(noisy_signal, level, wname);
% 提取细节系数
D = detcoef(C, L, level); 
% 对细节系数进行阈值处理
sigma = median(abs(D)) / 0.6745;  % 计算阈值,robust estimator估计方法
D = wthresh(D, 'h', sigma);       % 硬阈值处理
% 重构信号
data_denoised = wrcoef('a', C, L, wname, level);

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS Next开发----使用XComponent自定义绘制

XComponent组件作为一种绘制组件,通常用于满足用户复杂的自定义绘制需求,其主要有两种类型"surface和component。对于surface类型可以将相关数据传入XComponent单独拥有的NativeWindow来渲染画面。 由于上层UI是采用arkTS开发,那么想要…

【医疗大数据】基于 B2B 的医疗保健系统中大数据信息管理的安全和隐私问题分析

基于 B2B 的医疗保健系统中大数据信息管理的安全和隐私问题分析 1、引言 1-1 医疗大数据的特点 10 V模型:在医疗领域,大数据的特点被描述为10 V,包括价值(Value)、体量(Volume)、速度&#xf…

Leetcode Hot 100刷题记录 -Day16(旋转图像)

旋转图像 问题描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1 输入:matrix [[1,2,3],[4,5,6]…

Python学习——【4.2】数据容器:tuple元组

文章目录 【4.2】数据容器:tuple元组一、元组的定义格式二、元组的特点三、元组的操作(一)常见操作(二)循环遍历 【4.2】数据容器:tuple元组 一、元组的定义格式 为什么需要元组 列表是可以修改的。如果想…

【网络安全】分享4个高危业务逻辑漏洞

未经许可,不得转载。 文章目录 正文逻辑漏洞1逻辑漏洞2逻辑漏洞3逻辑漏洞4其它正文 该目标程序是一家提供浏览器服务的公司,其核心功能是网页抓取和多账户登录操作,类似于浏览器中的隐身模式,但更加强大和高效。通过该平台,用户可以轻松管理并同时运行数百个隐身浏览器实…

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对

Navicate 链接Oracle 提示 Oracle Library is not loaded ,账号密码都正确地址端口也对的问题 解决办法 出现 Oracle Library is not loaded 错误提示,通常是因为 Navicat 无法找到或加载 Oracle 客户端库(OCI.dll)。要解决这个问题&#x…

【自动驾驶】决策规划算法 | 数学基础(三)直角坐标与自然坐标转换Ⅱ

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

Centos中关闭swap分区,关闭内存交换

概述: Swap 分区是 Linux 系统中扩展物理内存的一种机制。Swap的主要功能是当全部的RAM被占用并需要更多内存时,用磁盘空间代理RAM内存。Swap对虚拟化技术资源损耗非常大,一般虚拟化是不允许开启交换空间的,如果不关闭Swap&…

LED显示屏迎来革新:GOB封装技术引领行业新风尚

在我们日常生活中,LED显示屏无处不在,从繁华的街头广告牌到家庭娱乐中心的大屏幕电视,它们都以鲜明的色彩和清晰的画质吸引着我们的目光。然而,在LED显示屏技术日新月异的今天,一种名为GOB(Glue On Board&a…

ChatCADChatCAD+:Towards a Universal and Reliable Interactive CAD using LLMs

ChatCAD(论文链接:[2302.07257] ChatCAD: Interactive Computer-Aided Diagnosis on Medical Image using Large Language Models (arxiv.org)) 网络流程图: 辅助阅读: 基于大型语言模型的医学图像交互式计算机辅助诊…

7、论等保的必要性

数据来源:7.论等保的必要性_哔哩哔哩_bilibili 等级保护必要性 降低信息安全风险 等级保护旨在降低信息安全风险,提高信息系统的安全防护能力。 风险发现与整改 开展等级保护的最重要原因是通过测评工作,发现单位系统内外部的安全风险和脆弱…

基于SpringBoot的考研助手系统+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

c++9月20日

1.思维导图 2.顺序表 头文件 #ifndef RECTANGLE_H #define RECTANGLE_H#include <iostream>using namespace std;using datatype int ;//类型重定义class Seqlist { private://私有权限datatype *ptr; //指向堆区申请空间的起始地址int size;//堆区空间的长度int len …

在python爬虫中xpath方式提取lxml.etree._ElementUnicodeResult转化为字符串str类型

简单提取网页中的数据时发现的 当通过xpath方式提取出需要的数据的text文本后想要转为字符串&#xff0c;但出现lxml.etree._ElementUnicodeResult的数据类型不能序列化&#xff0c;在网上查找到很多说是编码问题Unicode编码然后解码什么的&#xff1b;有些是(导入的xml库而不…

【24华为杯数模研赛赛题思路已出】国赛B题思路丨附参考代码丨免费分享

2024年华为杯研赛B题解题思路 B题 WLAN组网中网络吞吐量建模 问题1 请根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息&#xff0c;分析其中各参数对AP发送机会的影响&#xff0c;并给出影响性强弱的顺序。通过训练的模型&#xff…

在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)

文章目录 1. 布隆过滤器的应用场景2. 在SpringBoot项目利用Redission实现布隆过滤器3. 布隆过滤器误判的情况4. 与位图相关的操作5. 可能遇到的问题&#xff08;Redission是如何记录布隆过滤器的配置参数的&#xff09;5.1 问题产生的原因5.2 解决方案5.2.1 方案一&#xff1a;…

夏日遛娃绝佳之地:气膜儿童乐园—轻空间

随着夏季的到来&#xff0c;炎炎烈日让户外活动变得有些艰难。然而&#xff0c;在城市的某个角落&#xff0c;一座气膜儿童乐园却为家长和孩子们提供了一个理想的避暑天堂。这里的恒温控制保持在舒适的27℃&#xff0c;让孩子们在欢乐中享受每一个夏日的阳光&#xff0c;而家长…

由于安全风险,安全领导者考虑禁止人工智能编码

安全团队与开发团队之间的紧张关系 83% 的安全领导者表示&#xff0c;他们的开发人员目前使用人工智能来生成代码&#xff0c;57% 的人表示这已成为一种常见做法。 然而&#xff0c;72% 的人认为他们别无选择&#xff0c;只能允许开发人员使用人工智能来保持竞争力&#xff0…

IDA Pro基本使用

IDA Pro基本使用 1.DllMain的地址是什么? 打开默认在的位置1000D02E就是DllMain地址 按空格键可以看到图形化界面选择options、general勾选对应的选项在图像化也能看到 2.使用Imports 窗口并浏览到 gethostbyname&#xff0c;导入函数定位到什么地址? 这里可以打开Impo…

为人机交互保持预见性丨基于G32A1445的T-BOX应用方案

T-BOX是一种集成了通信、计算和控制功能的车载信息处理终端&#xff0c;通过车辆与云端、移动网络等进行数据交互&#xff0c;用于车、人、外部环境的互联互通&#xff0c;支持车辆定位、车载通信、远程控制、故障诊断、数据传输、紧急呼叫等功能&#xff0c;帮助车辆实现更加智…