Effacer les filtres
Effacer les filtres

problem with the setdiff function

10 vues (au cours des 30 derniers jours)
alex
alex le 17 Mar 2014
Commenté : alex le 17 Mar 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 commentaires
per isakson
per isakson le 17 Mar 2014
Try
format hex
alex
alex le 17 Mar 2014
unfortunatelly the format hex is not working

Connectez-vous pour commenter.

Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 17 Mar 2014
Modifié(e) : Azzi Abdelmalek le 17 Mar 2014
  3 commentaires
Azzi Abdelmalek
Azzi Abdelmalek le 17 Mar 2014
Modifié(e) : Azzi Abdelmalek le 17 Mar 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 le 17 Mar 2014
thank you very much!
it works excellent!

Connectez-vous pour commenter.

Plus de réponses (1)

Jos (10584)
Jos (10584) le 17 Mar 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 commentaire
alex
alex le 17 Mar 2014
thank you for your answer! very useful!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by