小波信号处理概述(小波去噪,小波包,小波神经网络)

小波信号处理分析:(部分描述参考网上大神)

小波消噪分析过程包括小波分解、阈值处理、小波重构三部分。其根据有用信号和噪声的差异性,选择合适的小波母函数,使小波分解后的有用信号的小波系数幅值大于噪声的小波系数幅值。再通过选择合适的阈值清除幅值较小的噪声信号,剩余有用信号的信息,重构信号,达到滤波消噪的目的。可以将其近似看作一组带通滤波器组。其过程如图所示。
在这里插入图片描述
在小波分析中经常用到近似和细节,近似表示信号的高尺度,即低频信息;细节表示信号的低尺度,即高频信息。对含有噪声的信号,噪声分量的主要能量集中在小波解的细节分量中。在以上过程中,小波基和分解层数的选择,阈值的选取规则,和阈值函数的设计,都是影响最终去噪效果的关键因素。
1、小波基的选择
一般选取小波基函数要从支撑长度、消失矩、对称性、正则性以及相似性等进行综合考虑。由于小波基函数在处理信号时各有特点,且没有任何一种小波基函数可以对所有类型信号都取得最优的去噪效果。一般来讲,db小波系和sym小波系在语音去噪中是经常会被用到的两族小波基。
2、分解层数的选择
对于一个要采集的信号,根据奈奎斯采样定理,其采样频率>= 2*信号的最大频率。而其他噪声频率如高斯白噪声的信号是幅度分布服从高斯分布,功率谱密度服从均匀分布的,并且与有效信号进行混合叠加的。
在小波分解中,分解层数的选择也是非常重要的一步。取得越大,则噪声和信号表现的不同特性越明显,越有利于二者的分离。但另一方面,分解层数越大,重构到的信号失真也会越大,在一定程度上又会影响最终去噪的效果。因此在应用时要格外注意处理好两者之间的矛盾,选择一个合适的分解尺度。
3、阈值的选取
在小波域,有效信号对应的系数很大,而噪声对应的系数很小。噪声在小波域对应的系数仍满足高斯白噪分布。阈值选择规则基于模型 y = f(t) + e,e是高斯白噪声N(0,1)。因此可以通过小波系数、或者原始信号来进行评估能够消除噪声在小波域的阈值。
目前常见的阈值选择方法有:固定阈值估计、极值阈值估计、无偏似然估计以及启发式估计等(N为信号长度)。
4、 阈值函数选择
确定了高斯白噪声在小波系数(域)的阈值门限之后,就需要有个阈值函数对这个含有噪声系数的小波系数进行过滤,去除高斯噪声系数,常用的阈值函数有软阈值和硬阈值方法,很多文献论文中也有在阈值函数进行一些大量的改进和优化。
小波去噪
小波变换阈值去噪法:信号对应的小波系数包含有信号的重要信息,其幅值比较大,但是数目较少,而噪声对应的小波系数是一致分布的,个数较多,但是幅值较小。通过这种方法进行去噪的方法比较经典,阈值的选取有软、硬阈值等,这种方法已经做得相当全了,主要步骤有三步:

  1. 计算含噪声信号的小波变换,选择合适的小波基和小波分解层数J,将图像进行小波分解,得到相应的小波分解系数。
  2. 对分解后的高频系数进行阈值量化,对于从1到J的每一层,选择一个适当的阈值和合适的阈值函数,将分解得到的高频系数进行阈值量化,得到估计小波系数。
  3. 进行小波逆变换,根据小波分解后的第J层的低频系数(尺度系数)和经过阈值量化处理的各层高频系数(小波系数)。再利用重构算法进行小波重构,得到去噪后信号。
    (程序中可以自行变换数据)
    clear all;clc
    load(‘D:\超声波检测\超声波\上位机采集数据\定位数据’);
    s=data_resample; %获取要处理的信号,data_resample是在上面.mat里的一个参数
    %整个信号的长度
    N = numel(s);
    %小波分解;
    [c,l]=wavedec(s,7,’coif5’); %小波基为coif5,分解层数为7层
    ca11=appcoef(c,l,’coif5’,7); %获取低频信号
    cd1=detcoef(c,l,1);
    cd2=detcoef(c,l,2); %获取高频细节
    cd3=detcoef(c,l,3);
    cd4=detcoef(c,l,4);
    cd5=detcoef(c,l,5);
    cd6=detcoef(c,l,6);
    cd7=detcoef(c,l,7);
    sd1=zeros(1,length(cd1));
    sd2=zeros(1,length(cd2)); %1-3层置0,4-7层用软阈值函数处理
    sd3=zeros(1,length(cd3));
    sd4=wthresh(cd4,’s’,0.014);
    sd5=wthresh(cd5,’s’,0.014);
    sd6=wthresh(cd6,’s’,0.014);
    sd7=wthresh(cd7,’s’,0.014);
    c2=[ca11,sd7,sd6,sd5,sd4,sd3,sd2,sd1];
    s0=waverec(c2,l,’coif5’); %小波重构
    figure;
    subplot(211);plot(s);subplot(212);plot(s0);%画图
    在这里插入图片描述

小波分解和小波包分解区别:
① 小波分解
小波变换只对信号的低频部分做进一步分解,而对高频部分也即信号的细节部分不再继续分解,所以小波变换能够很好地表征一大类以低频信息为主要成分的信号,不能很好地分解和表示包含大量细节信息(细小边缘或纹理)的信号,如非平稳机械振动信号、遥感图象、地震信号和生物医学信号等。
② 小波包分解
小波包变换既可以对低频部分信号进行分解,也可以对高频部分进行分解,而且这种分解既无冗余,也无疏漏,所以对包含大量中、高频信息的信号能够进行更好的时频局部化分析。
小波神经网络:(简略概述)
以BP神经网络拓扑结构为基础,把小波基函数作为隐含层节点的传递函数,信号前向传播的同时误差反向传播的神经网络。
MATLAB中的小波神经网络算法的实现过程:

1、用Mexihat函数作为样本输入和输出;
2、数据采用逐个处理,三层网络拓扑结构;
3、赋予网络学习速率和动量因子初始值;
4、初始化输出层和隐层的连接权wjh和隐层和输出层的连接权;
5、初始化小波参数、初始化权系数、阈值初始化;
6、求解小波网络运用BP算法,各参数每次学习的调整量;
7、引入动量因子aerfa,加快收敛速度和阻碍陷入局部极小值;
8、保存每次的误差;

猜你喜欢

转载自blog.csdn.net/weixin_44586889/article/details/106882687