Matlab - Matlab "ordenar filas en matriz"

   
Vista:

Matlab "ordenar filas en matriz"

Publicado por jose (7 intervenciones) el 23/11/2012 10:58:28
Amigos mi código es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clc
clear;
a=input('Ingrese la sucesion a:');
A=a;
B=a;
n=length(a);
for i=1:n
for j=1:n-i
    if a(j)>a(j+1)
        aux=a(j);
        a(j)=a(j+1);
        a(j+1)=aux;
    end
end
end
display(a)


y mi resultado es que solo me ordena la primera fila si la matriz , pero cuando pongo matriz de 2x2...no lo hace.....que es lo que puedo añadir o quitar del codigo ...gracias de antemano
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

Matlab "ordenar filas en matriz"

Publicado por Lucia (3 intervenciones) el 24/11/2012 11:10:59
Yo tengo un problema parecido al tuyo tengo una matriz binaria (compuesta por unos y ceros) y quiero ordenar las filas d la matriz la que mas unos tenga la primera y asi asta la ultima fila que seria la de menos numero de unos. Alguien me puede ayudar
Gracias
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

Matlab "ordenar filas en matriz"

Publicado por aurgic (4 intervenciones) el 24/11/2012 16:30:57
Puedes utilizar la funcion sort, a mi no se me ocurre otra forma, seguro q es facil, de todas formas usa:
clc
clear all;



M=M'
M1=sort(M)

M1=M1';
disp(M1);
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

Matlab "ordenar filas en matriz"

Publicado por Lucia (3 intervenciones) el 24/11/2012 20:02:25
Si ya he estado buscando información sobre el comando sort y find pero creo que no me sirven.
Luego he buscando otro método que es este matriz de 8*8 = población

1
2
3
4
5
6
7
8
9
10
11
12
13
pos=0;
 
for i=8:0
    for v=1:8
 
         if i==orden(1,v)  %problema igual variable a matriz
              pos=pos+1;
               for t=1:8
                   ordenada(pos,t)=poblacion(v,t);
               end
          end
    end
end


Pero la linea comentada me da errores porque no se puede igualas una variable a la posicion de un vector y no se como solucionarlo.
Gracias por la ayuda.
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Matlab "ordenar filas en matriz"

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 26/11/2012 01:44:43
Hola José.
Ese codigo esta en está direccion:
http://es.answers.yahoo.com/question/index?qid=20110420090732AA7NPbt
Ademas yo lo hice solo para suceciones. Ademas en el codigo que estas copiando no tiene sentido las variables A y B, ya que se esa variables no usan en esa parte, eses variables se usan mas adelante en lo sigue en el codigo.
Ahora para matrices se puede aplicar, pero necesitas aplicar el metodo de burbuja para cada fila.

Ahora si no conoces bucles, entonces solo usa comandos de matlab.
ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>> A=round(100*rand(5)+1)
 
A =
 
    44    15    18    89    42
    55    49    29    48    85
    72    27    21    41    63
     3    38    21    19    39
    81    67    34    98    89
 
>> Ordenado_filas=sort(A,2)
 
Ordenado_filas =
 
    15    18    42    44    89
    29    48    49    55    85
    21    27    41    63    72
     3    19    21    38    39
    34    67    81    89    98




Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Matlab "ordenar filas en matriz"

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 26/11/2012 02:18:18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear all
A=round(rand(5));
display(A);
a=sum(A,2);
i=1;
filas=length(a);
while i<=filas
[minimo, posicion]=max(a);
B(i,:)=A(posicion,:);
a(posicion)=0;
i=i+1;
end
A=B;
display(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
27
28
29
30
31
32
33
34
35
36
37
>> matriz_binaria
 
A =
 
     1     0     1     0     1
     0     1     0     0     1
     0     0     1     1     0
     1     1     0     0     0
     1     1     1     1     0
 
 
A =
 
     1     1     1     1     0
     1     0     1     0     1
     0     1     0     0     1
     0     0     1     1     0
     1     1     0     0     0
 
>> matriz_binaria
 
A =
 
     0     0     0     1     1
     1     1     0     1     1
     0     1     1     1     1
     1     1     0     1     1
     1     1     0     0     0
 
 
A =
 
     1     1     0     1     1
     0     1     1     1     1
     1     1     0     1     1
     0     0     0     1     1
     1     1     0     0     0




Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com
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