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)
Durga Lal Shrestha (2020). Inverse Percentiles of a sample. (https://www.mathworks.com/matlabcentral/fileexchange/41131-inverse-percentiles-of-a-sample), MATLAB Central File Exchange. Retrieved .
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