Matlab - Comparación de dos vectores

 
Vista:
sin imagen de perfil

Comparación de dos vectores

Publicado por David (42 intervenciones) el 13/07/2012 12:11:53
Necesito a la hora de hacer permutaciones aleatorias comprobar si se repite la misma permutación.
Estaba pensando hacerlo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>> x(1).permutacion=randperm(5);
>> x(1).permutacion
ans =
     1     2     5     4     3
>> x(2).permutacion=randperm(6);
>> x(2).permutacion
ans =
     2     4     3     5     6     1
>> y(1).permutacion=randperm(5);
>> y(1).permutacion
ans =
     1     2     3     4     5
>> y(2).permutacion=randperm(6);
>> y(2).permutacion
ans =
     5     4     1     6     3     2

Para ver si la permutación aleatoria es la misma, si utilzo:
1
2
3
4
5
6
>> y(2).permutacion==x(2).permutacion
ans =
     0     1     0     0     0     0
>> y(1).permutacion==x(1).permutacion
ans =
     1     1     0     1     0


Pero yo únicamente necesito saber si es exactamente la misma o cambia en algo, es decir, necesito como salida 0 si es distinta y 1 si es exactamente la misma.

¿Cómo podría hacerlo?

Muchas 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
sin imagen de perfil

Comparación de dos vectores

Publicado por David (42 intervenciones) el 17/07/2012 13:51:17
Al no poder realizar la comparación directamente, al final se me ha ocurrido hacer la comparación detectando si son iguales o distintos de la forma (si b=1 iguales y si b=0 distintos):

1
2
3
4
5
6
7
8
9
10
11
for (i=1:6)
       if(y(2).permutacion(i)==x(2).permutacion(i))
              a(i)=1;
       else
               a(i)=0;
        end;
end;
b=1;
for (i=1:6)
       b=b&a(i);
end;



Al final si b=1 son iguales y si b=0 son distintos en alguno de sus términos.

¿Se puede hacer más elegantemente que este código?
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

Comparación de dos vectores

Publicado por David (42 intervenciones) el 17/07/2012 16:53:53
Se puede hacer con la función isequal
>> x(2).permutacion=randperm(6); x(2).permutacion

ans =

5 4 3 2 6 1

>> y(2).permutacion=randperm(6); y(2).permutacion

ans =

6 1 2 4 5 3

>> isequal(x(2).permutacion,y(2).permutacion)

ans =

0

>> y(2).permutacion=[5 4 3 2 6 1]

y =

1x2 struct array with fields:
permutacion

>> y(2).permutacion

ans =

5 4 3 2 6 1

>> isequal(x(2).permutacion,y(2).permutacion)

ans =

1
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