Here is an alternative function that ignores NaN values. It's not a nice one-liner like Star Striders but it does produce the same output as the prctile function in the stats toolbox.
function pctl = percentile(v,p)
vsort = reshape(sort(v(~isnan(v))),1,[]);
pd = p/100 * numel(vsort);
idx = floor(pd + 0.5) + [0,1];
md = pd - idx(1);
idx(idx<1) = 1;
idx(idx>numel(vsort)) = numel(vsort);
pctl = sum(vsort(idx) .* (0.5+[-md,md]));
end
Comparison
v = [8 9 nan 13 15 11 nan 3 5 7];
p = 82;
percentile(v,p)
prctile(v,p)
pct(v(~isnan(v)),p)
To apply it to your data,
t = array2table(vertcat(horzcat((1:1000)', (1001:2000)'), NaN(10, 2)));
t.Var1(t.Var1 > percentile(t.Var1, 99)) = nan;
t.Var2(t.Var2 > percentile(t.Var2, 99)) = nan;