用于比较的值未归还,为什么?

时间:2013-02-20 15:21:39

标签: matlab select pixels

matlab中,我有this .mat个文件。如果您向内看并双击带有线索1.000的单元格,您会发现显示的值为0.999999999259113。没关系。但是,当我使用例如以下命令时:

>> sel = find (u2 == 0.999999999259113 );

我得到的答案如下:

>> sel

sel =

     5

我们有多个0.999999999259113值。不是吗?他们在哪?什么是5应该是什么?

现在,当我来到以下功能,因为.mat文件与this图片有关:

function s = pixel(x, y)
        pixels = [];
        index = 1;
        for i=1:length(y)
                for j=1:length(y)
                    if y(i,j) == 0.999999999259113;
                        pixels(index) = x(i,j);
                        index = index+1;
                    end
                end
            end
            pixels
        end

而且,当我运行该函数时,我得到以下内容(I:image,u2:.mat文件):

  
    

像素(i,U2);

  

pixels =

 []

空?这应该是什么意思?

为什么我没有得到预期结果的任何想法,虽然命令似乎在逻辑上有效?

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

尝试使用

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

而不是

if y(i,j) == 0.999999999259113;