Matlab - Ordenar columnas en una Matriz

 
Vista:

Ordenar columnas en una Matriz

Publicado por Carlos Villanueva (1 intervención) el 08/04/2007 03:53:31
hola a todos, espero me puedan orientar un poco sobre un problema que tengo..

lo que quiero hacer es ordenar una matriz de datos que tenga unos y ceros por columnas, ejemplo:

[0 , 0 , 1 , 1 ; 1 , 0 , 1 , 1 ;1 ,1 ,1 ,0 ; 0 , 0 , 0 , 1]

ordenado quiero que quede asi:

[1 , 1, 1 , 0; 1, 0 , 1 , 1 ; 0 , 0 , 1 , 1 ; 0 , 0 , 0 , 1]

es decir comparar una columna con otra y que tome a la que tenga el valor mas grande la ponga primero como si fuera un numero

1110 ; 1011 ; 0011 ; 0001

ya lei todos los manuales que encuentro en internet y no veo la luz.... gracias de antemano por su ayuda.
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

RE:Ordenar columnas en una Matriz

Publicado por Antonio (32 intervenciones) el 08/04/2007 19:42:00
Pues no se me ocurre ningún comando q te pueda ayudar (quizá lo haya).

Otra opción es intentar programarlo. Se me ocurre que puedes crear una variable tipo vector con un número de elementos igual al número de columnas que quieres ordenar (inicialmente les das a todos el valor de 0). De esta manera haces que lea el primer elemento de cada columna y si es un "1" pues que sume +1000 al elemento correspondiente de esa variable que hemos creado. A continuación q lea el segundo elemento de cada columna y que sume a lo de antes +100 si es un "1" y nada si es. Lo mismo para el tercer elemento +10 y para el cuarto +1.
De esta manera podrás ordenar fácilmente el vector auxiliar y a su vez las columnas de tu matriz.

v=zeros(1,número de columnas)
v(1)= 0 + 0 + 10 + 1
v(2)= 1000 + 0 + 10 + 1
v(3)= 1000 + 100 + 10 + 0
v(4)= 0 + 0 + 0 + 1

Es una chapucilla y seguro que si lo programas así irá más lento que cualquier comando pero te da lo que buscas.
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

RE:Ordenar columnas en una Matriz

Publicado por Patricia Pérez (19 intervenciones) el 08/04/2007 20:00:43
A ver si te ayudo... si lo he entendido bien, yo lo que haría sería:

1º.- Crear un vector con el mismo número de filas que la primera, y allí guardar los datos de cada fila concatenándolos y almacenándolos como un string, es decir V[1]=['0','0','1','1']
si no me equivoco con eso tendrías en V[1] 0011 pero como string
2º.- Después de meter todos ya solo quedaría ordenar la matriz y pasar los string a double y creo que listo.

Espero que te ayude, saludos

Patri
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

RE:Ordenar columnas en una Matriz

Publicado por Juan Carlos (22 intervenciones) el 09/04/2007 20:53:55
Yo estaría encantado en responderte si pudiera imaginar como has obtenido esa ordenación. Puede explicar los pasos que has seguido?
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

Ordenar columnas en una Matriz

Publicado por Ruben (1 intervención) el 19/07/2012 18:49:30
Hola,

por si alguien alguna vez lo necesita. Hay una forma sencilla de hacer lo que necesitas. En primer lugar has de usar sortrows (ordenar las filas de una matriz en orden lexicográfico ascendente) y luego usar flipdim (voltear la dimensión de la matriz)

Si A es tu matriz:

flipdim(sortrows(A),1)

Saludos
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