How to find the top 10% value of the matrix?
15 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
BB
el 17 de Sept. de 2012
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 comentario
Jan
el 17 de Sept. de 2012
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.
Respuesta aceptada
Sean de Wolski
el 17 de Sept. de 2012
x = the_matrix;
[~,idx] = sort(x(:));
y = x(idx(1:10));
0 comentarios
Más respuestas (1)
TG
el 12 de Feb. de 2015
Editada: TG
el 12 de Feb. de 2015
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.
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!