probability.m

来自「根据数学概率知识提出的“概率”阈值去噪算法」· M 代码 · 共 35 行

M
35
字号
function Ys=probability(s,tt)
col=size(s);
col=col(1,2);
for i=1:col
    [c(:,i),l(:,i)]=wavedec(s(:,i),tt,'db4');
    Cs(:,i)=c(:,i);
    la=length(appcoef(c(:,i),l(:,i),'db4',tt));
    
    qq=0;
    for j=tt:-1:1
        dd=detcoef(c(:,i),l(:,i),j);
        t(j,i)=length(dd);          %计算各阶小波系数的长度
            q=1+qq;qq=qq+t(j,i);
        D(q:qq,i)=dd;
    end;
    N=length(c(:,i));
       %以下的阈值计算需要针对不同的信号特征随时调整
       g(i)=std(abs(D(q:qq,i)),1);
       %下面就是根据数学推导提出的所谓的“概率”阈值求法 ,各位不妨试一试,看看效果如何
       
       u(1,i)=g(i)*2;            %这里的噪声服从正态分布,且方差为零,其...
                                   %概率分布函数为F(X)=1-exp(-x^2/g^2),g 为标准差。当x等于2 ...
                                   %倍的方差g 时,0.9817%的噪声可以去除。
     for j=1:tt
        u(j,i)=u(1,i)/2^((j-1)/2); 
     end
      co=0;
     for j=tt:-1:1
          ln=1+co;co=co+t(j,i);
          DD(ln:co,i)=wthresh(D(ln:co,i),'s',u(j,i));
    end
     Cs(la+1:N,i)=DD(:,i);
    Ys(:,i)=waverec(Cs(:,i),l(:,i),'db4');
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?