本文有很多例子,各位看官自行取用:
%%%% 对一维带噪信号进行处理
clear all;clc ;close all;
load noissin;
figure;
s=noissin(1:1000);
subplot(211);plot(noissin);
title('含噪生原始信号');
[C,L]=wavedec(s,3,'sym2');
a=[1 2 3 ]; %% 尺度向量
p=[97 98 95]; %% 阈值向量
nc=wthcoef('d',C,L,a,p);
sd=waverec(nc,L,'sym2');
subplot(212); plot(sd);title('消噪后的信号')
%%%%%%% 对信号进行不同的阈值处理
clear all;
clc ;
y=linspace(-1,1,100);
thr=0.4;
%%% 计算软硬阈值
ythard=wthresh(y,'h',thr);
ytsoft=wthresh(y,'s',thr);
figure;
subplot(311);plot(y); grid on; title('原始信号');
subplot(312);plot(ythard);grid on; title('硬阈值信号');
subplot(313);plot(ytsoft);grid on; title('软阈值信号');
%
clear all;
close all;
clc;
%%%% 软阈值处理
load leleccum;
indx = 1:1024;
x = leleccum(indx);
%产生含噪信号
init = 2055615866;
randn('seed',init);
nx = x + 18*randn(size(x));
%将信号nx使用小波函数'sym5'分解到第5层
%使用mimimaxi阈值选择系数进行处理,消除噪声信号 ,
lev = 5;
xd = wden(nx,'minimaxi','s','mln',lev,'sym5');
subplot(221);
plot(x);
title('原始信号');
subplot(222);
plot(nx);
title('含噪信号');
subplot(223);
plot(xd);
title('消噪后的信号');
%%% 例子3 利用db5小波进行分解,设置了阈值,改变了额高频系数
% load leleccum;
% indx = 1:1024;
% x = leleccum(indx);
% %产生含噪信号
% init = 2055615866;
% randn('seed',init);
% nx = x + 18*randn(size(x));
% %使用小波函数'db5'对信号进行3层分解
% [c,l] = wavedec(nx,3,'db5');
% %设置尺度向量
% n = [1,2,3];
% %设置阈值向量
% p = [100,90,80];
% %对高频系数进行阈值处理
% nc = wthcoef('d',c,l,n,p);
% %对修正后的小波分解结构进行重构
% rx = waverec(nc,l,'db5');
% subplot(221);
% plot(x);
% title('原始信号');
% subplot(222);
% plot(nx);
% title('含噪信号');
% subplot(223);
% plot(rx);
% title('消噪后的信号');
%%% 利用小波db6函数,阈值自动获取,无重构过程
% load leleccum;
% indx = 1:1024;
% x = leleccum(indx);
% %产生含噪信号
% init = 2055615886;
% randn('seed',init);
% nx = x + 18*randn(size(x));
% %使用小波函数'db6'对信号进行3层分解
% [c,l] = wavedec(nx,3,'db6');
% %估计尺度1的噪声标准差
% sigma = wnoisest(c,l,1);
% alpha = 2;
% %获取消噪过程中的阈值
% thr = wbmpen(c,l,sigma,alpha);
% keepapp = 1;
% %对信号进行消噪
% xd = wdencmp('gbl',c,l,'db6',3,thr,'s',keepapp);
% subplot(221);
% plot(x);
% title('原始信号');
% subplot(222);
% plot(nx);
% title('含噪信号');
% subplot(223);
% plot(xd);
% title('消噪后的信号');
% 例子1 没有用到小波基函数,阈值自动获取,无重构过程
% load leleccum;
% index = 1:1024;
% x = leleccum(index);
% %产生噪声信号
% init = 2055615866;
% randn('seed',init);
% nx = x + 18*randn(size(x));
% %获取消噪的阈值
% [thr,sorh,keepapp]=ddencmp('den','wv',nx); %%% 为何输出会是软阈值
% %对信号进行消噪
% xd = wdencmp('gbl',nx,'db4',2,thr,sorh,keepapp);
% subplot(221);
% plot(x);
% title('原始信号');
% subplot(222);
% plot(nx);
% title('含噪信号');
% subplot(223);
% plot(xd);
% title('消噪后的信号');