How to find the top 10% value of the matrix?

HI,
I have a 10x10 matrix and the value is random
How do I find the the top 10% value of the matrix?
ex: if the value is 1~100,I want to get the answer is 90~100
Thanks~

댓글 수: 1

Jan
Jan 2012년 9월 17일
Because I assume that this is a homework question, please explain, what you have done so far and ask a specific question about the occurring problems.

댓글을 달려면 로그인하십시오.

 채택된 답변

Sean de Wolski
Sean de Wolski 2012년 9월 17일

0 개 추천

x = the_matrix;
[~,idx] = sort(x(:));
y = x(idx(1:10));

추가 답변 (1개)

TG
TG 2015년 2월 12일
편집: TG 2015년 2월 12일

0 개 추천

To select the top 10% of a matrix, take the total number of values and multiply by .1. Then sort and extract as in the accepted answer above:
[m n] = size(X); %where X is your matrix
TN = m*n;
TTP = TN*.1;
TTP = ceil(TTP); %round in case TN is an odd number and TTP is not an integer
(i.e. 5x5 = 25, 25/10 = 2.5)
For matrices, 'sort' sorts each column individually, so first covert the matrix into a single vector, then sort:
VX = X(:); %places values in single column
[val,ind] = sort(VX, 'descend');
y = VX(ind(1:TTP));
You can play around with the 'ind' variable and the code to locate these values in the original matrix.

카테고리

도움말 센터File Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

질문:

BB
2012년 9월 17일

편집:

TG
2015년 2월 12일

Community Treasure Hunt

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

Start Hunting!

Translated by