Matlab - ordenar una matirz o un vector de n*m con respecto a una columna

 
Vista:
sin imagen de perfil
Val: 21
Ha disminuido su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

ordenar una matirz o un vector de n*m con respecto a una columna

Publicado por gustavo (16 intervenciones) el 26/09/2019 19:36:06
Buenos días

Quiero hacer un sort de una matriz o un vector, en mi ejemplo es de 2 x 9,

la matriz de ejemplo es esta:

4, 26
2, 14
7, 18
12, 22
2, 3
12, 13
4, 6
7, 1
2, 15



usando el comando sortrows,( aux3=sortrows(aux2)) ordena la primera columna y después la segunda, quedando como se muestra.

2, 3
2, 14
2, 15
4, 6
4, 26
7, 1
7, 18
12, 13
12, 22


para realizar algunas pruebas necesito que se haya ordenado solo la primera columna, quedando de la siguiente forma:

2, 14
2, 3
2, 15
4, 26
4, 6
7, 18
7, 1
12, 22
12, 13

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ordenar una matirz o un vector de n*m con respecto a una columna

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/09/2019 21:44:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear
a=[ 4, 26
    2, 14
    7, 18
    12, 22
    2, 3
    12, 13
    4, 6
    7, 1
    2, 15]
n=size(a,1);
for i=1:n
    for j=1:n-i
      if a(j,1)>a(j+1,1)
        aux=a(j,:);
        a(j,:)=a(j+1,:);
        a(j+1,:)=aux;
      end
    end
end
 a

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
>> ordenar_respecto_a_una_columna
 
a =
 
     4    26
     2    14
     7    18
    12    22
     2     3
    12    13
     4     6
     7     1
     2    15
 
 
a =
 
     2    14
     2     3
     2    15
     4    26
     4     6
     7    18
     7     1
    12    22
    12    13


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ordenar una matirz o un vector de n*m con respecto a una columna

Publicado por Daniel (354 intervenciones) el 27/09/2019 23:10:06
Hola,

El problema se puede resolver con la función nativa de Matlab. Esta devuelve dos valores: los datos ordenados y el orden. Si ordenas la columna de referencia y aplicas el orden a la matriz lo tienes en dos líneas.

1
2
3
data = randi(20, 6, 2)
[~, i] = sort(data(:,1))
data(i, :)

Un ejemplo puede ser:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
data =
 
    11     9
     3     2
    18     5
    13     3
     8     4
    11     5
 
 
i =
 
     2
     5
     1
     6
     4
     3
 
 
ans =
 
     3     2
     8     4
    11     9
    11     5
    13     3
    18     5

Por cierto, si lo quieres en orden desdencde se lo puedes decir al la función sort:

1
[~, i] = sort(data(:,1), 'desc')

Saludos,
Daniel Rodríguez.
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar