Matlab 比较中使用的值未返回,为什么?

Matlab 比较中使用的值未返回,为什么?,matlab,select,pixels,Matlab,Select,Pixels,在matlab中,我有.mat文件。如果查看内部并双击vlues为1.000的单元格,您会发现显示的值为0.999999259113。那很好。但是,当我使用以下命令时: >> sel = find (u2 == 0.999999999259113 ); 我得到的答案如下: >> sel sel = 5 我们有多个0.999999259113值。我们不是吗?他们在哪里?5应该是多少 现在,当我谈到以下函数时,因为.mat文件与图像相关: 当我运行该函数时,

在matlab中,我有.mat文件。如果查看内部并双击vlues为1.000的单元格,您会发现显示的值为0.999999259113。那很好。但是,当我使用以下命令时:

>> sel = find (u2 == 0.999999999259113 );
我得到的答案如下:

>> sel

sel =

     5
我们有多个0.999999259113值。我们不是吗?他们在哪里?5应该是多少

现在,当我谈到以下函数时,因为.mat文件与图像相关:

当我运行该函数时,我会得到以下I:image,u2:the.mat文件:

pixelI,u2

像素=

 []
空的?!这是什么意思

你知道为什么我没有得到预期的结果吗,尽管这些命令似乎在逻辑上起作用


谢谢。

您可以设置一个公差,而不是检查精确的浮点相等吗?查找接近1.0的值,如下所示:

tolerance = 0.01;
sel = find(abs(u2 - 1.0) < tolerance);
试用

if abs(y(i,j)-)<1e-6

就像在前面的问题中一样,您编写函数时从未指定其返回值。你有没有考虑过阅读MATLAB教程?谢谢你的回复。例如,在另一组单元格中,值为1的单元格为:0.999987149754240。我计算了1-0.999987149754240得到0.00001285,然后我做了以下操作:容差=0.00001285,然后sel=findabsu2-1.0@Med SWEng 0.999987149754240不一定是二进制存储的精确值,因此==可能不起作用。试着扩大你的容忍度。您找到匹配项了吗?谢谢您的回复。你是说易建联之后的-1?为什么要将其与1e-6进行比较?1e-6等于−3.281718172,对吧?我随意选择了1e-6。如果愿意,可以将此值减小。1e-6等于0.000001。选择用于此公差的值主要取决于所有值的接近程度以及仅选择非常接近1的值的重要性。
if abs(y(i,j)-)<1e-6
if y(i,j) == 0.999999999259113;