0001 function y_line=runline(y,n,dn);
0002
0003
0004
0005
0006
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;