Matlab - Pasar posiciones de valores de una matriz a vectores

 
Vista:
sin imagen de perfil

Pasar posiciones de valores de una matriz a vectores

Publicado por Manu (2 intervenciones) el 05/05/2017 16:10:04
Buenas a ver si me podeis echar una mano!
Soy nuevo en Matlab,quiero sacar de la matriz A la posición de los valores de mayor a menor,hasta un mínimo, en vectores(o matrices me da igual).
A=1 3 5
126];

El resultado que quiero obtener es x[3 3 2 2 1 1] y=[2 1 1 2 2 1]
Posiciones(columnas x, filas y) de los valores 6,5,3,2,1,1 en la matriz A. (Cuando se repite valor da igual el orden ).

Esto es lo que he pensado, el problema es que x e y no son vectores cuando compilo, sino un valor simplente(he llegado a la conclusión de cuando cumple la condición se sale del bucle y se queda con el último valor),no se como se puede hacer para que te vaya guardando todos los valores.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%Posición de maximos de una matriz en un vector
x=[];
y=[];
A=[1 3 5
   1 2 6];
O=flipud(transpose(sort(A,'descend')));               %se ordena la matriz de mayor a menor
 
for i=1:3
    for j=1:2                                                                    %Recorro la matriz
        if O(i,j)>0                                                              %Condición 
                 [y,x]=find(A==O(i,j));
 
        end
   end
end

Un saludo y 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

Pasar posiciones de valores de una matriz a vectores

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/05/2017 18:02:48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear all
A=[1 3 5
1 2 6]
B=A;
n=1;
for i=1:size(A,1)*size(A,2)
maximo=max(max(B));
[fila, columna]=find(B==maximo);
for k=1:length(fila)
 %D(n,:)=[n fila(k) columna(k) maximo];
 B(fila(k),columna(k))=NaN;
 x(n)=columna(k);
 y(n)=fila(k);
 n=n+1;
end
end
%D
x
y

1
2
3
4
5
6
7
8
>> maximo_minimo2
A =
     1     3     5
     1     2     6
x =
     3     3     2     2     1     1
y =
     2     1     1     2     1     2


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación 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
2
Comentar
sin imagen de perfil

Pasar posiciones de valores de una matriz a vectores

Publicado por Manuel (2 intervenciones) el 06/05/2017 11:31:59
Buah genial,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