problem with the setdiff function

9 views (last 30 days)
alex
alex on 17 Mar 2014
Commented: alex on 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 Comments
alex
alex on 17 Mar 2014
unfortunatelly the format hex is not working

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 17 Mar 2014
Edited: Azzi Abdelmalek on 17 Mar 2014
  3 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 17 Mar 2014
Edited: Azzi Abdelmalek on 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 on 17 Mar 2014
thank you very much!
it works excellent!

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 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)

Categories

Find more on Data Import from MATLAB in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!