① 小波去噪的基本原理及其实现方法(Matlab)
小波去噪方法是一种基于小波变换多分辨分析的算法,其核心思想是利用噪声和信号在小波分解系数上的不同强度分布特性,对噪声对应的小波系数进行去除,保留原始信号的小波分解系数,然后进行小波重构,从而得到纯净信号。
相比其他去噪方法,小波变换在低信噪比情况下表现出较好的去噪效果,信号识别率较高。此外,小波去噪方法对时变信号和突变信号的去噪效果尤为显著。
利用小波分析对监测采集的信号进行去噪处理,可以恢复原始信号。小波去噪主要包括以下三种方法:
1. 强制去噪处理:通过设置小波系数为零来去除噪声。
2. 默认阈值去噪:使用ddencmp()函数获得信号的默认阈值,使用wdencmp()函数实现去噪过程。
3. 给定软阈值去噪:根据经验给出软阈值数,对信号进行去噪处理。
以下是一个小波去噪的实例分享:
在马达负载为1,转速为1771,内圈的故障信号下,通过小波函数SYM5分解信号到第5层,使用minimaxi阈值选择对系数进行处理,消除噪声。
程序运行结果如下:
图2:去噪前信号
图3:去噪后信号
② matlab中的小波工具箱怎么用,希望能详细介绍
将原始数据文件夹到装有matlab的电脑
打开matlab软件,进入软件主界面
在软件的左下方找到start按钮,点击选择toolbox,然后选择wavelet
进入wavemenu界面,选择一维小波中的wavelet1-D并进入
5.将数据文件(.Mat格式)托到matlab软件主界面的workspace
6.在wavemenu主界面中选择file-load signal或者import from workspace—import signal
7.选择要处理的信号,界面出现loaded信号,这就是没有去噪前的原
始信号
8.右上角选择用于小波分析的小波基以及分解层数并点击analyse开始分析
9.分析后在左边栏目中出现s,a*,d*,其中s为原信号,a*为近似信号,d*为细节信号
10.然后点击denoise去噪
11.阈值方法常用的有4种fixed(固定阈值),rigorsure,heusure,minmax根据需要选择,一般情况下rigorsure方式去噪效果较好
12.oft(软阈值),hard(硬阈值)一般选择软阈值去噪后的信号较为平滑
13.在噪声结构中选择unscaled white noise,因为在工程应用中的噪声一般不仅仅含有白噪声
14.在噪声结构下面的数值不要随意改,这是系统默认的去噪幅度
15.点击denoise开始正式去噪
16.在此窗口下点击file-save denoised singal,保存输出去噪后的信号
17.去噪结束
18.去噪结束后,把去噪后信号(.mat格式)拖至matlab主界面的workspace中,与原信号一起打包,以便以后计算统计量
19.Matlab编程计算相关统计量以及特征量
20.得出统计量和特征量后结束
③ 如何用matlab对图像进行小波去噪,将高频部分部分设置为0
[c,s]=wavedec2(X,2,'sym4');%用sym4小波对图像信号进行二层的小波分解
sizec=size(c);
for i=1:sizec(2)
if(c(i)>350)
c(i)=0;
else
c(i)=0.5*c(i);
end
end
我假设的350是高频啊
④ matlab 小波阈值去噪 求高手赐教!
MATLAB中实现了信号的阈值去噪,主要包括阈值去噪和阈值获取两方面。
1.阈值获取
MATLAB中实现阈值获取的函数有、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。
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是熵名(只在选择小波包时使用)。
函数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)。
函数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)计算阈值并画出三条曲线。
2 * SIGMA^2 * t*(ALPHA+log(n/t))
sum(c(k)^2, k<=t)
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层的分解结构;LAPHA和M必须是大于1的实数;THR是关于j的向量,THR(i)是第i层的阈值;NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。一般压缩时ALPHA取1.5,去噪时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为小波分解的层数。
THR为阈值选择规则:
*TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。
*TPTR='heursure',使用启发式阈值选择。
*TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))).
*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]=wdencmp('gbl',X,'wname',N,THTR,SORH,KEEPAPP);
(2)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THTR,SORH);
(3)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THTR,SORH);
函数wdencmp用于一维或二维信号的消噪或压缩。wname是所用的小波函数,gbl(global的缩写)表示每一层都采用同一个阈值进行处理,lvd表示每层采用不同的阈值进行处理,N表示小波分解的层数,THR为阈值向量,对于格式(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N,SORH表示选择软阈值或硬阈值(分别取值为's'和'h'),参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。XC是要进行消噪或压缩的信号,[CXC,LXC]是XC的小波分解结构,PERF0和PERFL2是恢复或压缩L^2的范数百分比。如果[C,L]是X的小波分解结构,则PERFL2=100*(CXC向量的范数/C向量的范数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100||XC||^2/||X||^2。
函数wthresh的调用格式如下:
Y=wthresh(X,SORH,T)
Y=wthresh(X,SORH,T) 返回输入向量或矩阵X经过软阈值(如果SORH='s')或硬阈值(如果SORH='h')处理后的信号。T是阈值。
Y=wthresh(X,'s',T)返回的是Y=SIG(X)*(|X|-T)+,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。
Y=wthresh(X,'h',T)返回的是Y=X*1(|X|>T),即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。
函数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。输出参数TREED是XD的最佳小波包分解树;PERFL2和PERF0是恢复和压缩L2的能量百分比。PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。SORH的取值为's'或'h',表示的是软阈值或硬阈值。
输入参数N是小波包的分解层数,wname是包含小波名的字符串。函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;否则,进行阈值量化。
格式(2)与格式(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。
⑤ 怎么用matlab小波包分解
小波图来像去噪的方法大源概分为3类
1:基于小波变换摸极大值原理
2:基于小波变换系数的相关性
3:基于小波阈值的去噪。
基于小波阈值的去噪方法3个步骤:
1:
计算含噪声图像的小波变换。选择合适的小波基和小波分解层数j,运用matlab
分解算法将含有噪声图像进行j层小波分解,得到相应的小波分解系数。
2:对分解后的高频系数进行阈值量化,对于从1
到j的每一层,选择一个适当的阈值和合适的阈值函数,将分解得到的高频系数进行阈值量化,得到估计小波系数。
3:进行小波逆变化,根据图像小波分解后的第j层,低频
系数(尺度系数)和经过阈值量化处理的各层高频系数(小波系数),运用matlab重构算法进行小波重构,得到去噪后的图像。
⑥ 用matlab实现基于边缘检测的图象小波阈值去噪方法
Press the "Start" button to see a demonstration of
denoising tools in the Wavelet Toolbox.
This demo uses Wavelet Toolbox functions.
% Set signal to noise ratio and set rand seed.
sqrt_snr = 3; init = 2055615866;
% Generate original signal and a noisy version adding
% a standard Gaussian white noise.
[xref,x] = wnoise(3,11,sqrt_snr,init);
% Denoise noisy signal using soft heuristic SURE thresholding
% and scaled noise option, on detail coefficients obtained
% from the decomposition of x, at level 5 by sym8 wavelet.
% Generate original signal and a noisy version adding
% a standard Gaussian white noise.
lev = 5;
xd = wden(x,'heursure','s','one',lev,'sym8');
% Denoise noisy signal using soft SURE thresholding.
xd = wden(x,'rigrsure','s','one',lev,'sym8');
% Denoise noisy signal using fixed form threshold with
% a single level estimation of noise standard deviation.
xd = wden(x,'sqtwolog','s','sln',lev,'sym8');
% Denoise noisy signal using fixed minimax threshold with
% a multiple level estimation of noise standard deviation.
xd = wden(x,'minimaxi','s','sln',lev,'sym8');
% If many trials are necessary, it is better to perform
% decomposition one time and threshold it many times :
% decomposition.
[c,l] = wavedec(x,lev,'sym8');
% threshold the decomposition structure [c,l].
xd = wden(c,l,'minimaxi','s','sln',lev,'sym8');
% Load electrical signal and select a part.
load leleccum; indx = 2600:3100;
x = leleccum(indx);
% Use wdencmp for signal de-noising.
% find default values (see ddencmp).
[thr,sorh,keepapp] = ddencmp('den','wv',x);
% denoise signal using global thresholding option.
xd = wdencmp('gbl',x,'db3',2,thr,sorh,keepapp);
% Some trial examples without commands counterpart.
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 5;
% [xref,x] = wnoise(1,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 4;
% [xref,x] = wnoise(2,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);
% Some trial examples without commands counterpart (more).
% Rand initialization: init = 2055615866;
% Square root of signal to noise ratio: sqrt_snr = 3;
% [xref,x] = wnoise(3,11,sqrt_snr,init);