Matlab - 2 ~=2 ?!

   
Vista:

2 ~=2 ?!

Publicado por Manuel (3 intervenciones) el 02/06/2014 18:46:53
Saludos a todos, este es mi primer post en la web.

tengo un vector con sus valores ordenados de manera ascendente llamado l. Quiero saber cuántos numeros iguales o inferiores hay en el vector cada vez que un nuevo número aparece en este.

El código es muy sencillo:
---------------------------------------------------------------------------
pos=1;

for k=2:length(l)
if l(k)>l(k-1)
ret(pos,1)=l(k-1);
ret(pos,2)=k-1;
pos=pos+1;
end
end

ret
--------------------------------------------------------------------------
Y este es el resultado:



No entiendo por qué el if encuentra en algunos casos que dos números iguales son distintos. Los resultados marcados no deberían aparecer en el vecotr ret y no se por qué.

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 Jorge De Los Santos

2 ~=2 ?!

Publicado por Jorge De Los Santos (212 intervenciones) el 03/06/2014 03:44:42
Hola Manuel.

Desconozco los valores que tienes en vuestro vector, pero todo parece indicar que el problema es simplemente de visualización, debido a que no puedes apreciar todos los decimales de los números de la columna 1. Puedes colocar la instrucción "format long" antes de todo el código para mostrar más decimales.

Saludos.
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

2 ~=2 ?!

Publicado por Manuel (3 intervenciones) el 03/06/2014 08:17:08
Gracias Jorge,

Eso fué lo primero que pensé (aunque en principio no podía ser el problema debido al orígen de los números) así que redondeé la matriz al entero más cercano con round(l), el resultado fué exactamente el mismo. Con format long tampoco cambia nada:

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

2 ~=2 ?!

Publicado por Manuel (3 intervenciones) el 03/06/2014 16:37:25
Solucionado!

Era un problema que parece venir tras ordenar los valores de menor a mayor mediante sort.
Con l=round(l); tras el redondeo funciona perfectamente, parece ser que redondeé el vector pero después trabajé con el vector antiguo son redondear -.-
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