www.pudn.com > multiwavelet.rar > thresh_decor1D.m
function transfth=thresh_decor1D(transf,maxlevel,thresh,covname,threshtype) %transfth=thresh_decor1D(transf,maxlevel,thresh,covname,threshtype) % % This subroutine performs scalar thresholding with decorrelation of % 1-dimensional wavelet transform. Scaling coefficients stay untouched. % Wavelet coefficients are decorrelated using diagonal blocks of the % covariance matrix of the transform. After that all obtained coefficients % are thresholded and correlated again. % % Input: % threshtype string of characters, either 'hard' or 'soft'; % threshtype='hard' invokes hard thresholding, % threshtype='soft' invokes soft thresholding; % for details see [DJ] % covname string of characters, name of covariance matrix used for % decorrelation; for possible names and short descriptions see % coef_dcov1D.m % thresh real, value of the threshold % maxlevel integer, number of levels of wavelet decomposition in transf, % maxlevel < 7 % transf r by n real array, wavelet transform of a signal; % r is the number of scaling functions, % n must be of the form integer*2^maxlevel, % for structure of transf see [SW] % % Output: % transfth r by n real array, thresholded wavelet transform % % Example of Usage: % transfth=thresh_decor1D(transf,5,0.75,'ghmap','hard') % Author: Vasily Strela % COPYRIGHT 1997,98 by Vasily Strela n0=length(transf(1,:)); D=coef_dcov1D(covname); r=length(D(:,1)); transfth=transf; for i=1:maxlevel, d=D(:,(i-1)*r+1:i*r); dd=inv(sqrtm(d)); transfth(:,n0-(2^i-1)*n0/2^i+1:n0-(2^(i-1)-1)*n0/2^(i-1))=dd*transfth(:,n0-(2^i-1)*n0/2^i+1:n0-(2^(i-1)-1)*n0/2^(i-1)); end transfth=thresh(transfth,maxlevel,thresh,threshtype); for i=1:maxlevel, d=D(:,(i-1)*r+1:i*r); dd=sqrtm(d); transfth(:,n0-(2^i-1)*n0/2^i+1:n0-(2^(i-1)-1)*n0/2^(i-1))=dd*transfth(:,n0-(2^i-1)*n0/2^i+1:n0-(2^(i-1)-1)*n0/2^(i-1)); end