Finding top and bottom 10% of data
86 views (last 30 days)
Show older comments
Hello, I have a 1240x1 matrix of data and I wish to find the positions which contain the top 10% and the bottom 10% of the data (i.e. I shoud have 124 identified data points for the top 10% and 124 identified data points for the bottom 10%). Then, I would like to be able to create a new matrix containing just the top 10% data points and another matrix containing just the bottom 10% data points. Any assistance on how I can code this up would be greatly appreciated!
1 Comment
Image Analyst
on 11 Oct 2021
Edited: Image Analyst
on 11 Oct 2021
Is your data sorted, or can the top and bottom 10% of the data be scattered anywhere around in your vector? Is the 10% defined by the number of points,
percent10 = round(0.1 * numel(vector)) % 12 elements
, or is it defined by the values
percent10 = min(vec) + 0.1 * (max(vec) - min(vec));
percent90 = min(vec) + 0.9 * (max(vec) - min(vec));
which could be any number of elements? How many elements do you want to find? 12 or some variable number depending on the values?
Or do you want the 10% and 90% points defined by the CDF of the values?
Answers (2)
David Hill
on 11 Oct 2021
Edited: David Hill
on 11 Oct 2021
n=round(.1*numuel(yourMatrix));
[~,idx]=sort(yourMatrix);
bottom=yourMatrix(idx(1:n));
top=yourMatrix(idx(end-*n+1:end));
0 Comments
Star Strider
on 12 Oct 2021
x = randn(1,20) % Create Vector
v = prctile(x, [10,90]) % Determine 10th, 90th Percentiles
x10 = find(x<=v(1)) % Indices Of ELements At Or Below 10th Percentile
x90 = find(x>=v(2)) % Indices Of ELements At Or Above 90th Percentile
.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!