I have two equal vectors a = b. When I check for equality:
y = eq(a, b)
find(y==0)
I get most of values, meaning they are NOT equal.
What would be the reason for this?
N.

5 件のコメント

Jan
Jan 2012 年 7 月 19 日
What does the "find(a==0)" do in your code?
Nuchto
Nuchto 2012 年 7 月 21 日
Sorry, it was wrong put, "a" should be the output of eq(a,b).
Jan
Jan 2012 年 7 月 21 日
Then please edit the question instead of adding this important information as a comment.
Nuchto
Nuchto 2012 年 7 月 22 日
Thanks, I did.
Jan
Jan 2012 年 7 月 22 日
@Nuchto: Is your problem solved?

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

 採用された回答

Muruganandham Subramanian
Muruganandham Subramanian 2012 年 7 月 19 日
編集済み: Walter Roberson 2012 年 7 月 22 日

0 投票

Hi Nuchto,
Check this below link:

1 件のコメント

Nuchto
Nuchto 2012 年 7 月 19 日
I have checked the help, but it didn't answer to my question.

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

その他の回答 (2 件)

Jan
Jan 2012 年 7 月 19 日
編集済み: Jan 2012 年 7 月 19 日

0 投票

To compare two vectors use:
r = isequal(a, b)
or to find the difference between vectors (or other arrays) of the same size:
any(a - b)
Note, that the later replies FALSE even for ones(1,10) and ones(1,1).
If you only assume, that the vectors have equal values, check a - b and note, that the limited precision of the type double leads to effects like:
03. - 0.2 ~= 0.1
Then check "almost equal" by:
limit = eps(max(max(abs(a(:)), abs(b(:)))));
% or: eps(max(abs(a(:)), abs(b(:))));
% or: the same times 10
a_eq_b = isequal(size(a), size(b)) & all(abs(a - b) < limit);
The choise of the limit depends on the physical meaning of the variables. There is no unique definition to distinguish measurement noise from noise caused by numerical artifacts for a tiny values.

カテゴリ

ヘルプ センター および File Exchange で Startup and Shutdown についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by