小波阈值去噪

小波阈值去噪目录1.概念2.原理3.影响降噪效果的因素3.1小波基的选择3.2分解层数的选择3.3阈值的选择3.4阈值函数的选择4.MATLAB代码参考文献1.概念小波分析即用Mallat塔式算法对信号进行降阶分解。该算法在每尺度下将信号分解成近似分量与细节分量。近似分量表示信号的高尺度,即低频信息;细节分量表示信号的低尺度,即高频信息。对含有噪声的信号,噪声分量的主要能量集中在小波分解的细节分量中。2.原理小波阈值去噪的实质为抑制信号中无用部分、增强有用部分的过

大家好,又见面了,我是你们的朋友全栈君。

目录

1.概念

2.原理

3.影响降噪效果的因素

3.1小波基的选择

3.2分解层数的选择

3.3阈值的选择

3.4阈值函数的选择

4.MATLAB代码

参考文献


1.概念

小波分析即用Mallat塔式算法对信号进行降阶分解。该算法在每尺度下将信号分解成近似分量与细节分量。近似分量表示信号的高尺度,即低频信息;细节分量表示信号的低尺度,即高频信息。

对含有噪声的信号,噪声分量的主要能量集中在小波分解的细节分量中。


2.原理

小波阈值去噪的实质为抑制信号中无用部分、增强有用部分的过程。小波阈值去噪过程为:(1)分解过程,即选定一种小波对信号进行n层小波分解;(2)阈值处理过程,即对分解的各层系数进行阈值处理,获得估计小波系数;(3)重构过程,据去噪后的小波系数进行小波重构,获得去噪后的信号。

小波阈值去噪
小波阈值去噪过程
小波阈值去噪
小波分解重构过程

小波分解:X->ca3,cd3,cd2,cd1;小波重构:ca3,cd3,cd2,cd1->X。其中ca为低频信息、近似分量,cd为高频、细节分量。


3.影响降噪效果的因素

3.1小波基的选择

在对信号进行小波分解时需要选择合适的小波基,由于没有任何一种小波基可以对不同类型的信号达到最优的分解效果,因此,如何选择小波基成为小波分解的一个重点。针对现实中的信号,小波基的选择一般要考虑以下几个因素:支撑长度、对称性、消失矩、正则性、相似性。针对一维信号,例如语音信号,通常选择dB小波和sym小波。


3.2分解层数的选择

在对信号进行小波分解时,分解的层数取得越大,则噪声和信号表现的不同特性越明显,越有利于二者的分离,但是分解的层数越大,经过重构的信号失真也会越大,在一定程度上会对信号去噪的效果产生较差的影响。因此,如何选择分解层数以解决信噪分离效果和重构信号失真之间的矛盾呢?

小波分解的频段范围与采样频率有关。若进行N层分解,则各个频段范围为:

小波阈值去噪

假设原始信号X的采样频率为1000Hz,则信号的最大频率为500,对该信号做3层小波分解,则各个频段范围如下图所示。

小波阈值去噪


3.3阈值的选择

在小波域,有效信号对应的系数很大,而噪声对应的系数很小并且仍满足高斯分布。因此可以通过设定阈值将信号在小波域某段区间内的系数置零,就能最大程度的抑制噪声,同时只是稍微损伤有效信号

阈值选择规则基于模型\large y=f(t)+e\large e是高斯白噪声。

 

目前常见的阈值选择方法有:无偏风险估计阈值、极大极小阈值、固定阈值、启发式阈值。

MATLAB自带的自适应阈值选择函数,调用格式如下:

        thr=thselect(X,str);

根据字符串str定义的阈值选择方法求信号X的自适应阈值thr。

        str= ‘rigrsure‘:无偏风险估计阈值;

        str= ‘minimaxi’:极大极小阈值;

        str= ‘sqtwolog’:固定阈值;

        str= ‘heursure’:启发式阈值。

小波阈值去噪

一般来讲,极大极小阈值无偏风险估计阈值比较保守,当噪声在信号的高频段分布较少时,这两种阈值估计方法效果较好,可以将微弱的信号提取出来。而固定阈值和启发式阈值去噪比较彻底,在去噪时显得更为有效,但是也容易把有用的信号误认为噪声去掉。


3.4阈值函数的选择

确定了高斯白噪声在小波域的阈值门限之后,就需要有个阈值函数对含有噪声系数的小波系数进行过滤,去除高斯噪声系数,常用的阈值函数有硬阈值函数和软阈值函数。

3.4.1硬阈值函数

当小波系数的绝对值大于给定阈值时,小波系数不变;小于阈值时,小波系数置零。

小波阈值去噪

3.4.2软阈值函数

当小波系数的绝对值大于给定阈值时,令小波系数减去阈值;小于阈值时,小波系数置零。

小波阈值去噪

MATLAB自带的阈值处理函数,调用格式如下:

        Y=wthresh(X,SORH,thr);

返回输入向量或矩阵X经过软阈值(SORH=’s’)或硬阈值(SORH=’h’)处理后的信号Y,thr是阈值。


4.MATLAB代码

