小波去噪
- 格式:doc
- 大小:360.00 KB
- 文档页数:15
小波分析的语音信号噪声消除方法小波分析是一种有效的信号处理方法,可以用于噪声消除。
在语音信号处理中,噪声常常会影响语音信号的质量和可理解性,因此消除噪声对于语音信号的处理非常重要。
下面将介绍几种利用小波分析的语音信号噪声消除方法。
一、阈值方法阈值方法是一种简单而有效的噪声消除方法,它基于小波变换将语音信号分解为多个频带,然后通过设置阈值将各个频带的噪声成分消除。
1.1离散小波变换(DWT)首先,对语音信号进行离散小波变换(DWT),将信号分解为近似系数和细节系数。
近似系数包含信号的低频成分,而细节系数包含信号的高频成分和噪声。
1.2设置阈值对细节系数进行阈值处理,将细节系数中幅值低于设定阈值的部分置零。
这样可以将噪声成分消除,同时保留声音信号的特征。
1.3逆变换将处理后的系数进行逆变换,得到去噪后的语音信号。
1.4优化阈值选择为了提高去噪效果,可以通过优化阈值选择方法来确定最佳的阈值。
常见的选择方法有软阈值和硬阈值。
1.4.1软阈值软阈值将细节系数进行映射,对于小于阈值的细节系数,将其幅值缩小到零。
这样可以在抑制噪声的同时保留语音信号的细节。
1.4.2硬阈值硬阈值将细节系数进行二值化处理,对于小于阈值的细节系数,将其置零。
这样可以更彻底地消除噪声,但可能会损失一些语音信号的细节。
二、小波包变换小波包变换是对离散小波变换的改进和扩展,可以提供更好的频带分析。
在语音信号噪声消除中,小波包变换可以用于更精细的频带选择和噪声消除。
2.1小波包分解将语音信号进行小波包分解,得到多层的近似系数和细节系数。
2.2频带选择根据噪声和语音信号在不同频带上的能量分布特性,选择合适的频带对语音信号进行噪声消除。
2.3阈值处理对选定的频带进行阈值处理,将噪声成分消除。
2.4逆变换对处理后的系数进行逆变换,得到去噪后的语音信号。
三、小波域滤波小波域滤波是一种基于小波变换的滤波方法,通过选择合适的小波函数和滤波器来实现噪声消除。
实验二小波去噪小波去噪的原理:小波变换阈值法也称为小波萎缩法(Wavelet Shrinkage)。
它是Donoho和Johnstone等人于1992年提出的,是目前应用最为广泛的小波去噪方法之一。
该方法的基本原理为:小波变换能将有用信号的能量“集中"到少数小波系数上,而白噪声在任何正交基上的变换仍然是白噪声。
相对而言,有用信号的小波系数值必然大于那些能量分散且幅值较小的噪声的小波系数值。
含噪信号经过小波分解以后,噪声成分的能量主要集中在高频部分且分布较均匀,而有用信号的能量则集中在少数几个幅值较大的小波系数上。
因此,可以通过选取一个合适的阈值,对小波系数进行截断处理,将绝对值小于该阂值的小波系数置零,绝对值大于该阈值的小波系数予以保留或收缩,然后再对处理后的小波系数进行逆变换,就能得到去噪后的信号。
本次应用小波变换进行去噪的实验选择小波基函数‘db2’,进行三级小波分解,之后通过公式计算阈值t。
其中,d1,k表示第一级小波分解的系数,σ1表示根据第一级小波系数估计出的噪声标准差,M为第一级小波系数的个数。
软阈值去噪的方法如下:1.比较不同信噪比情况下的去噪效果产生两个信号,一个为blocks信号,一个为doppler信号。
先研究blocks信号以及处理。
下图为不加噪的信号:下图为加上信噪比为3dB的信号:信噪比为3dB的信号去噪效果如下:同样方法处理信噪比为5dB的blocks信号,处理前:处理后:信噪比为7dB,处理前:处理后:之后,研究doppler信号的去噪处理。
产生一个doppler信号:加噪,3dB:小波分解,级数为3,采用基函数‘db2’,软阈值处理去噪:信噪比5db:去噪:信噪比7dB:去噪:分析:小波变换去噪得到了比较好的效果,但是,小波变换去噪是一种估计去噪方法,并不能得到原始精确的信号值。
对于越低的信噪比,其去噪效果越不理想,和原始信号的偏差越大。
2.比较软硬阈值处理的结果。
小波去噪阈值处理小波去噪是一种非常有效的信号处理方法,可以用于降低信号噪声对信号质量的影响,在很多应用场景中得到了广泛的应用,例如图像处理、语音处理、生物信号处理等。
而阈值处理是小波去噪过程中的一个关键环节,它决定了去除噪声的效果和保留信号细节的程度。
本文将详细介绍小波去噪和阈值处理的原理、方法和应用。
一、小波去噪原理小波去噪的基本原理是利用小波变换将信号分解成不同频率的子信号,然后通过对不同频率子信号进行阈值处理来去除噪声。
具体步骤如下:1. 将原始信号进行小波分解,得到多个尺度和频带的子信号。
2. 对每个子信号进行阈值处理,将小于某个阈值的系数置为0,大于阈值的系数保留。
3. 将处理后的子信号进行小波重构,得到去噪后的信号。
小波去噪的实现可以采用基于硬阈值或软阈值的方法。
硬阈值法:当小波系数绝对值小于阈值时,将其置为0。
软阈值法:当小波系数绝对值小于阈值时,将其置为0;当小波系数绝对值大于阈值时,用系数减去阈值的符号函数乘以阈值得到新的系数。
二、阈值确定方法阈值处理的成功与否取决于选择适当的阈值。
阈值的确定是小波去噪的核心问题之一,以下是几种比较常见的阈值确定方法:1. 固定阈值法:直接将固定的阈值应用到所有子带中。
缺点是不同信号质量和性质的信号适用的阈值不同,固定阈值法不灵活。
2. 聚类阈值法:将小波系数按大小排序,按固定的步长确定一定数量的阈值。
计算每个子带中小于阈值的系数的平均值和标准差,再将它们作为该子带的阈值参数。
缺点是对于每个信号,都需要多次试验选择最优的步长。
3. 利用样本特征值确定阈值:对于多种不同性质的样本,提取其中一定的特征值,如样本的均值或中值,并将其作为阈值对待。
缺点是对于不同的信号,需要多次测试阈值的灵敏度。
4. 神经网络法:利用神经网络的训练能力,让神经网络自己学习适合某种类型信号的阈值算法。
神经网络法带有较强的自适应性和实时性,但缺点是需要大量的样本数据和更高的计算复杂度。
本文对各种去噪方法进行了比较,总结了两大类方法的基本思想及实现流程,详细介绍了应用最广的小波阈值去噪。
一、小波去噪主要方法1、基于小波分频的去噪方法——主要用来压制面波等规则干扰;2、小波域去噪方法——主要用于压制随机干扰,目前主要有三种方法: a) 模极大值去噪方法(Mallat 和Zhang ,1992)b) 尺度相关性分析方法(Xu ,1994)c) 小波阈值收缩方法(Dohono 和Johnstone ,1994)其中,小波阈值去噪方法能在最小均方误差意义下得到信号的近似最优估计,计算速度快,适应性广,因此应用最广泛。
二、方法实现的总体流程1、基于小波分频的去噪方法小波时频分析使信号在空间域和频率域同时具有良好的局部分析性质。
小波变换可以将信号分解到各个不同的尺度或各个不同的频段上,并且通过伸缩、平移聚焦到信号的任一细节加以分析。
小波分析的这些特长,结合传统的傅立叶去噪方法,为地球物理信号去噪提供了有效途径。
对于离散序列信号,其小波变换采用 Mallat 快速算法, 信号经尺度j =1,2,…,J 层分解后,得到)(2R L 中各正交闭子空间(1W 、2W 、…、J W 、J V ), 若j j V A ∈代表尺度为j 的低频部分, j j W D ∈代表高频部分,则信号可以表示为J J D D A t f +++= 1)(,据此可重构出信号在尺度j =J 时的低频部分和j =1,2,…,J 的高频部分。
如果地震数据中的干扰波频率与有效波的频率成分是分开的,通过小波分频很容易消除干扰波;如果两种频率成分存在混叠,也可以用小波分频方法提取混叠部分,再用传统方法分离有效和干扰波。
这样可以最大限度的保留有效波能量。
2、小波域去噪方法小波域去噪方法是利用信号和噪声的小波系数在小波域不同特性来进行的。
信号和噪声的小波系数幅值随尺度变化的趋势不同,随着尺度的增加,噪声的小波系数很快衰减,而信号的小波系数基本不变。
单片机小波去噪-概述说明以及解释1.引言1.1 概述单片机小波去噪是一种在单片机系统中利用小波变换技术对信号进行去噪处理的方法。
随着单片机在各种领域的广泛应用,如智能家居、智能交通、工业控制等,对信号处理的需求越来越高。
而信号往往会受到各种干扰和噪声的影响,影响系统的性能和稳定性,因此需要对信号进行去噪处理。
小波变换作为一种有效的信号处理技术,可以在时域和频域同时对信号进行分析,具有多分辨率和局部性等优点。
通过小波变换可以将信号分解成不同频率和尺度的成分,实现对信号的去噪处理。
在单片机系统中实现小波去噪,可以有效地提高系统的性能和稳定性,同时减少系统的计算复杂度和资源消耗。
本文将介绍单片机小波去噪的原理、实现步骤和实验结果分析,展望其在各种应用领域的前景,总结其在信号处理领域的重要意义和应用价值。
1.2 文章结构本文主要分为三大部分。
首先是引言部分,介绍了本文的概述、文章结构以及目的,为读者提供了对本文的整体了解。
接下来是正文部分,主要包括单片机的应用、小波去噪原理以及单片机小波去噪实现步骤。
通过对单片机在实际应用中的重要性进行介绍,以及小波去噪原理的解释,读者可以更好地理解单片机小波去噪的实现过程。
最后是结论部分,对实验结果进行分析,展望单片机小波去噪在未来的应用前景,并对全文内容进行总结,使读者对本文的主要内容有一个清晰的概念。
1.3 目的:本文旨在介绍单片机小波去噪技术在信号处理领域的应用。
通过深入解析小波去噪原理,探讨单片机如何实现小波去噪处理,为读者提供一种有效的信号处理方法。
同时,通过实验结果的分析和对应用前景的展望,希望读者能够深入了解小波去噪技术的优势和局限性,为今后在实际工程中的应用提供参考和借鉴。
最终,总结本文的重点内容,让读者对单片机小波去噪有一个清晰的认识并且能够将其灵活运用于实际工程中。
2.正文2.1 单片机的应用单片机是一种微型计算机系统,主要由微处理器、内存、输入输出接口和定时器等组成。
小波去噪原理
小波去噪是一种信号处理的方法,通过将信号分解为不同频率的小波系数,并对这些小波系数进行处理,来实现去除噪声的目的。
其原理主要包括以下几个步骤:
1. 小波分解:利用小波变换将原始信号分解为不同频率的小波系数。
小波变换是通过将信号与一组小波基函数进行卷积运算得到小波系数的过程,可以得到信号在时频域上的表示。
2. 阈值处理:对于得到的小波系数,通过设置一个阈值进行处理,将小于该阈值的小波系数置零,而将大于该阈值的小波系数保留。
这样做的目的是去除噪声对信号的影响,保留主要的信号成分。
3. 逆小波变换:通过将处理后的小波系数进行逆小波变换,将信号从小波域恢复到时域。
逆小波变换是通过将小波系数与小波基函数的逆进行卷积运算得到恢复信号的过程。
4. 去噪效果评估:通过比较原始信号和去噪后信号的差异,可以评估去噪效果的好坏。
常用的评价指标包括信噪比、均方根误差等。
小波去噪的原理基于信号在小波域中的稀疏性,即信号在小波系数中的能量主要分布在较少的小波系数上,而噪声的能量主要分布在较多的小波系数上。
因此,通过设置适当的阈值进行处理,可以去除噪声对信号的影响,保留原始信号的主要成分。
小波去噪常用方法目前,小波去噪的方法大概可以分为三大类:第一类方法是利用小波变换模极大值原理去噪,即根据信号和噪声在小波变换各尺度上的不同传播特性,剔除由噪声产生的模极大值点,保留信号所对应的模极大值点,然后利用所余模极大值点重构小波系数,进而恢复信号;第二类方法是对含噪信号作小波变换之后,计算相邻尺度间小波系数的相关性,根据相关性的大小区别小波系数的类型,从而进行取舍,然后直接重构信号;第三类是小波阈值去噪方法,该方法认为信号对应的小波系数包含有信号的重要信息,其幅值较大,但数目较少,而噪声对应的小波系数是一致分布的,个数较多,但幅值小。
基于这一思想,在众多小波系数中,把绝对值较小的系数置为零,而让绝对值较大的系数保留或收缩,得到估计小波系数,然后利用估计小波系数直接进行信号重构,即可达到去噪的目的。
1:小波变换模极大值去噪方法信号与噪声的模极大值在小波变换下会呈现不同的变化趋势。
小波变换模极大值去噪方法,实质上就是利用小波变换模极大值所携带的信息,具体地说就是信号小波系数的模极大值的位置和幅值来完成对信号的表征和分析。
利用信号与噪声的局部奇异性不一样,其模极大值的传播特性也不一样这些特性对信号中的随机噪声进行去噪处理。
算法的基本思想是,根据信号与噪声在不同尺度上模极大值的不同传播特性,从所有小波变换模极大值中选择信号的模极大值而去除噪声的模极大值,然后用剩余的小波变换模极大值重构原信号。
小波变换模极大值去噪方法,具有很好的理论基础,对噪声的依赖性较小,无需知道噪声的方差,非常适合于低信噪比的信号去噪。
这种去噪方法的缺点是,计算速度慢,小波分解尺度的选择是难点,小尺度下,信号受噪声影响较大,大尺度下,会使信号丢失某些重要的局部奇异性。
2:小波系数相关性去噪方法信号与噪声在不同尺度上模极大值的不同传播特性表明,信号的小波变换在各尺度相应位置上的小波系数之间有很强的相关性,而且在边缘处有很强的相关性。
小波去噪的原理小波去噪是一种常用的信号处理方法,它通过对信号进行小波变换,利用小波系数的特性来实现信号的去噪处理。
小波去噪的原理是基于信号的时频特性,通过选择合适的小波基函数和阈值处理方法,将信号中的噪声成分去除,从而提取出信号的有效信息。
在实际应用中,小波去噪被广泛应用于图像处理、语音处理、医学信号处理等领域,取得了良好的去噪效果。
小波变换是小波去噪的基础,它将信号分解成不同尺度和频率的小波系数。
在小波变换的过程中,信号会被分解成低频部分和高频部分,其中低频部分包含了信号的大致趋势信息,而高频部分包含了信号的细节信息和噪声。
通过对小波系数的阈值处理,可以将高频部分的噪声去除,从而实现信号的去噪处理。
在小波去噪中,选择合适的小波基函数对去噪效果有着重要影响。
不同的小波基函数具有不同的时频特性,可以更好地适应不同类型的信号。
常用的小波基函数有Daubechies小波、Haar小波、Morlet小波等,它们在去噪处理中各有优势,需要根据实际信号的特点进行选择。
另外,阈值处理是小波去噪中的关键步骤,它决定了去噪的效果和信号的保留程度。
常用的阈值处理方法有软阈值和硬阈值,软阈值将小于阈值的小波系数置为零,硬阈值将小于阈值的小波系数直接舍弃。
通过合理选择阈值大小和阈值处理方法,可以实现对噪声的有效去除,同时保留信号的有效信息。
总的来说,小波去噪是一种基于小波变换的信号处理方法,它通过选择合适的小波基函数和阈值处理方法,实现对信号的去噪处理。
在实际应用中,小波去噪具有较好的去噪效果和较高的计算效率,被广泛应用于各种领域。
随着信号处理技术的不断发展,小波去噪方法也在不断完善和改进,为实际工程问题的解决提供了有力的工具和方法。
小波去噪原理
小波去噪是一种信号处理方法,它利用小波变换将信号分解成不同尺度的频段,然后通过去除噪声信号的方式来实现信号的去噪。
小波去噪原理的核心是利用小波变换的多尺度分析特性,将信号分解成不同频段的细节信息和大致趋势,然后根据信号的特点来选择合适的阈值进行去噪处理。
在实际应用中,小波去噪可以有效地去除信号中的噪声,提高信号的质量和可
靠性。
它被广泛应用于图像处理、音频处理、生物医学信号处理等领域,取得了显著的效果。
小波去噪的原理可以简单概括为以下几个步骤:
1. 小波变换,首先对原始信号进行小波变换,将信号分解成不同尺度的频段。
2. 阈值处理,根据信号的特点和噪声的性质,选择合适的阈值对小波系数进行
处理,将噪声信号抑制或者滤除。
3. 逆小波变换,将经过阈值处理的小波系数进行逆变换,得到去噪后的信号。
小波去噪的原理在实际应用中有一些注意事项:
1. 选择合适的小波基,不同的小波基对信号的分解和重构有不同的效果,需要
根据具体的应用场景选择合适的小波基。
2. 阈值选取,阈值的选取对去噪效果有很大的影响,需要根据信号的特点和噪
声的性质进行合理选择。
3. 多尺度分析,小波变换可以实现多尺度分析,可以根据信号的特点选择合适
的尺度进行分解,以提高去噪效果。
小波去噪原理的核心思想是利用小波变换将信号分解成不同尺度的频段,然后
根据信号的特点选择合适的阈值进行去噪处理。
它在实际应用中取得了显著的效果,成为信号处理领域中重要的去噪方法之一。
基于MATLAB的小波除噪摘要:小波分析理论已经成为信号除噪中的一种重要工具。
本文介绍了小波变换的基本原理,说明了用MATLAB实现小波除噪的主要步骤,并在MATLAB环境下编写程序和设计界面,实现对于给定的信号进行噪声去除。
关键词:小波变换,小波除噪,MATLAB1引言信号一般都是带有噪声的,信号除噪是信号处理中的重要内容。
小波变换是一种信号的时频分析,它可以方便地从混有噪声的信号中提取原始信号,运用小波分析进行信号噪声去除是小波分析的重要应用之一。
本文介绍了MATLAB环境下小波除噪的基本原理和几种小波下信号的噪声消除,从混有噪声的信号中提取了原始信号。
2小波除噪的原理以MATLAB实现小波除噪的主要步骤如下:(1)信号的小波分解。
选择一个小波并确定分解层次,然后进行分解计算。
(2)小波分解高频系数的阈值量化。
对各个分解尺度下的高频系数选择一个阈值进行软阈值或硬阈值量化处理。
(3)一维小波重构。
根据小波分解的底层低频系数和各层高频系数进行一维小波重构。
2.1 小波分解2.1.1小波变换原理在每个可能的尺度下计算小波系数,计算量和数据量相当大,如果使用二进膨胀和位移,就会使得分析非常有效,并且也非常精确[1]。
(1)近似与细节对于许多信号,低频成分相当重要,它常常蕴含着信号的特征,而高频成分则给出信号的细节或差异。
例如,人的语音如果去除高频成分,听起来则会有所不同,但是仍然能够知道所说的内容。
在小波分析中,常用到近似和细节。
近似表示信号的高尺度,低频率成分;而细节表示的是低尺度,高频成分,因此原始信号通过两个互补滤波器产生两个信号。
图2.1是一阶滤波器的简要示意图。
图2.1 一阶滤波器示意图对于一个信号采用图2.1所示的方法,理论上将产生两倍于原始数据的数据量,为此采用以下采样的方法来减少数据量,通过计算小波变换系数可以得到原始信号的近似与细节。
(2)信号多层分解通过不断的分解过程,将近似信号连续分解,就可将信号分解成许多低分辨率成分。
图2.2就是一个小波分解树,图中S表示原始信号,A表示近似,D表示细节,下标表示分解的层数。
图2.2 小波分解树示意图由于分析过程是重复迭代的,从理论上讲可以无限地连续分解下去,但事实上,分解可以进行到细节只包含单个样本为止。
因此在实际应用中,一般依据信号的特性或合适的标准来选择适当的分解层数。
2.1.2 小波的选择本文中主要用到的小波有如下几种:(1)Haar小波:Haar小波是最早、最简单的紧支撑小波,所有的小波讨论都是从Haar小波开始的。
Haar小波在MATLAB中简称”haar”。
(2)Daubechies小波:Daubechies小波是一个紧支撑正交小波,对于给定的支撑宽度具有极值相位和最高消失矩,相关尺度的滤波器是极小相位滤波器。
Daubechies小波在MATLAB中简称”db”。
(3)Coiflets小波:Coiflets小波函数用”coif N”表示,N为阶数。
Coiflets 小波函数Ψ和尺度函数φ对称性比Daubechies小波好。
(4)Symlets小波:Symlets是由Daubechies提出的一族近似对称的小波,它是db小波族的改进。
两个小波族的特性相似。
Daubechies提出当它的小波保持极大简单性的同时,可以增加其对称性。
Symlets也是紧支撑小波,对于给定的支撑宽度,具有最高消失矩数。
MATLAB中的Symlets小波简称为”sym”[2]。
2.1.3 小波的分解MATLAB中多层一维小波分解函数为wavedec(),它的格式为:[C,L]=wavedec(X,N,’wavename’)该函数用指定的小波计算信号X的N层分解。
N必须是严格的正整数。
输出结构中包括小波分解向量C和标记向量L,其中:C=[近似系数a(N)∣细节系数d(N)∣…∣细节系数d(1)];L(1)=近似系数a(N)的长度;L(i)=细节系数d(N-i+2)的长度,i=2,…,N+1;L(N+2)=length(X)。
2.2阈值选择由于小波变换的小波基都是紧支集,因此小波变换具有一种“集中”的能力,可以使信号的能量在小波变换域集中于少数系数上,那么相对来说,对这些系数的取值必然大于在小波系数域内能量分散于大量小波系数的噪声的小波系数值,这个意味着对小波系数进行阈值处理可以在小波变换域中去除低于固定幅度的噪声[3]。
小波阈值法除噪可以分为硬阈值法和软阈值法两种。
硬阈值是把信号的绝对值与指定的阈值进行比较,小于或等于阈值的点变为0,大于阈值的点保持不变;软阈值是把信号的绝对值与指定的阈值进行比较,小于或等于阈值的点变为0,大于阈值的点变为该点值与阈值的差。
对于阈值的选择规则有四种:rigrsue,heursure,sqtwolog和minimaxi四种。
在选取阈值时,往往存在这有效去除噪声和有效保留有用高频成分的矛盾。
本文中,四种阈值选择规则均可实现。
2.3小波重构在没有信息损失的情况下还原原始信号的过程叫做重构或合成。
重构过程使用小波系数来进行的,小波分解包括滤波和下采样,小波重构包括上采样与滤波。
本文中使用wdencmp函数进行小波重构和除噪,wdencmp函数的格式为:[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(option,X,’wavename’,n,thr,sorh,keepapp)通过使用阈值thr的小波系数阈值化方法,返回输入信号X的除噪信号XC。
输出参数[CXC,LXC]表示XC的小波分解结构;PERFL2和PERF0是用百分数表示的L^2恢复和压缩率。
Keepapp=1,表示对近似系数不能阈值化;否则可以阈值化。
3用MATLAB实现小波除噪3.1 界面设计MATLAB软件是Mathwork公司推出的一套高性能的集数值和符号计算、文字处理、可视化建模及实时控制的可视化软件[4]。
近年来MATLAB已经成为信号和图像处理的首选工具。
本文是基于MATLAB 7.7.0(R2008b)软件来实现的。
用户界面是用户和计算机进行信息交流的工具和方法,MATLAB中的图形用户界面(Graphical User Interface,GUI)的使用使得设计非常方便。
本文使用GUI 设计的界面如图3.1所示。
界面分为三个部分:输入部分、小波除噪参数选择部分和结果显示部分。
输入部分用于输入mat文件或者wav文件,并且该部分画出了原始信号的波形以及原始信号的频谱;小波除噪部分用于选择小波函数、分解层数、阈值规则标准和软硬阈值,所有参数都选择后,点击“小波阈值除噪”按钮,会在右边部分显示除噪后得到的信号以及该信号的频谱;结果显示部分会显示小波除噪阈值、降噪后信号在原始信号的能量成分以及降噪后信号与原始信号的标准差。
图3.1 小波除噪界面3.2 仿真实验对于同一信号,设置小波函数为sym,阶数为5阶,分解层数为3层,阈值选择标准为minimaxi,分别用软阈值和硬阈值进行除噪得到的信号如图3.2所示。
从上图中可以看出,经过除噪后,采用软阈值法得到的信号比硬阈值法平滑。
对于同一信号,设置小波函数为db,阶数为4阶,分解层数分别为4层和2层,阈值选择标准为sqtwolog,阈值为软阈值,得到的信号如图3.3所示。
图3.3a 采用4层分解层数除噪图3.3b 采用2层分解层数除噪从上图中可以看出,原始信号的频谱比较广,而经过除噪后,得到的频谱主要集中在低频部分,而高频部分基本上为0。
另外,小波分解层次并不是越高越好,当分解层次高于5层后,除噪效果改善已经不很明显,反而增加了计算的代价,实际应用中分解层数取3~5层即可。
4总结小波变换是一种信号的时频分析方法,它具有很多优点,非常适合于分析非平稳信号,有效区分信号中的噪声,小波变换正广泛应用于各种领域。
MATLAB 给我们提供了一个很方便的工作平台,通过MATLAB编写程序和使用GUI对给定的信号进行噪声消除非常简便。
基于MATLAB的小波除噪方法是一种提取有用信号、去除噪声的优越方法,具有广阔的使用价值。
当然,本文由于水平和时间有限,在编写程序和界面设计方面还有很多地方需要改进。
参考文献[1] 陈桂明,张明照,戚红雨.应用MATLAB语言处理数字信号与数字图像[M].北京:科学出版社,2001.[2] 孙延奎.小波分析及其应用[M].北京:机械工业出版社,2005.[3] 王新楼.小波除噪方法分析与MATLAB仿真[J].工业控制计算机,2008,6(21).[4] 刘卫国.MATLABA程序设计与应用[M].北京:高等教育出版社,2006.附录:MATLAB下编写的程序function varargout = wavelet1(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @wavelet1_OpeningFcn, ...'gui_OutputFcn', @wavelet1_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});endfunction wavelet1_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;guidata(hObject, handles);function varargout = wavelet1_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function openmat_Callback(hObject, eventdata, handles)axes(handles.axes1);cla;popup_sel_index = get(handles.matname, 'Value');switch popup_sel_indexcase 1load noisbloc.mat;y=noisbloc;case 2load noischir.mat;y=noischir;case 3load noisdopp.mat;y=noisdopp;endhandles.y=y;plot(handles.axes1,handles.y);guidata(hObject,handles);from=1;to=length(handles.y);Fs=1024; %首先提取出待分析的样本,将其存入sample中sample=handles.y(from:to); %生成离散化的频率点,以采样频率作为离散化的间隔f=linspace(0,Fs/2,(to-from+1)/2); %对样本作快速Fourier变换,变换结果存入Y中Y=fft(sample,to-from+1);Y=Y(1:(to-from+1)/2); %为与f对应,只取Y的前半部分plot(handles.axes9,f,2*sqrt(Y.*conj(Y))); %绘制幅值谱曲线function matname_Callback(hObject, eventdata, handles)function matname_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction pushbutton3_Callback(hObject, eventdata, handles)switch handles.wavelet_value %小波函数的选择case 1wname='haar';case 2dbn=int2str(get(handles.value,'value'));wname=strcat('db',dbn);case 3dbn=int2str(get(handles.value,'value'));wname=strcat('sym',dbn+1);case 4dbn=int2str(get(handles.value,'value'));wname=strcat('coif',dbn);endlev=get(handles.wlevel,'value'); %分解层数[c,l]=wavedec(handles.y,lev,wname); %用wname小波对信号做lev层分解yuzhi_style = get(handles.chose_yuzhi, 'Value');%根据原始信号和阈值选择标准tptr确定阈值switch yuzhi_stylecase 1 %使用stein的无偏似然估计原理所得到自适应阈值tptr='rigrsure';case 2 %启发式阈值选择tptr='heursure';case 3 %固定阈值形式tptr='sqtwolog';case 4 %采用极大极小值原理选择阈值tptr='minimaxi';endthr=thselect(handles.y,tptr); %得到阈值set(handles.yuzhi,'string',thr);s_hvalue = get(handles.popupmenu5, 'Value'); %选择软硬阈值switch s_hvaluecase 1sorh_01='s'; %软阈值case 2sorh_01='h'; %硬阈值end[xd,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,l,wname,lev,thr,sorh_01,1); %进行降噪处理,xd为小波降噪后的信号set(handles.bili,'string', perf0);err=norm(xd-handles.y);set(handles.biaozhunchai,'string',err);plot(handles.axes8,xd);from=1;to=length(xd);Fs=1024;%首先提取出待分析的样本,将其存入sample中sample=xd(from:to);%生成离散化的频率点,以采样频率作为离散化的间隔f=linspace(0,Fs/2,(to-from+1)/2);%对样本作快速Fourier变换,变换结果存入Y中Y=fft(sample,to-from+1);Y=Y(1:(to-from+1)/2); %为与f对应,只取Y的前半部分plot(handles.axes10,f,2*sqrt(Y.*conj(Y))); %绘制幅值谱曲线function tool_Callback(hObject, eventdata, handles)function chose_wave_Callback(hObject, eventdata, handles)wavelet_value = get(handles.chose_wave, 'Value'); %小波函数选择区域设置switch wavelet_valuecase 1set(handles.value,'visible','off');case 2set(handles.value,'visible','on','string','1|2|3|4|5|6|7|8|9|10');case 3set(handles.value,'visible','on','string','2|3|4|5|6|7|8');case 4set(handles.value,'visible','on','string','1|2|3|4|5');endhandles.wavelet_value=wavelet_value;guidata(hObject,handles);function chose_wave_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction wlevel_Callback(hObject, eventdata, handles)function wlevel_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction openwav_Callback(hObject, eventdata, handles)[filename,filepath]=uigetfile('.wav','Open wav file'); %选择wav文件[y,fs,nbits]=wavread([filepath,filename]); %打开wav文件handles.y=y;handles.fs=fs;plot(handles.axes1,handles.y); %画原始信号波形曲线guidata(hObject,handles);set(handles.wavename,'string',filename);set(handles.fsvalue,'string',fs);from=1;to=length(handles.y); %首先提取出待分析的样本,将其存入sample中sample=handles.y(from:to); %生成离散化的频率点,以采样频率作为离散化的间隔f=linspace(0,fs/2,(to-from+1)/2); %对样本作快速Fourier变换,变换结果存入Y中Y=fft(sample,to-from+1);Y=Y(1:(to-from+1)/2); %为与f对应,只取Y的前半部分plot(handles.axes9,f,2*sqrt(Y.*conj(Y))); %绘制频谱曲线function wavename_Callback(hObject, eventdata, handles)function wavename_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction fsvalue_Callback(hObject, eventdata, handles)function fsvalue_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction matfile_Callback(hObject, eventdata, handles)%打开mat文件,单击单选按钮,相应参数设置部分可用if ~get(handles.matfile,'value')set(handles.matname,'enable','off');set(handles.openmat,'enable','off');elseset(handles.matname,'enable','on');set(handles.openmat,'enable','on');set(handles.wavefile,'value',0);set(handles.wavename,'enable','off');set(handles.openwav,'enable','off');set(handles.fsvalue,'enable','off');endfunction wavefile_Callback(hObject, eventdata, handles)%打开wave文件,单击单选按钮,相应参数设置部分可用if ~get(handles.wavefile,'value')set(handles.wavename,'enable','off');set(handles.openwav,'enable','off');set(handles.fsvalue,'enable','off');elseset(handles.wavename,'enable','on');set(handles.openwav,'enable','on');set(handles.fsvalue,'enable','on');set(handles.matfile,'value',0);set(handles.matname,'enable','off');set(handles.openmat,'enable','off');endfunction edit3_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction value_Callback(hObject, eventdata, handles)function value_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction popupmenu5_Callback(hObject, eventdata, handles)function popupmenu5_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction chose_yuzhi_Callback(hObject, eventdata, handles)function chose_yuzhi_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white');endfunction pushbutton5_Callback(hObject, eventdata, handles)%退出程序close('all');MATLAB语言及应用作业基于MATLAB的小波除噪班级:Y110602学号:S2*******姓名:李斌2011年5月27日。