Code covered by the BSD License  

Highlights from
Interactive Smoothing

image thumbnail
from Interactive Smoothing by Tom O'Haver
Interactive smoothing for time-series signals

smoothwidth. Works well with signals up to % 100,000 points in length and smooth widths up to 1000 points. % Faster than tsmooth for smooth widths above 600 points. % T. C. O'Haver, 2006. w=round(smoothwidth); SumPoints=sum(Y(1:w)); s=zeros(size(Y)); h
function SmoothY=fastsmooth(Y,smoothwidth)
%  fastsmooth(Y,w) smooths vector Y by triangular
% smooth of width = smoothwidth. Works well with signals up to 
% 100,000 points in length and smooth widths up to 1000 points. 
% Faster than tsmooth for smooth widths above 600 points.
%  T. C. O'Haver, 2006.
w=round(smoothwidth);
SumPoints=sum(Y(1:w));
s=zeros(size(Y));
halfw=round(w/2);
for k=1:length(Y)-w,
   s(k+halfw)=SumPoints;
   SumPoints=SumPoints-Y(k);
   SumPoints=SumPoints+Y(k+w);
end
s=s./w;
SumPoints=sum(s(1:w));
SmoothY=zeros(size(s));
for k=1:length(s)-w,
   SmoothY(k+halfw)=SumPoints;
   SumPoints=SumPoints-s(k);
   SumPoints=SumPoints+s(k+w);
end
SmoothY=SmoothY./w;

Contact us at files@mathworks.com