小波阈值的函数介绍
- 格式:doc
- 大小:38.50 KB
- 文档页数:5
小波分析的语音信号噪声消除方法小波分析是一种有效的信号处理方法,可以用于噪声消除。
在语音信号处理中,噪声常常会影响语音信号的质量和可理解性,因此消除噪声对于语音信号的处理非常重要。
下面将介绍几种利用小波分析的语音信号噪声消除方法。
一、阈值方法阈值方法是一种简单而有效的噪声消除方法,它基于小波变换将语音信号分解为多个频带,然后通过设置阈值将各个频带的噪声成分消除。
1.1离散小波变换(DWT)首先,对语音信号进行离散小波变换(DWT),将信号分解为近似系数和细节系数。
近似系数包含信号的低频成分,而细节系数包含信号的高频成分和噪声。
1.2设置阈值对细节系数进行阈值处理,将细节系数中幅值低于设定阈值的部分置零。
这样可以将噪声成分消除,同时保留声音信号的特征。
1.3逆变换将处理后的系数进行逆变换,得到去噪后的语音信号。
1.4优化阈值选择为了提高去噪效果,可以通过优化阈值选择方法来确定最佳的阈值。
常见的选择方法有软阈值和硬阈值。
1.4.1软阈值软阈值将细节系数进行映射,对于小于阈值的细节系数,将其幅值缩小到零。
这样可以在抑制噪声的同时保留语音信号的细节。
1.4.2硬阈值硬阈值将细节系数进行二值化处理,对于小于阈值的细节系数,将其置零。
这样可以更彻底地消除噪声,但可能会损失一些语音信号的细节。
二、小波包变换小波包变换是对离散小波变换的改进和扩展,可以提供更好的频带分析。
在语音信号噪声消除中,小波包变换可以用于更精细的频带选择和噪声消除。
2.1小波包分解将语音信号进行小波包分解,得到多层的近似系数和细节系数。
2.2频带选择根据噪声和语音信号在不同频带上的能量分布特性,选择合适的频带对语音信号进行噪声消除。
2.3阈值处理对选定的频带进行阈值处理,将噪声成分消除。
2.4逆变换对处理后的系数进行逆变换,得到去噪后的语音信号。
三、小波域滤波小波域滤波是一种基于小波变换的滤波方法,通过选择合适的小波函数和滤波器来实现噪声消除。
改进阈值函数进行语音信号消噪,但是在程序运行过程中频频报错。
本人经验不足调试不出,希望求得各位指导改进函数表达式附图clear all; clc; close all;fs=8000;%语音信号采样频率为8000xx=wavread('lw1.wav');x1=xx(:,1);%取单声道t=(0:length(x1)-1)/8000;y1=fft(x1,2048);%对信号做2048点FFT变换f=fs*(0:1023)/2048;figure(1)plot(t,x1) %做原始语音信号的时域图形y=awgn(x1',10,'measured');%加10db的高斯白噪声[snr,mse]=snrmse(x1,y')%求得信噪比均方误差figure(2)plot(t,y) %做加噪语音信号的时域图形[c,l]=wavedec(y,3,'db1');%多尺度一维分解%用db1小波对信号进行3层分解并提取系数a3=appcoef(c,l,'db1',3);%a2=appcoef(c,l,'db1',2);%a1=appcoef(c,l,'db1',1);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);thr1=thselect(d1,'rigrsure');%阈值获取,使用Stein的无偏风险估计原理thr2=thselect(d2,'rigrsure');thr3=thselect(d3,'rigrsure');%利用改进阈值函数进行去噪处理gd1=Garrote_gg(d1,thr1);gd2=Garrote_gg(d2,thr2);gd3=Garrote_gg(d3,thr3);c1=[a3 gd3 gd2 gd1];y1=waverec(c2,l,'db1');%多尺度重构[snr,mse]=snrmse(x1,y1')%求得信噪比均方误差figure(3);plot(t,y1);function gd=Garrote_gg(a,b)%a为信号分解后的小波系数,b为获得的阈值m=0.2*((a*a)-(b*b));if (abs(a)>=b)gd=sign(a)*(abs(a)-b/exp(m));else (abs(a)<b)gd=0;endfunction [snr,mse]=snrmse(I,In)% 计算信噪比函数% I :原始信号% In:去噪后信号snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signal power Pn=sum(sum((I-In).^2));%noise powersnr=10*log10(Ps/Pn);mse=Pn/length(I);QQ截图20130516175535.png(11.18 KB, 下载次数: 0)改进函数表达式本帖最后由罗志雄于 2013-5-16 21:58 编辑function [snr,mse]=snrmse(I,In)% 计算信噪比函数% I :原始信号% In:去噪后信号snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signal power Pn=sum(sum((I-In).^2));%noise powersnr=10*log10(Ps/Pn);mse=Pn/length(I);修改后程序清单如下:clear all; clc; close all;fs=8000;%语音信号采样频率为8000xx=wavread('lw1.wav');x1=xx(:,1);%取单声道x1=x1-mean(x1);t=(0:length(x1)-1)/8000;y1=fft(x1,2048);%对信号做2048点FFT变换f=fs*(0:1023)/2048;figure(1)plot(t,x1) %做原始语音信号的时域图形y=awgn(x1',10,'measured');%加10db的高斯白噪声[snr,mse]=snrmsel(x1',y)%求得信噪比均方误差snr1=SNR_singlech(x1',y)figure(2)plot(t,y) %做加噪语音信号的时域图形[c,l]=wavedec(y,3,'db1');%多尺度一维分解%用db1小波对信号进行3层分解并提取系数a3=appcoef(c,l,'db1',3);%a2=appcoef(c,l,'db1',2);%a1=appcoef(c,l,'db1',1);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);thr1=thselect(d1,'rigrsure');%阈值获取,使用Stein的无偏风险估计原理thr2=thselect(d2,'rigrsure');thr3=thselect(d3,'rigrsure');%利用改进阈值函数进行去噪处理gd1=Garrote_gg(d1,thr1);gd2=Garrote_gg(d2,thr2);gd3=Garrote_gg(d3,thr3);c1=[a3 gd3 gd2 gd1];function gd=Garrote_gg(a,b)%a为信号分解后的小波系数,b为获得的阈值m=0.2*((a.*a)-(b*b));if (abs(a)>=b)gd=sign(a)*(abs(a)-b/exp(m));elsegd=zeros(size(a));endy1=waverec(c1,l,'db1');%多尺度重构[snr,mse]=snrmsel(x1',y1) %求得信噪比均方误差figure(3);plot(t,y1);小波去噪软阈值和硬阈值的matlab仿真程序硬阈值、软阈值这里有一段不知道有用没%设置信噪比和随机种子值snr=4;init=2055615866;%产生原始信号sref和高斯白噪声污染的信号s[sref,s]=wnoise(1,11,snr,init);%用db1小波对原始信号进行3层分解并提取系数[c,l]=wavedec(s,3,'db1');a3=appcoef(c,l,'db1',3);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);thr=1;%进行硬阈值处理ythard1=wthresh(d1,'h',thr);ythard2=wthresh(d2,'h',thr);ythard3=wthresh(d3,'h',thr);c2=[a3 ythard3 ythard2 ythard1];s3=waverec(c2,l,'db1');%进行软阈值处理ytsoftd1=wthresh(d1,'s',thr);ytsoftd2=wthresh(d2,'s',thr);ytsoftd3=wthresh(d3,'s',thr);c3=[a3 ytsoftd3 ytsoftd2 ytsoftd1];s4=waverec(c3,l,'db1');%对上述信号进行图示subplot(5,1,1);plot(sref);title('参考信号');subplot(5,1,2);plot(s);title('染噪信号');subplot(5,1,3);plot(s3);title('硬阈值处理');subplot(5,1,4);plot(s4);title('软阈值处理');matlab小波除噪,为何硬阈值和软阈值除躁信噪比一样了?load leleccum;index=1:1024;f1=leleccum(index); % 产生含噪信号init=2055615866;randn('seed',init);f2=f1+18*randn(size(x));snr=SNR_singlech(f1,f2) %信噪比subplot(2,2,1);plot(f1);title('含噪信号'); %axis([1,1024,-1,1]); subplot(2,2,2);plot(f2);title('含噪信号'); %axis([1,1024,-1,1]); %用db5小波对原始信号进行3层分解并提取系数[c,l]=wavedec(f2,3,'db6');a3=appcoef(c,l,'db6',3);d3=detcoef(c,l,3);d2=detcoef(c,l,2);d1=detcoef(c,l,1);sigma=wnoisest(c,l,1);thr=wbmpen(c,l,sigma,2);%进行硬阈值处理ythard1=wthresh(d1,'h',thr);ythard2=wthresh(d2,'h',thr);ythard3=wthresh(d3,'h',thr);c2=[a3 ythard3 ythard2 ythard1];f3=waverec(c2,l,'db6');%进行软阈值处理ytsoftd1=wthresh(d1,'s',thr);ytsoftd2=wthresh(d2,'s',thr);ytsoftd3=wthresh(d3,'s',thr);c3=[a3 ytsoftd3 ytsoftd2 ytsoftd1];f4=waverec(c3,l,'db6');%对上述信号进行图示subplot(2,2,3);plot(f3);title('硬阈值处理');%axis([1,1024,-1,1]); subplot(2,2,4);plot(f4);title('软阈值处理');%axis([1,1024,-1,1]); snr=SNR_singlech(f1,f3)snr=SNR_singlech(f1,f4)信噪比函数SNR_singlech(I,In)function snr=SNR_singlech(I,In)% 计算信噪比函数% I:riginal signal% In:noisy signal(ie. original signal + noise signal)snr=0;Ps=sum(sum((I-mean(mean(I))).^2));%signal powerPn=sum(sum((I-In).^2));%noise powersnr=10*log10(Ps/Pn);小波去噪程序Matlab小波去噪(默认,强制,给定三种情况)%% 利用小波分析对监测采集的信号进行去噪处理,恢复原始信号%小波分析进行去噪有3中方法:%1、默认阈值去噪处理。
1.阈值获取MATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。
(1)ddencmp的调用格式有以下三种:(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)(3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。
输入参数X为一维或二维信号;IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩;IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。
返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。
(2)函数thselect的调用格式如下:THR=thselect(X,TPTR);THR=thselect(X,TPTR)根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。
自适应阈值的选择规则包括以下四种:*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
*TPTR='heursure',使用启发式阈值选择。
*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).*TPTR='minimaxi',用极大极小原理选择阈值。
阈值选择规则基于模型 y = f(t) + e,e是高斯白噪声N(0,1)。
(3)函数wbmpen的调用格式如下:THR=wbmpen(C,L,SIGMA,ALPHA);THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局阈值THR。
一维信号小波阈值去噪1、小波阈值处理基本理论所谓阈值去噪简而言之就是对信号进行分解,然后对分解后的系数进行阈值处理,最后重构得到去噪信号。
该算法其主要理论依据是:小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。
因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。
可以认为,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度上是噪声。
于是,采用阈值的办法可以把信号系数保留,而使大部分噪声系数减小至零。
小波阈值收缩法去噪的具体处理过程为:将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数或者完全保留,或者做相应的收缩(shrinkage)处理。
最后将处理后获得的小波系数用逆小波变换进行重构,得到去噪后的信号。
2、阈值函数的选取小波分解阈值去噪中,阈值函数体现了对超过和低于阈值的小波系数不同处理策略,是阈值去噪中关键的一步。
设w表示小波系数,T为给定阈值,sign(*)为符号函数,常见的阈值函数有:硬阈值函数:(小波系数的绝对值低于阈值的置零,高于的保留不变)软阈值函数:(小波系数的绝对值低于阈值的置零,高于的系数shrinkage处理)式(3-8)和式(3-9)用图像表示即为:值得注意的是:1)硬阈值函数在阈值点是不连续的,在下图中已经用黑线标出。
不连续会带来振铃,伪吉布斯效应等。
2)软阈值函数,原系数和分解得到的小波系数总存在着恒定的偏差,这将影响重构的精度同时这两种函数不能表达出分解后系数的能量分布,半阈值函数是一种简单而经典的改进方案。
见下图:选取的阈值最好刚好大于噪声的最大水平,可以证明的是噪声的最大限度以非常高的概率。
小波阈值去噪的基本原理_小波去噪阈值如何选取小波阈值去噪是利用小波变换的频率分析特性,将信号分解到不同的频带中进行处理并去除噪声的一种方法。
其基本原理是通过小波变换将原始信号分解为不同频带的子信号,然后对每个子信号进行阈值处理,将低幅值的信号置为零,最后通过反变换将处理后的信号恢复到原始信号的时域上。
小波去噪阈值如何选取:小波去噪的核心是选择合适的阈值来判断信号频带中的噪声与信号成分。
有许多常用的阈值函数可供选择,常见的有软阈值和硬阈值。
1.软阈值:对于一些频带的子信号,如果其绝对值小于一个特定的阈值,则将其置为零;如果绝对值大于阈值,则将其保留。
软阈值能有效地抑制较小的噪声,但可能会损失一些信号的微弱成分。
2.硬阈值:对于一些频带的子信号,如果其绝对值小于一个特定的阈值,则将其置为零;如果绝对值大于阈值,则将其保留。
与软阈值相比,硬阈值能更彻底地去除噪声,但可能会导致信号的失真。
选取合适的阈值是小波去噪的关键,一般来说1.基于固定阈值的去噪方法:根据经验或实验数据设定一个固定的阈值对信号进行去噪处理。
这种方法简单直观,但需要根据具体问题和实际情况选取合适的阈值。
2.基于百分比阈值的去噪方法:将小波系数按大小排序,并根据百分比选取阈值。
常用的方法有能量百分比法和极大值百分比法。
能量百分比法选择固定能量百分比并将小波系数按能量大小进行排序,然后选取对应百分位的小波系数作为阈值。
极大值百分比法选择相对于整个小波系数序列的极大值进行百分比计算,选取对应百分位的极大值作为阈值。
3. 基于信息准则的去噪方法:利用统计学原理,通过最大化似然函数或最小化信息准则(如Akaike信息准则、最小描述长度准则等)来选择最优的阈值。
这种方法较为复杂,但具有更好的理论依据。
综上所述,小波去噪阈值的选择需要根据具体情况和实际需求进行,可以根据经验、百分比法或信息准则等方法选取合适的阈值,以达到较好的去噪效果。
matlab 小波变换软阈值小波变换软阈值是一种常用的信号处理技术,可以用于信号去噪和压缩。
在MATLAB中,可以使用wavethresh函数来实现小波变换软阈值处理。
首先,你需要使用wavedec函数对信号进行小波分解,得到小波系数。
然后,可以使用thselect函数来选择软阈值的阈值值。
最后,利用wdencmp函数对小波系数进行软阈值处理,实现信号的去噪或压缩。
在MATLAB中,你可以按照以下步骤来实现小波变换软阈值处理:1. 使用wavedec函数对信号进行小波分解,得到小波系数。
例如,[C,L] = wavedec(x,n,'wname'),其中x为输入信号,n为分解层数,'wname'为小波基名称。
2. 使用thselect函数来选择软阈值的阈值值。
例如,thr = thselect(C,'rigrsure'),这里选择了Rigorous sure阈值。
3. 利用wdencmp函数对小波系数进行软阈值处理。
例如,xd = wdencmp('gbl',C,L,'wname',n,thr,'s'),这里'gbl'表示全局阈值,'wname'为小波基名称,n为分解层数,'s'表示软阈值处理。
需要注意的是,在实际使用中,你需要根据具体的信号特点和处理需求来选择合适的小波基、分解层数和阈值选择方法。
另外,小波变换软阈值处理也涉及到阈值的选取和参数的调节,需要结合实际情况进行调试和优化。
总之,MATLAB提供了丰富的小波变换函数和工具,可以帮助你实现小波变换软阈值处理,从而对信号进行去噪和压缩。
希望这些信息能够帮助到你。
MATLAB小波函数总结在MATLAB中,小波函数是一种弧形函数,广泛应用于信号处理中的压缩,降噪和特征提取等领域。
小波函数具有局部化特性,能够在时频域上同时分析信号的瞬时特征和频率信息。
本文将总结MATLAB中常用的小波函数及其应用。
一、小波函数的基本概念小波变换是一种时间-频率分析方法,通过将信号与一组基函数进行卷积得到小波系数,从而实现信号的时频分析。
小波函数具有紧致性,能够在时域和频域具有局域性。
MATLAB提供了一系列的小波函数,用于不同的应用场景。
1. Haar小波函数Haar小波函数是最简单的一类小波函数,它是一种基于矩阵变换的正交小波函数。
具体而言,Haar小波函数形式如下:ψ(x)=1(0≤x<1/2)-1(1/2≤x<1)0(其他)Haar小波函数的最大优点是构造简单,仅由两个基本函数构成,且可以有效地表示信号的边缘和跳变。
2. Daubechies小波函数Daubechies小波函数是一类紧支小波函数,能够在时域和频域上实现精确的表示。
MATLAB提供了多个Daubechies小波函数,如db1、db2、db3等,其选择取决于所需的时频分析精度。
3. Symlets小波函数Symlets小波函数是Daubechies小波函数的一种变形,它在保持带通特性的基础上增加了支持系数的数量,提高了时频分析的精度。
MATLAB 提供了多个Symlets小波函数,如sym2、sym3、sym4等。
4. Coiflets小波函数Coiflets小波函数是一种具有对称性和紧支特性的小波函数,可用于信号压缩和降噪等应用。
MATLAB提供了多个Coiflets小波函数,如coif1、coif2、coif3等。
二、小波函数的应用小波函数广泛应用于信号处理中的各个领域,包括信号压缩、降噪、图像处理和模式识别等。
下面将重点介绍小波函数在这些领域的应用。
1.信号压缩小波函数可以通过选择合适的小波基函数和阈值策略来实现信号的压缩。
MATLAB小波分析工具箱常用函数1. wfilters 函数:用于生成小波滤波器和尺度函数,可以根据指定的小波和尺度类型生成小波滤波器系数。
2. wavedec 函数:用于将信号进行小波分解,将输入信号分解为多个尺度系数和小波系数。
3. waverec 函数:用于将小波系数和尺度系数进行重构,将小波分解后的系数重构为信号。
4. cwt 函数:用于进行连续小波变换,可以获得信号在不同尺度上的时频信息。
5. icwt 函数:用于进行连续小波反变换,可以将连续小波变换的结果重构为原始信号。
6. cmorlet 函数:用于生成复数 Morlet 小波。
Morlet 小波是一种基于高斯调制正弦波的小波函数。
7. modwt 函数:用于进行无偏快速小波变换,可以获取多个尺度下的小波系数。
8. imodwt 函数:用于进行无偏快速小波反变换,可以将无偏快速小波变换的结果重构为原始信号。
9. wdenoise 函数:用于对信号进行去噪处理,可以去除信号中的噪声。
10. wavethresh 函数:用于对小波系数进行阈值处理,可以实现信号压缩。
11. wenergy 函数:用于计算小波系数的能量,可用于分析小波系数的频谱特性。
12. wscalogram 函数:用于绘制小波系数的时频谱图,可以直观地显示信号的时频信息。
13. wpdec 函数:用于进行小波包分解,可以将输入信号分解为多个尺度系数和小波系数。
14. wprec 函数:用于将小波包系数和尺度系数进行重构,将小波包分解后的系数重构为信号。
15. wptree 函数:用于提取小波包树的信息,可以获得小波包树的结构和节点信息。
这些函数可以实现小波分析中主要的操作和功能。
通过使用这些函数,你可以进行小波分析、信号去噪、信号压缩等应用。
同时,你也可以根据具体的需求使用这些函数进行函数的扩展和自定义。
1 阈值获取MATLAB中实现信号阈值获取的函数有ddencmp、thselect、wbmpen和wdcbm,下面对它们的用法进行简单的说明。
1.1 函数Ddencmp的调用格式(1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)(2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)(3)[THR,SORH,KEEPAPP]=ddencmp(IN1,'wv',X)函数ddencmp用于获取在消噪或压缩过程中的默认阈值。
输入参数X为一维或二维信号;IN1取值为'den'或'crop',den表示进行去噪,crop表示进行压缩;IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。
返回值THR 是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时用)。
1.2 函数thselect的调用格式THR=thselect(X,TPTR)THR=thselect(X,TPTR)根据字符串TPTR定义的阈值选择规则来选择信号X 的自适应阈值。
自适应阈值选择规则包括下面四种:(1)TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
(2)TPTR='heursure',使用启发式阈值选择。
(3)TPTR='sqtwolog',阈值等于sqrt(2*log(1ength(X)))。
(4)TPTR='minimaxi',用极大极小原理选择阈值。
阈值选择规则基于模型e=)y+(,e是高斯A噪声N(O,1)。
tf1.3 函数wbmpen的调用格式THR=wbmpen(C,L,SIGMA,ALPHA)THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局阈值THR。
1 阈值获取MATLAB 中实现信号阈值获取的函数有ddencmp 、thselect 、wbmpen 和wdcbm ,下面对它们的用法进行简单的说明。
函数Ddencmp 的调用格式(1)[THR ,SORH ,KEEPAPP ,CRIT]=ddencmp(IN1,IN2,X)(2)[THR ,SORH ,KEEPAPP ,CRIT]=ddencmp(IN1,'wp',X)(3)[THR ,SORH ,KEEPAPP]=ddencmp(IN1,'wv',X)函数ddencmp 用于获取在消噪或压缩过程中的默认阈值。
输入参数X 为一维或二维信号;IN1取值为'den'或'crop',den 表示进行去噪,crop 表示进行压缩;IN2取值为'wv'或'wp',wv 表示选择小波,wp 表示选择小波包。
返回值THR 是返回的阈值;SORH 是软阈值或硬阈值选择参数;KEEPAPP 表示保存低频信号;CRIT 是熵名(只在选择小波包时用)。
函数thselect 的调用格式THR=thselect(X ,TPTR)THR=thselect(X ,TPTR)根据字符串TPTR 定义的阈值选择规则来选择信号X 的自适应阈值。
自适应阈值选择规则包括下面四种:"(1)TPTR='rigrsure',自适应阈值选择使用Stein 的无偏风险估计原理。
(2)TPTR='heursure',使用启发式阈值选择。
(3)TPTR='sqtwolog',阈值等于sqrt(2*log(1ength(X)))。
(4)TPTR='minimaxi',用极大极小原理选择阈值。
阈值选择规则基于模型e t f y +=)(,e 是高斯A 噪声N(O ,1)。
函数wbmpen 的调用格式THR=wbmpen(C ,L ,SIGMA ,ALPHA)THR=wbmpen(C ,L ,SIGMA ,ALPHA)返回去噪的全局阈值THR 。
THR 通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart 的处罚算法。
[C ,L]是进行去噪的信号或图像的小波分解结构;SIGMA 是零均值的高斯白噪声的标准偏差;ALPHA 用于处罚的调整参数,它必须是一个大于1的实数,一股取ALPHA=2。
设t*是crit(t)=-sum(c(k)^2,k<=t)+2*SIGMA^2*t*(ALPHA+log(n/t))的最小值,其中c(k)是按绝对值从大到小排列的小波包系数,n 是系数的个数,则THR=c(t*)。
wbmpen(C ,L ,SIGMA ,ALPHA ,ARG)计算阈值并画出三条曲线。
(1)2*SIGMA^2*t*(ALPHA+10g(n/t))((2)Sum(c(k)^2,k<=t)(3)crit(t)函数wdcbm 的调用格式(1)[THR ,NKEEP]=wdcbm(C ,L ,ALPHA)(2)[THR ,NKEEP]=wdcbm(C ,L ,ALPHA ,M)函数wdcbm 用于使用Birge-Massart 算法获取一维小波变换的阈值。
返回值THR 是与尺度无关的阈值,NKEEP 是系数的个数。
[C ,L]是要进行消噪或压缩的信号在j=length(L)-2层的分解结构;ALPHA 和M 必须是大于1的实数;THR 是关于j 的向量,THR(i)是第i 层的阈值;NKEEP 也是关于j 的向量,NKEEP(i)是i 层的系数个数。
一般压缩时ALPHA 取,去噪时ALPHA 取3。
2 信号的阈值去噪MATLAB 中实现信号的阈值去噪的函数有wden 、wdencmp 、wthresh 、wthcoef 、wpthcoef 以及wpdencmp 。
下面对它们的用法进行简单的介绍。
函数wden 的调用格式(1)[XD ,CXD ,LXD]=wden(X ,TPTR ,SORH ,SCAL ,N ,'wname')(2)[XD ,CXD ,LXD]=wden(C ,L ,TPTR ,SORH ,SCAL ,N ,'wname')^函数wden 用于一维信号的自动消噪。
X 为原始信号,[C ,L]为信号的小波分解,N 为小波分解的层数。
TPTR 为阈值选择规则,TPTR 的取值有以下四种:·TPTR='rigrsure',采用Stein 无偏似然估计。
·TPTR='heursure',采用启发式阈值选择。
·TPTR='sqtwolog',取通用阈值n t n log 2σ=。
·TPTR='minimaxi',采用极大极小值进行阈值选择。
SORH 是软阈值或硬阈值的选择(分别对应's'和'h')。
SCAL 指所使用的阈值是否需要重新调整,包含下而三种:·SCAL='one',不调整。
·SCAL='sln',根据第一层的系数进行噪声层的估计来调整阈值。
·SCAL='mln',根据不同层的噪声估计来调整阈值。
(XD 为消噪后的信号,[CXD ,LXD]为消噪后信号的小波分解结构。
格式(1)返回对信号X 经过N 层分解后的小波系数进行阈值处理后的消噪信号XD 和信号XD 的小波分解结构[CXD ,LXD]。
格式(2)返回参数与格式(1)相同,但其结构是由直接对信号的小波分解结构[C,L]进行阈值处理得到的。
函数wdencmp 的调用格式(1)[XC ,CXC ,LXC ,PERF0,PERFL2]=wdenemp('gbl ’,X ,'wname',N ,THR ,SORH,KEEPAPP)(2)[XC ,CXC ,LXC ,PERF0,PERFL2]=wdencmp('1vd',X ,'wname',N ,THR ,SORH)(3)[XC ,CXC ,LXC ,PERF0,PERFL2]=wdencmp('1vd ’,C ,L ,'wname',N ,THR ,SORH)函数wdencmp 用于一维或二维信号的消噪或压缩。
wname 是所用的小波函数,gbl(global 的缩写)表示每层都采用同一个阈值进行处理,lvd 表示每层用不同的阈值进行处理,N 表示小波分解的层数,THR 为阈值向量,对于格式(2)和(3)每层部要求有一个阈值,因此阈值向量THR 的长度为N ,SORH 表示选择软阈值或硬阈值(分别取值为's'和'h),参数KEEPAPP 取值为1时,则低频系数不进行阈值量化,反之,则低频系数要进行阈值量化。
XC 是消噪或压缩后的信号,[CXC,LXC]是XC 的小波分解结构,PERF0和PERFL2是恢复和压缩2L 的范数百分比。
如果[C ,L]是X 的小波分解结构,则PERFL2=100*(CXC 向量的范数/C 向量的范数)2;如果X 是一维信号,小波wname 是一个正交小波,则PERFL2=22/100X XC 。
函数wthresh 的调用格式Y=wthresh(X ,SORH ,T)Y=wthresh(X ,SORH ,T)返回输入向量或矩阵X 经软阈值(如果SORH='s')或 硬阈值(如果SORH='h')处理后的信号。
T 是阈值。
Y=wthresh(X ,'s',T)返回的是Y=+-•)|(|)(T X X SING ,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为0,大于阈值的点变为该点值与阈值的差值。
{Y=_wthresh(X ,'h',T)返回的是Y=)|(|1T X X >•,即把信号的绝对值与阈值比较,小于或等于阈值的点变为0,大于阈值的点保持不变。
一股来说,用硬阈值处理后的信号比软阈值处理后的信号更粗糙。
函数wpthcoef 的调用格式T=wpthcoef(T ,KEEPAPP ,SORH ,THR)NT=wpthcoef(T ,KEEPAPP ,SORH ,THR)通过对小波包树T 的系数进行阈值处理后返回一个新的小波包树NT 。
如果KEEPAPP=1,则细节信号的系数不进行阈值处理;否则,就要进行阈值处理。
如果SORH='s',使用软阈值,如果SORH='h',则使用硬阈值。
THR 是阈值。
函数wthcoef 的调用格式有下面四种:(1)NC=wthcoef('d',C ,L ,N ,P)(2)NC= wthcoef('d',C ,L ,N)(3)NC=wthcoef('a',C ,L)(4)NC=wthcoef('t',C ,L ,N ,T ,SORH)函数wthcoef 用于一维信号小波系数的阈值处理。
格式(1)返回小波分解结构 [C ,L]经向量N 和P 定义的压缩率处理后的新的小波分解向量NC ,[NC ,L]即构成一个新的小波分解结构。
N 包含要被压缩的细节向量,P 是把较小系数置0的百分比信息的向量。
N 和P 的长度必须相同,向量N 必须满足1≤N(i)≤length(L)-2。
&格式(2)返回小波分解结构[C ,L]经过将向量N 中指定的细节系数置0后的小波分解向量NC 。
格式(3)返回小波分解结构[C ,L]经过近似系数置0后的小波分解向量NC 。
格式(4)返回小波分解结构[C ,L]经过将向量N 作阈值处理后的小波向量NC 。
如果SORH='s',则为软阈值;如果SORH='h',则为硬阈值。
N 包含细节的尺度向量,T 是N 相对应的阈值向量。
N 和T 的长度必须相等。
函数wpdencmp 的调用格式(1)[XD ,TREED ,PERF0,PERFL2]=wpdencmp(X ,SORH ,N ,'wname',CRIT,PAR,KEEPAPP)(2)[XD ,TREED ,PERF0,PERFL2]=wpdencmp(TREE ,SORH ,CRIT ,PAR ,KEEPAPP) 函数wpdencmp 用于使用小波包变换进行信号的压缩或去噪。
格式(1)返回输入信号X(一维和二维)的去噪或压缩后的信号XD 。