Raw File
function dens = dtfe(points)

%assumes an input matrix where rows are points and columns are their
%n-d coordinates

tris = delaunayn(points);

trivols = zeros(size(tris,1),1);
div = factorial(size(points,2));
for t = 1:size(trivols,1)
    ptri = points(tris(t,:),:);
    ptri = bsxfun(@minus,ptri,ptri(1,:));
    trivols(t) = abs(det([ptri(2:end,:)]')/div);
end

dens = zeros(size(points,1),1);
for p = 1:size(points,1)
    use = max(tris==p,[],2);
    dens(p)=1./sum(trivols(use));
end

end
back to top