Test of Approximately Equality

25 次查看(过去 30 天)
John Miller
John Miller 2012-6-16
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

回答(3 个)

Jan
Jan 2012-6-17
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 个评论
Walter Roberson
Walter Roberson 2012-6-17
Some of those expressions will have difficulty if "b" is negative.
Greg Heath
Greg Heath 2012-6-18
1. Try using "abs" on the RHS
2. Might also consider median(abs(b),abs(c))
Greg

请先登录,再进行评论。


Stephen Nagy
Stephen Nagy 2017-12-29
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.

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

Community Treasure Hunt

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

Start Hunting!

Translated by