File Exchange

image thumbnail

Inverse Percentiles of a sample.

version (8.4 KB) by Durga Lal Shrestha
Calculates the non-exceedance probability (inverse of prctile) for xq values from sample of data x.


Updated 11 Sep 2014

View License

p = INVPRCTILE(x,xq)
p = INVPRCTILE(x,xq,dim)
p = INVPRCTILE(x,xq,dim,plot_pos)

x - Vector or Matrix of sample data
q - Values for non-exceedance probabilities to be computed.
q can be scalar or vector
dim - Dimension for matrix to be worked for non-exceedance probability
plot_pos - plotting positions that determine interpolation method

p - Non-exceedance probabilities values for q.

When x is a vector, p is the same size as xq, and p(i) contains the non-exceedance probability for xq(i) value.

When x is a matrix, the i-th row of p contains
the non-exceedance probability for xq(i)-values of each column of x.

For N-D arrays, INVPRCTILE operates along the first non-singleton dimension.

x = rand(100,1);
q = [0.1 0.25 0.8];
p = invprctile(x,q);
% Check with prctile to get back the same results
qvalues = prctile(x,p)

Cite As

Durga Lal Shrestha (2020). Inverse Percentiles of a sample. (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (7)

ipek ciftci

It seems to work perfectly. thanks a lot!


Nice one! Seems to work well.

Would be nice to add a check that if only one argin is entered (one column/vector) - then it calcs inverse prctile on each entry of the column/vector.

For example, I have a vector
myvector=[0.8 0.5 .2 0.6 0.8 0.5 0.3 0.6 0.9 1.3]'
and I want to find what percentile each corresponds to, so I run

It would be a bit cleaner to be able to just call invprctile(myvector)


1. Fixing behaviour of unique function after MATLAB R2012b

2. Possibility to use different plotting position

Bug fixing for not strictly monotonic increasing x values

MATLAB Release Compatibility
Created with R2012b
Compatible with any release
Platform Compatibility
Windows macOS Linux