小波去噪-转载

信号小波系数的上下层之间有强相关性,而噪声没有这种相关性。相关性去噪的原理就是基于这种相关性的。

相关性去噪原理为比较每一层每一个位置的归一化的相关系数,从相关性的大小判断是信号还是噪声控制的点。

具体步骤为:

1.给定分解层数M,选取小波函数,计算带噪信号的每一层的小波系数

2.比较和,判断

若,则认为大相关量对应信号的特征,取=,置=0;

若,则认为点K处的小波系数由噪声控制,保留,置=0

3.在每一个尺度上重新计算

4.重复上面的过程

5.所取 中各对应由信号控制的点,而中点全部对应于噪声。

相关性去噪的方法有它的缺点:它依赖于小波系数,而小波系数无平移不变性,容易有错误。一种改进的方法是区域相关去噪,也就是在一个区域内进行相关性度量。这两种去噪方法的原理是相通的。

function f_n = xden(f,n,wf)
%相关性去噪法
%输入参数:f为带噪信号,n为分解层数,wf为小波函数名称
%返回函数f_n为去噪信号
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf);
[swa,swd]=swt(f,n,Lo_D,Hi_D);%swd是细节系数,swa是近似系数
ss =swd;
s1=swd;
T=zeros(size(ss));
%先把系数处理矩阵设置为全0
%在1:n-1分解层次上对高频系数处理,最后一层无法求相关系数,所以不作处理
for j=1:n-1
    cw=s1(j,:).*s1(j+1,:);%定义相关系数为相邻两层的乘积
    pw=sum(abs(swd(j,:)).^2);%计算小波能量
    pcw=sum(abs(cw).^2);%计算相关系数能量
    w_n=cw.*((pw/pcw)^0.5);%归一化
    
    
    acw=abs(w_n);
    aw=abs(swd(j,:));
    ss=swd(j,:).*(acw>aw);%(acw>aw)返回0或者1,1为信号,0为噪声
    ss1=(ss~=0);%将选出的点赋给系数处理矩阵相应位置
end
mask_max=ones(1,length(T));
T=[T((1:(n-1)),:);mask_max];%最后一层系数处理矩阵全置1
s1=s1.*T;
f_n=iswt(swa,s1,wf);
end

load sumsin;%读入带噪信号
f=[sumsin zeros(1,24)];%补零使得信号变成2的幂次,这里是信号长度变为1024
lev=4;%分解层数
wf='db3';%采用的小波函数
s=xden(f,lev,wf);%相关性去噪算法
%计算psnr值,mse值
P=psnr(f,s);
m=mse(f,s);
 
figure,
plot(s);grid on;
xlabel('t'),ylabel('s(t)')

 
————————————————
版权声明:本文为CSDN博主「乐正倩彦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42261630/article/details/118896167

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值