On Sep 5, 2009, at 11:09 AM, babelproofreader wrote:

I would like to write a script/function for use on a time series
that will
least squares fit a polynomial of a given degree to a moving window
across
the time series in the same way as a moving average computes an
average of a
moving window.....

There might be a better way ... Assuming you'd like to center your
window about the data point of interest ...
---------------- begin: mwpolysmooth.m ---------------
function ym = mwpolysmooth (x, y, order, window)
% USAGE: ym = mwpolysmooth (x, y, order, window)
xc = num2cell(x);
idx = @(xc) find (abs (x - xc) < 0.5*window);
n = cellfun (idx, xc, 'uniformoutput', false);
mpfit = @(n) polyfit (x(n), y(n), order);
pm = cellfun (mpfit, n, 'uniformoutput', false);
nc = num2cell (1:numel(x));
mpval = @(n) polyval (pm{n}, x(n));
ym = cell2mat (cellfun (mpval, nc, 'uniformoutput', false));
end
---------------- end: mwpolysmooth.m ---------------
Ben,

`Thanks for your function - I've learned some useful coding from it -
``but I'm
``not sure if it really address my problem. I wish to fit real time
``streaming
`data (market prices), but as I understand it your code "peaks into the

`future" to smooth over the window i.e. the fitted value for the most
``recent
``streaming data "n" is different from the value that will be
``calculated when
``this data value is (n - some_value) in the past, hence invalidating
``any
`historical testing over past prices.