You are on page 1of 1

N = length(X);

nx = length(x);

T = bsxfun(@minus,X,X') + speye(N);
J0 = -order:order;
for i = nx : -1 : 1
J = find(x(i) <= X,1) + J0;
if J(1) < 1
J = 1 : 2*order + 1;
elseif J(end) > N
J = N - 2*order : N;
end
R = prod(T(J,J));
delta = x(i) - X(J);
delta(delta==0) = eps;
pX = prod(delta)./delta;
y(i,:) = pX./R*Y(J,:);
if nargout > 1
ydot(i,:) = (sum(pX)-pX)./delta./R*Y(J,:);
end
end

You might also like