why eq says they are not equal

2 次查看(过去 30 天)
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-22
@Nuchto: Is your problem solved?

请先登录,再进行评论。

采纳的回答

Muruganandham Subramanian
编辑:Walter Roberson 2012-7-22
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
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.

Walter Roberson
Walter Roberson 2012-7-19

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by