Matlab - comparacion de dos vectores

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

comparacion de dos vectores

Publicado por oscar (2 intervenciones) el 19/03/2019 18:50:14
Mi pregunta es, como puedo hacer un programa en MATLAB que me compare dos vectores, termino a termino si A(i) > B(j) que C = 5, sino C=-5.

La parte del programa que llevo es el siguiente

m = [1 2 3];

n = [1 2 2];

for i=1:length(n)

for j=1:length(m)

if n(i) == m(j)

c=5;

else

c=-5;

end

end

end
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
Val: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

comparacion de dos vectores

Publicado por Daniel (354 intervenciones) el 19/03/2019 19:14:51
Hola,

El principal problema del ejemplo es que solamente tiene en cuenta el ultimo registro del vector para asignar el valor de C.

Los operadores de comparación de Matlab trabajan con las matrices elemento a elemento, por lo que se puede comparar directamente dos vectores (siempre que tengan el mismo tamaño).

1
2
3
4
5
6
7
8
9
10
m = [1 2 3];
n = [1 2 2];
 
m > n
 
ans =
 
  1×3 logical array
 
   0   0   1

Ahora se pueden usar las funciones any() para saber si hay por lo menos existe un caso positivo o sum() para contar el número de casos positivos. Así se puede asignar el valor de C en base a que por lo menos exista un caso en el que m es mayor que n.

1
2
3
4
5
if any(m > n)
    C = 5;
else
    C = -5;
end

Saludos,
Daniel Rodríguez.
Analytics Lane
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: 4
Ha disminuido su posición en 31 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

comparacion de dos vectores

Publicado por oscar (2 intervenciones) el 19/03/2019 21:35:33
hola que tal, lo que quiero como tal es que compare los dos vectores termino a termino y mede un resultado por cada termino, es decir,
a[1 2 3 5 6 7], b[1 5 3 5 9 7]
if(a>b)
como resultado deveria tener que c=[0 1 0 1 0]
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

comparacion de dos vectores

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 19/03/2019 21:43:02
1
2
3
4
5
6
7
8
9
10
11
clear
a=[1 2 3 5 6 7]
b=[1 5 3 5 9 7]
for i=1:length(a)
        if a(i) < b(i)
        c(i)=1;
        else
        c(i)=0;
        end
end
c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>> comparar_vectores
 
a =
 
     1     2     3     5     6     7
 
 
b =
 
     1     5     3     5     9     7
 
 
c =
 
     0     1     0     0     1     0
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: 918
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

comparacion de dos vectores

Publicado por Daniel (354 intervenciones) el 20/03/2019 09:17:52
Ese es el comportamiento del operador mayor que de Matlab. No hace falta programar nada.

c = a > b
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