MATLAB File Help: woody | View code for woody | WFDB Contents

woody

    function [out]=woody(x,varargin)

     [out]=woody(x,tol,max_it,est_mthd,xcorr_mthd)

     Weighted average using Woody average for a signal
     with jitter. Parameters:

     x             Signal measurements. Each COLUMN represents
                   and independent measure of the signal (or channel).
     tol           Tolerance paremeter to stop average (default is 0.1)
     max_it        Maximum number of iterations done on the average (default is 100).
     est_mthd      Estimation method to use. Options are:
                   'woody'     : classical approach (default)
                   'thornton'  : implements the Thornton approach that is also useful for different noise sources.
     xcorr_mthd    Determines what estimation method to use for the estimating the correlaation function using the
                   XCORR function. Options are:
                   'biased'   - scales the raw cross-correlation by 1/M.
                   'unbiased' - scales the raw correlation by 1/(M-abs(lags)). (Default)
     out           Final averaged waveform (time aligned).

     Written by Ikaro Silva

     Since 0.9.5

     %%%Example 1 %%%%
     t=[0:1/1000:1];
     N=1001;
     x=sin(2*pi*t)+sin(4*pi*t)+sin(8*pi*t);
     y=exp(0.01*[-1*[500:-1:1] 0 -1*[1:500]]);
     s=x.*y;
     sig1=0;
     sig2=0.1;
     M=100;
     S=zeros(N,M);
     center=501;
     TAU=round((rand(1,M)-0.5)*160);
     for i=1:M,
         tau=TAU(i);

         if(tau<0)
             S(:,i)=[s(-1*tau:end)'; zeros(-1*(tau+1),1)];
         else
             S(:,i)=[zeros(tau,1);s(1:N-tau)'; ];
         end
         if(i<50)
            S(:,i)=S(:,i) + randn(N,1).*sig1;
         else
             S(:,i)=S(:,i) + randn(N,1).*sig2;
         end
     end

     [wood]=woody(S,[],[],'woody','biased');
     [thor]=woody(S,[],[],'thornton','biased');
     figure;
     subplot(211)
     plot(s,'b','LineWidth',2);grid on;hold on;plot(S,'r');plot(s,'b','LineWidth',2)
     legend('Signal','Measurements')
     subplot(212)
     plot(s);hold on;plot(mean(S,2),'r');plot(wood,'g');plot(thor,'k')
     legend('Signal','Normal Ave','Woody Ave','Thornton Ave');grid on