Finding top and bottom 10% of data
83 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Image Analyst
2021 年 10 月 11 日
編集済み: Image Analyst
2021 年 10 月 11 日
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?
回答 (2 件)
David Hill
2021 年 10 月 11 日
編集済み: David Hill
2021 年 10 月 11 日
n=round(.1*numuel(yourMatrix));
[~,idx]=sort(yourMatrix);
bottom=yourMatrix(idx(1:n));
top=yourMatrix(idx(end-*n+1:end));
0 件のコメント
Star Strider
2021 年 10 月 12 日
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 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!