%% 基于小波变换的阈值去噪
clc;
clear;
close all;
%% 产生仿真信号
Fs=100;   %数据采样率Hz
t=(1:1/Fs:4096*1/Fs)'; %对数据进行采样,将t转置为1列
N = length(t);  %数据的采样数目
f1 =0.8; %信号的频率
f2=0.05;
x=2*sin(2*pi*f1*t+cos(2*pi*f2*t));    %产生原始信号
nt=0.9*randn(N,1);  %高斯白噪声生成
y=x+nt; %含噪信号
%% 用db4小波对含噪信号进行5层分解并提取系数
[c,l]=wavedec(y,5,'db4'); 
%取第5层低频近似系数
ca5=appcoef(c,l,'db4',5);
%取各层高频细节系数
cd5=detcoef(c,l,5);
cd4=detcoef(c,l,4);
cd3=detcoef(c,l,3);
cd2=detcoef(c,l,2);
cd1=detcoef(c,l,1);
thr=thselect(y,'sqtwolog'); % 阈值获取
%% 进行软阈值处理
ysoft5=wthresh(cd5,'s',thr);
ysoft4=wthresh(cd4,'s',thr);
ysoft3=wthresh(cd3,'s',thr);
ysoft2=wthresh(cd2,'s',thr);
ysoft1=wthresh(cd1,'s',thr);
c1=[ca5;ysoft5;ysoft4;ysoft3;ysoft2;ysoft1];
Y=waverec(c1,l,'db4');
%% 画图
% 时域波形对比图
figure;
subplot(3,1,1);plot(t,x);xlabel('t/s');ylabel('幅值');title('模拟信号x(t)');
subplot(3,1,2);plot(t,y);xlabel('t/s');ylabel('幅值');title('含噪信号y(t)');
subplot(3,1,3);plot(t,Y);xlabel('t/s');ylabel('幅值');title('去噪后信号x(t)');
% 频谱对比图
figure;
fs=5;      % 采样频率为5Hz
[f,A] = PinPu(x,fs);
subplot(3,1,1);plot(f,A);xlabel('频率/Hz');ylabel('幅值/V');
[f,A] = PinPu(y,fs);
subplot(3,1,2);plot(f,A);xlabel('频率/Hz');ylabel('幅值/V');
[f,A] = PinPu(Y,fs);
subplot(3,1,3);plot(f,A);xlabel('频率/Hz');ylabel('幅值/V');
%% 降噪指标
% 降噪前信噪比
p1=sum(abs(y).^2)/N;
p2=sum(abs(nt).^2)/N;
SNR(1)=10*log10(p1/p2);
% 降噪后信噪比
p3=sum(abs(Y).^2)/N;
p4=sum(abs(Y-x).^2)/N;
SNR(2)=10*log10(p3/p4);
% 均方根误差
RMSE=sqrt(mean((Y-x).^2));
% 相关系数
CR=corr(Y,x,'type','Pearson');

参考文献

[1]司莉,毕贵红,魏永刚等.基于RQA与SVM的声发射信号检测识别方法[J].振动与冲击,2016,35(2):98.

[2]有关小波的几个术语及常见的小波基介绍

[3]小波变换和小波阈值法去噪

[4]基于MATLAB的小波阈值去噪

 

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149288.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午10:00
下一篇 2022年6月16日 下午10:00


相关推荐

  • fiddler+proxifier_fiddler抓包工具

    fiddler+proxifier_fiddler抓包工具本文介绍如何使用Fiddler抓取HTTP和HTTPS协议的包,同时还介绍了如何结合Proxifier工具来处理Filddler无法抓取到包的情况。一、HTTP基本抓包Fiddler官网下载安装:https://www.telerik.com/fiddler对浏览器的抓包,就不再赘述,打开这个软件就一目了然了,本文主要讲对普通Windows桌面应用程序的抓包,点击左下角的两个小图标,让Fi…

    2025年6月23日
    8
  • android之Fragment(官网资料翻译)[通俗易懂]

    Fragment要点Fragment作为Activity界面的一部分组成出现可以在一个Activity中同时出现多个Fragment,并且,一个Fragment亦可在多个Activity中使用。在Activity运行过程中,可以添加、移除或者替换Fragment(add()、remove()、replace())Fragment可以响应自己的输入事件,并且有自己的生命周

    2022年3月9日
    46
  • access h3c交换机光口_h3c光纤交换机_H3C交换机光口设置

    access h3c交换机光口_h3c光纤交换机_H3C交换机光口设置H3C 交换机光口设置有些路由器和交换机的端口是光电复用的 即 combo 口 默认情况下 开的是电口 我们需要打光口的开关打开 interg0 0 1comboenable 交换的操作更简单了 只需要把那个电口用关掉 则对应的光口就起来了 interg1 0 22shutdown 假始 22 口对应的光口是 25 那么此时 25 号光口就可以用了 产品系列核心路由交换机 H3CS9500E

    2026年3月26日
    1
  • Canny边缘检测算法(C++实现)

    Canny边缘检测算法(C++实现)步骤用高斯滤波器平滑图像 用一阶偏导有限差分计算梯度幅值和方向 对梯度幅值应用非极大值抑制 用双阈值算法检测和连接边缘 一 openCV 在 C 中的应用首先 在 mac 的 Xcode 上安装配置 openCV 库 参考一下链接 科学上网访问 https medium com jaskaranvird setting up opencv and c developme

    2026年3月16日
    1
  • 【SpringBoot】15、SpringBoot中使用Kaptcha实现验证码

    【SpringBoot】15、SpringBoot中使用Kaptcha实现验证码当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单1、我们在pom.xml文件中引入kaptcha的maven依赖<!–kaptcha验证码–><dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha&lt…

    2022年6月18日
    26
  • 三极管原理分析

    三极管原理分析这里有一篇文章已经讲解的很好了 http wenku baidu com link url zOLw5B1aS2Rr U3PvDx 6YJHjJykB IsFomNUE5hI R2 uI3gUcB5q 6hGxmhmv8xKM 我再做一些补充

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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