runline

PURPOSE ^

y_line=runline(y,n,dn);

SYNOPSIS ^

function y_line=runline(y,n,dn)

DESCRIPTION ^

 y_line=runline(y,n,dn);
 Running line fit (local linear regression)
 y: input 1-d time series (real)
 n: length of running window in samples;
 dn: stepsize of window in samples;

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function y_line=runline(y,n,dn)
0002 % y_line=runline(y,n,dn);
0003 % Running line fit (local linear regression)
0004 % y: input 1-d time series (real)
0005 % n: length of running window in samples;
0006 % dn: stepsize of window in samples;
0007 y=y(:);
0008 nt=length(y);
0009 y_line=zeros(nt,1);
0010 norm=y_line;
0011 nwin=ceil((nt-n)/dn);
0012 yfit=zeros(nwin,n);
0013 xwt=((1:n)-n/2)/(n/2);
0014 wt=(1-abs(xwt).^3).^3;
0015 for j=1:nwin, 
0016     tseg=y(dn*(j-1)+1:dn*(j-1)+n);
0017     y1=mean(tseg); 
0018     y2=mean((1:n)'.*tseg)*2/(n+1);
0019     a=(y2-y1)*6/(n-1); b=y1-a*(n+1)/2;
0020     yfit(j,:)=(1:n)*a+b;
0021     y_line((j-1)*dn+(1:n))=y_line((j-1)*dn+(1:n))+(yfit(j,:).*wt)';
0022     norm((j-1)*dn+(1:n))=norm((j-1)*dn+(1:n))+wt';
0023 end
0024 mask=find(norm>0); y_line(mask)=y_line(mask)./norm(mask);
0025 indx=(nwin-1)*dn+n-1;
0026 npts=length(y)-indx+1;
0027 y_line(indx:end)=(n+1:n+npts)'*a+b;

Generated on Fri 20-May-2005 13:10:28 by m2html © 2003