MATLAB Answers

Percentiles without Statistics Toolbox

29 views (last 30 days)
I have a bunch of histograms from which I need to extract some percentiles (10th, 50th and 90th).
I know about the prctile function, but it requires the Statistics Toolbox in Matlab which I do not have. The only toolbox I have is the Signal Processing Toolbox.
Is there a way of obtaining percentiles other than the prctile function?


Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 26 Nov 2020
Try this:
x = 3*randn(1,100)+5; % Create Data
yyaxis left
h = histogram(x, 20);
hold on
barvals = h.Values;
edgs = h.BinEdges;
ctrs = edgs(1:end-1) + (diff(edgs)/2); % Calculate Bar Center Locations
plot(ctrs, barvals, '+r')
hold off
auc = 100*cumsum(barvals)/sum(barvals)+(0:numel(barvals)-1)*eps*100; % Cumulative Area
prctls = [10, 50, 90]; % Desired Percentiles
prctlctrs = interp1(auc, ctrs, prctls); % Percentile X-Locations
yyaxis right
plot(prctlctrs, prctls, 'dg', 'MarkerFaceColor','g') % Plot Percentiles
hold on
plot(ctrs, auc, '--k') % Plot Area (Optional)
hold off
ylim([0 100])
ylabel('Cumulative Percent')
text(prctlctrs, prctls, sprintfc('%2d^{th} Percentile = %5.2f\\rightarrow ', [prctls; prctlctrs].'), 'HorizontalAlignment','right', 'VerticalAlignment','middle')
legend('Histogram', 'Centres', 'Percentiles', 'Area', 'Location','E')


ava mazaheri
ava mazaheri on 26 Nov 2020
Gave a perfect plot, thanks a lot!

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!