problem with the setdiff function

9 visualizaciones (últimos 30 días)
alex
alex el 17 de Mzo. de 2014
Comentada: alex el 17 de Mzo. de 2014
Hello!
i have a problem here
A = 2:.1:15
B=[9.4000 10.4000]
C=setdiff(A,B)
the elements 9.4000 and 10.4000 are still in the C
however,if B=[9.3000 10.3000] then the setdiff works fine,and the elements are not in the C.
any idea why this happens?
  2 comentarios
per isakson
per isakson el 17 de Mzo. de 2014
Try
format hex
alex
alex el 17 de Mzo. de 2014
unfortunatelly the format hex is not working

Iniciar sesión para comentar.

Respuesta aceptada

Azzi Abdelmalek
Azzi Abdelmalek el 17 de Mzo. de 2014
Editada: Azzi Abdelmalek el 17 de Mzo. de 2014
  3 comentarios
Azzi Abdelmalek
Azzi Abdelmalek el 17 de Mzo. de 2014
Editada: Azzi Abdelmalek el 17 de Mzo. de 2014
Use some tolerance
A = 2:.1:15
B=[9.4000 10.4000 1000]
tol=0.0001
s=abs(bsxfun(@minus,A',B))<tol
[ii,jj]=find(s==1);
A(ii)=[]
alex
alex el 17 de Mzo. de 2014
thank you very much!
it works excellent!

Iniciar sesión para comentar.

Más respuestas (1)

Jos (10584)
Jos (10584) el 17 de Mzo. de 2014
A = 2:.1:15
B = [9.4000 10.4000]
D = 2 ; % number of digits that should match (e.g. 1.231 = 1.229)
C = setdiff(round(A*10^D),round(B*10^D)) ./ (10^D)
  1 comentario
alex
alex el 17 de Mzo. de 2014
thank you for your answer! very useful!

Iniciar sesión para comentar.

Categorías

Más información sobre Data Import from MATLAB en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by