Matlab - Ordenar Columnas en una matriz

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

Ordenar Columnas en una matriz

Publicado por Juan Carlos jcarlesmarco@gmail.com (2 intervenciones) el 15/12/2018 18:49:52
Hola buenas tardes.

Estoy bastante atascado en el siguiente problema:

Quiero ordenar una matriz donde pueden repetirse valores de forma que por ejemplo la matriz:

1
A = [44 2 2 2; 45 1 2 2; 46 1 1 2; 47 1 1 1];

me quedase de la siguiente forma:

1
A = [47 1 1 1; 46 1 1 2; 45 1 2 2; 44 2 2 2 ];

De menor a mayor y de derecha a izquierda, pero manteniendo las filas intactas.
Muchas 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
1
Responder
sin imagen de perfil
Val: 89
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ordenar Columnas en una matriz

Publicado por Emmanuel (30 intervenciones) el 18/12/2018 15:01:48
1
2
3
4
5
6
7
8
9
10
11
12
13
function A2=minimos(A)
 
A2=[];
 
for i = 1:length(A(:,1))
    ind=(A(:,end+1-i)==min(A(:,end+1-i)));
    if double(ind)>1
        A2=[A2;minimos(A(ind,end-1))];
    else
        A2=[A2;A(ind,:)];
        A=A(~ind,:);
    end
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
>> A = [44 2 2 2; 45 1 2 2; 46 1 1 2; 47 1 1 1];
>> A
 
A =
 
    44     2     2     2
    45     1     2     2
    46     1     1     2
    47     1     1     1
 
>> A=minimos(A)
 
A =
 
    47     1     1     1
    46     1     1     2
    45     1     2     2
    44     2     2     2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha disminuido su posición en 4 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Ordenar Columnas en una matriz

Publicado por Juan Carlos (2 intervenciones) el 18/12/2018 22:16:31
Muchas gracias por la respuesta, la función funciona (valga la redundancia) con la matriz A, pero cuando intento entrar con una matriz con más filas me da un error que aun no he sabido solventar:
1
2
3
4
5
6
A = [44 2 2 2; 45 1 2 2; 46 1 1 2; 47 1 1 1; 48 3 3 3];
>> [A2]=minimos(A)
Index in position 2 is invalid. Array indices must be positive integers or logical values.
 
Error in minimos (line 6)
    ind=(A(:,end+1-i)==min(A(:,end+1-i)));
Aun así muchas 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