小波阈值去噪的应用
1、调用wden函数进行一维小波去噪,其调用格式如下:
[XD,CXD,LXD]=wden(x,tptr,sorh,scal,N,'wname')
其中x表示原始信号,tptr表示阀值类型,sorh表示软阀值(s表示)或硬阀值(h表示),N表示分解层数,wname小波函数类型,XD去除噪声后信号,CXD表示各层分量,LXD表示各层分量对应的长度。
示例1对应调用wden函数对应的m文件如下:
t=0:0.001:1;%%时间序列%%
x=sin(5*pi*t);%%原始信号%%
n=randn(size(t));%%表示产生一个噪声信号%%
y=x+n;%%含有噪声的信号%%
yd=wden(y,'heursure','s','one',3,'sym5');
subplot(3,1,1) %%表示显示三行一列第一个图%%
%%设置第一幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(x,'r');
xlabel('n');
ylabel('幅值');
title('原始信号');
axis([0 1000 -5 5])
subplot(3,1,2) %%表示显示三行一列第二个图%%
%%设置第二幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(y,'k');
xlabel('n');
ylabel('幅值');
title('含有噪声信号');
axis([0 1000 -5 5]);
subplot(3,1,3) %%表示显示三行一列第三个图%%
%%设置第三幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(yd,'c');
xlabel('n');
ylabel('幅值');
title('消除噪声后信号');
axis([0 1000 -5 5]);


2、运行示例1对应的m文件程序,结果如图:

3、调用ddencmp函数,wdcbm函数分别得到对应的全局阈值,分层阈值,调用格式分别如下:
[thr,sorh,keepapp]=ddencmp('den’,’wv’,x)
[thr1,nkeep]=wdcbm(c,l,N);
其中den表示去噪,wv小波,x原始输入信号,keepapp=1,表示保留低频系数不变,thr表示全局阈值,sorh表示阈值类型,thr1表示分层阈值
4、调用wdencmp函数对一维或二维信号进行全局阀值消噪,调用格式如下:
[XD,CXD,LXD]=wdencmp('gbl’,x,'wname',N,thtr,sorh,keepapp)
示例2对应调用wdencmp函数进行全局阈值去噪对应的m文件如下:
t=0:0.001:1;
x=sin(5*pi*t);%%原始信号%%
n=randn(size(t));%%表示产生一个噪声信号%%
y=x+n;
%%获得全局阈值程序%%
[thr,sorh,keepapp]=ddencmp('den','wp',y);
%%利用全局阈值进行去噪%%
yd=wdencmp(‘gbl',y,'sym4',4,thr,sorh,keepapp);
subplot(3,1,1) %%表示显示三行一列第一个图%%
%%设置第一幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(x,'r');
xlabel('n');
ylabel('幅值');
title('原始信号');
axis([0 1000 -5 5])
subplot(3,1,2) %%表示显示三行一列第二个图%%
%%设置第二幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(y,'k');
xlabel('n');
ylabel('幅值');
title('含有噪声信号');
axis([0 1000 -5 5]);
subplot(3,1,3) %%表示显示三行一列第三个图%%
%%设置第三幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(yd,'c');
xlabel('n');
ylabel('幅值');
title('利用全局阈值消除噪声后信号');
axis([0 1000 -5 5]);


5、运行示例2对应的m文件,结果如图:

6、调用wdencmp函数对一维或二维信号进行分层阀值消噪,调用格式如下
[XD,CXD,LXD]=wdencmp('lvd',c,l,'wname',N,thtr,sorh,keepapp)
示例3对应调用wdencmp函数进行分层阈值去噪对应的m文件如下:
t=0:0.001:1;
x=sin(5*pi*t);%%原始信号%%
n=randn(size(t));%%表示产生一个噪声信号%%
y=x+n;
%%获得分层阈值%%
[c,l]=wavedec(y,4,'sym4');
[thr1,nkeep]=wdcbm(c,l,4)
%%利用分层阈值进行去噪%%
yd=wdencmp('lvd',c,l,'sym4',4,thr1,'s');
subplot(3,1,1) %%表示显示三行一列第一个图%%
%%设置第一幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(x,'r');
xlabel('n');
ylabel('幅值');
title('原始信号');
axis([0 1000 -5 5])
subplot(3,1,2) %%表示显示三行一列第二个图%%
%%设置第二幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(y,'k');
xlabel('n');
ylabel('幅值');
title('含有噪声信号');
axis([0 1000 -5 5]);
subplot(3,1,3) %%表示显示三行一列第三个图%%
%%设置第三幅图像的x轴、y轴、标题信息以及坐标轴范围信息%%
plot(yd,'c');
xlabel('n');
ylabel('幅值');
title('利用分层阈值消除噪声后信号');
axis([0 1000 -5 5]);


7、运行示例3对应m文件程度,结果如图:
