Borrar filtros
Borrar filtros

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

15 visualizaciones (últimos 30 días)
BB
BB el 17 de Sept. de 2012
Editada: TG el 12 de Feb. de 2015
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
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.

Iniciar sesión para comentar.

Respuesta aceptada

Sean de Wolski
Sean de Wolski el 17 de Sept. de 2012
x = the_matrix;
[~,idx] = sort(x(:));
y = x(idx(1:10));

Más respuestas (1)

TG
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.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by