Finding the second smallest value in each column of an array?

6 visualizaciones (últimos 30 días)
Jason
Jason el 7 de Ag. de 2011
This is probably very simple. I have an array of size, say 10 by 30. In each column, there is definitely an element with a value of 0, the rest of the nine: values > 0. Now, I want a row vector containing the second smallest values from each column of the original array.
Any idea? If I were to use min(array), I would get a row vector with all 0's. Maybe I have to use bubble sorting?
  1 comentario
Jason
Jason el 10 de Ag. de 2011
All good answers. I am finding it hard to pick and accept one. Someone help me?

Iniciar sesión para comentar.

Respuestas (3)

Jan
Jan el 7 de Ag. de 2011
Sorting is a good idea:
X = rand(10, 10);
Xs = sort(X);
min2nd = Xs(2, :);
This is not very efficient, but most likely the fastest Matlab method.

Walter Roberson
Walter Roberson el 7 de Ag. de 2011
t = array;
t(t==0) = inf;
min(t)

Pierre
Pierre el 7 de Ag. de 2011
You could simply take advantage of Bruno Luong's Min/Max selection implemented in MEX. AFAIK they implement Hoare's selection algorithm (which is a deviation of quicksort).

Categorías

Más información sobre Creating and Concatenating Matrices 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