Test of Approximately Equality

9 ビュー (過去 30 日間)
John Miller
John Miller 2012 年 6 月 16 日
コメント済み: Walter Roberson 2017 年 12 月 29 日
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.
  1 件のコメント
Walter Roberson
Walter Roberson 2017 年 12 月 29 日
ismembertol() and uniquetol() did not exist in 2012 though ;-)

サインインしてコメントする。


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