Test of Approximately Equality

Hello,
I have a value b and c. b and c are approximatly equal (b~c). They have +-5% difference.
I want to test of approximately equality..like this:
if b~c (with +-5% difference)
return something...
end

Answers (3)

You only have to decide if it should be 5% of the first or the second argument. Then:
if abs(b - c) < 0.05 * b
or
if abs(b - c) < 0.05 * max(b, c)
or
if abs(b - c) < 0.05 * min(b, c)
or
if abs(b - c) < 0.05 * (b + c) * 0.5

2 Comments

Some of those expressions will have difficulty if "b" is negative.
1. Try using "abs" on the RHS
2. Might also consider median(abs(b),abs(c))
Greg

Sign in to comment.

Stephen Nagy
Stephen Nagy on 29 Dec 2017
Your desired goal isn't entirely clear, but depending on the outcome you seek, the functions "uniquetol" and some of its related functions might be helpful.

1 Comment

ismembertol() and uniquetol() did not exist in 2012 though ;-)

Sign in to comment.

per isakson
per isakson on 16 Jun 2012
See isalmost(a,b,tol) in the File Exchange. There are more.

Asked:

on 16 Jun 2012

Commented:

on 29 Dec 2017

Community Treasure Hunt

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

Start Hunting!