Birge_Massart.m
上传用户:lcj80317
上传日期:2007-01-26
资源大小:625k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. function thr = Birge_Massart(c, s)
  2. %用Birge-Massart策略估计阈值
  3. % 给定分解层数j,对j+1及更高层,所有系数保留
  4. % 对第i层(1<=i<=j),保留绝对值最大的n_i个系数,n_i由下式确定
  5. %   n_i = M/(j+2-i)^alpha
  6. % 其中M和alpha为经验系数,缺省情况下M取第一层分解后的系数长度L(1)
  7. % 一般情况下,M满足 L(1)<=M<=2L(1)
  8. % alpha的取值因用途不同,压缩情况下一般取alpha=1.5,降噪一般取alpha=3
  9. %设定alpha、M和j的值
  10. alpha = 3;
  11. M = prod(s(1, :));
  12. j = size(s, 1) - 2;
  13. %计算每层的阈值
  14. for i = 1:j
  15.     n = round( M/(j+2-i)^alpha );                   %每层保留的系数个数
  16.     D = detcoef2('compact', c, s, i);               %提取第i层的所有细节系数 
  17.     if n >= size(D)
  18.         thr(:, i) = zeros(3, 1);
  19.     else
  20.         D = sort(abs(D));                           %排序
  21.         thr(i) = D(end-n);                          %设置第i层的阈值
  22.     end
  23. end